Опубликован: 08.07.2011 | Уровень: для всех | Доступ: платный
Лекция 8:

Разработка многофункциональных бизнес-приложений

Аннотация: Рассматриваются вопросы проектирования Silverlight бизнес-приложений. При проектировании серверной части приложения создается EDM-модель данных, служба Domain Service, включая метаданные по сущностям модели. Для клиентской части приложения анализируются подходы по локализации, построению пользовательского интерфейса при автоматической генерации элементов контроля на основе источников данных, валидации, аутентификации и авторизации пользователя.
Ключевые слова: приложение, Silverlight, RIA, сервер, Windows, communication, foundation, Rich Internet application, Интернет, visual, элементы управления, механизмы, шаблон, business applications, Web, главная страница, ресурс, меню, пункт, XAML, файлы ресурсов, файл, ПО, Internet, работ, EDM, модель данных, база данных, таблица, FirstName, LastName, внешний ключ, класс, базы данных, потомок, доступ, метаданные, связь, валидация, место, производный класс, атрибут, класс сущностей, отображение списка, представление данных, представление, источник данных, поле, объект, отображение, экземпляр типа сущности, запрос, концептуальная модель, связанный объект , объединение, путь, загрузка данных, вывод, время выполнения, длительность операции, индикатор, операции, контейнер, значение, группа, макет, список, поиск, функциональный элемент, функция, атрибут сущности, конструктор, контекст, Дополнение, экземпляр сущности, сохранение изменений, удаление записей, привязка данных, представление реализации, уровни представления данных, сообщение об ошибке, правило проверки, статический метод, права, авторизация, пользователь, аутентификация, имя пользователя, пароль, аутентификация пользователя, ASP, net, администратор, имя роли, исключение, регистрация, локализация, domain, service class, authentication, Microsoft Silverlight, expression, blending, анимация, графика, интеграция приложений, SharePoint, Data, открытый стандарт, mail

Цель

Освоить основы технологии разработки бизнес-приложение Silverlight на основе WCF RIA Services.

Общие сведения о насыщенных Silverlight-приложениях

При изучении лекций "Разработка приложения на базе WPF" и "Разработка приложения на базе WPF" построение Silverlight-приложения осуществлялось с реализацией слоя бизнес-логики, в основном, на стороне клиента. В корпоративных приложениях возникает необходимость переноса основной бизнес-логики или её части на сервер. Это диктуется требованиями обеспечения эффективной эксплуатации и сопровождения информационных систем.

Для решения таких задач Microsoft предлагает службы Windows Communication Foundation (WCF) RIA Services. RIA (Rich Internet Application) — это приложение, доступное через интернет, с богатой функциональностью традиционных настольных приложений [ [ 10 ] ].

WCF RIA Services обеспечивает разработку многоуровневых решений для многофункциональных Silverlight приложений. RIA Services предоставляют клиенту сервисы, которые реализуются логику приложения на сервере.

В Visual Studio 2010 имеются шаблоны для создания Silverlight бизнес-приложений с поддержкой служб RIA Services, которые включают реализацию многих функций, характерных для корпоративных приложений, таких как элементы управления для аутентификации, авторизации и регистрации пользователей, механизмы навигации, с помощью которых можно расширять функциональность приложения, добавляя новые страницы Silverlight.

Исследуем возможности построения корпоративных приложений на основе шаблона бизнес-приложений и служб WCF RIA Services при конструировании Silverlight-приложения.

Создание проекта Silverlight бизнес-приложения.

Создадим новый проект, используя шаблон Silverlight Business Application, задав для него имя EnterpriceBusinessApplication ( рис. 10.1).

Страница создания проекта

увеличить изображение
Рис. 10.1. Страница создания проекта

Инструментальная среда Visual Studio 2010 в соответствии с выбранным шаблоном генерирует новое решение, состоящее из двух проектов ( рис. 10.2).

Главная страница проекта EnterpriceBusinessApplication

увеличить изображение
Рис. 10.2. Главная страница проекта EnterpriceBusinessApplication

В сгенерированном решении имеются два проекта: клиентский Silverlight-проект EnterpriceBusinessApplication и серверный Web-проект EnterpriceBusinessApplication.Web. Каждый проект структурирован, включает папки и отдельные файлы, назначение которых будет рассмотрено позднее ( рис. 10.3)

Состав решения Enterprice BusinessApplication

увеличить изображение
Рис. 10.3. Состав решения Enterprice BusinessApplication

При запуске проекта на экран выводится главная страница приложения ( рис. 10.4).

Главная страница приложения

увеличить изображение
Рис. 10.4. Главная страница приложения

На главной странице имеются три гиперссылки: Home – переход на главную страницу, About – переход на страницу с данными о программе, которые должен подготовить разработчик, login – для перехода на окно авторизации пользователя.

Для аутентификации пользователя предлагается форма авторизации ( рис. 10.5), а для регистрации нового пользователя – окно регистрации ( рис. 10.6).

Как видно из рис. 8.4 – 8.6 все надписи на страницах приложения приведены на английском языке, что является неудобными для пользователей России. Этот недостаток созданного приложения можно исправить путем замены в коде соответствующих английских строк на русские. Однако в шаблоне бизнес-приложения Silverlight предусмотрен более изящный способ локализации приложения на разные языки с помощью ресурсов. Так, например свойство Text для текстового блока HeaderText задается в расширении разметки ссылкой на статический ресурс.

<TextBlock x:Name="HeaderText" Style="{StaticResource HeaderTextStyle}" 
	Text="{Binding Path=ApplicationStrings.HomePageTitle, 
	Source={StaticResource ResourceWrapper}}"/>
Авторизация пользователя

увеличить изображение
Рис. 10.5. Авторизация пользователя
Регистрация пользователя

увеличить изображение
Рис. 10.6. Регистрация пользователя

При этом настройка клиентской части приложения на требуемый язык сводился к заданию необходимого основного языка для браузера пользователя.

Для локализации приложения вначале необходимо отсоединить клиентскую часть – проект EnterpriceBusinessApplication. Для в этого в обозревателе решений щелкнем правой кнопкой мыши на клиентском проекте и в выпадающем меню выберем пункт Отменить загрузку проекта ( рис. 10.7).

Выгрузка клиентской части проекта

Рис. 10.7. Выгрузка клиентской части проекта

Для редактирования XAML-описания отсоединенного проекта в контекстном меню выберем пункт Изменить EnterpriceBusinessApplication.csproj ( рис. 10.8).

Редактирование проекта

Рис. 10.8. Редактирование проекта

В XAML-описании проекта для элемента SupportedCultures добавим код для культуры русского языка ru-RU.

<SupportedCultures>en-US,ru-RU</SupportedCultures>

После сохранения изменений требуется перезагрузить проект ( рис. 10.9).

Перезагрузка проекта

Рис. 10.9. Перезагрузка проекта

Для клиентского проекта EnterpriceBusinessApplication необходимо скопировать файл ресурса строк приложения ApplicationStrings.resx ( рис. 10.10а). Копию ресурса следует переименовать в ApplicationStrings.ru-RU.resx ( рис. 10.10б).

Файл ресурса строк приложения

увеличить изображение
Рис. 10.10. Файл ресурса строк приложения

Двойным щелчком на файле ресурса ApplicationStrings.ru-RU.resx откроем окно для его редактирования. Исходное содержание файла ApplicationStrings.ru-RU.resx приведено на рис. 10.11.

Ресурс строк приложения с английскими значениями

увеличить изображение
Рис. 10.11. Ресурс строк приложения с английскими значениями

Для локализации приложения на русский язык необходимо изменить значения строк русскими эквивалентами. На последующих этапах разработки приложения нам потребуются дополнительные строковые ресурсы, которые необходимо будет добавить с файл строковых ресурсов. На рис. 10.12 приведен файл ресурсов с русскими значениями строк.

Ресурс строк приложения с русскими значениями строк

увеличить изображение
Рис. 10.12. Ресурс строк приложения с русскими значениями строк

Аналогичную последовательность действий по копированию, переименованию и переводу значений строк необходимо выполнить для файлов ресурсов клиентского приложения ErrorResources.resx и SecurityQuestions.resx, а также файлов RegistrationDataResources.resx и ValidationErrorResources.resx серверного проекта EnterpriceBusinessApplication.Web.csproj.

Для серверной части проекта необходимо внести изменения в файл EnterpriceBusinessApplicationTestPage.aspx, добавив в головной элемент XAML-описания атрибуты UICulture и Culture.

<%@ Page Language="C#" AutoEventWireup="true" UICulture="auto" Culture="auto"%>

Измененный файл EnterpriceBusinessApplicationTestPage.aspx необходимо сохранить.

Для настройки приложения на русский язык достаточно в свойствах Internet Explorer установить первым в списке языков русский язык ( рис. 10.13).

Установка языка для Internet Explorer

увеличить изображение
Рис. 10.13. Установка языка для Internet Explorer

После проведенный работ по локализации приложения главная страница будет иметь вид, приведенный на рис. 10.14, а страницы с авторизацией и регистрацией пользователя - на рис. 10.15, рис. 10.16.

Главная страница приложения

увеличить изображение
Рис. 10.14. Главная страница приложения
Авторизация пользователя

увеличить изображение
Рис. 10.15. Авторизация пользователя
Регистрация пользователя

увеличить изображение
Рис. 10.16. Регистрация пользователя
Александр Петров
Александр Петров

При загрузке данных из БД возникает исключение InvalidOperationException с сообщением: Элемент коллекции должен быть пустым перед использованием ItemsSource. Знаю, что для заполнения DataGrid можно использовать коллекции Items или ItemsSource, но одновременно их использовать нельзя: если задано значение для свойства ItemsSource и в коде C# добавляется элемент в Items, возникает исключение. 
Вопрос, как отследить и отключить добавление элемента в Items?

Максим Спиридонов
Максим Спиридонов

В пятой лекции на второй странице в компиляторе выскакивает ошибка в строчке :

ObjectQuery<Employee> employees = DataEntitiesEmployee.Employees;

Ошибка CS0029

Не удается неявно преобразовать тип "System.Data.Entity.DbSet<WpfApplProject.Employee>" в "System.Data.Entity.Core.Objects.ObjectQuery<WpfApplProject.Employee>".

в using прописал все как положено, здесь похоже именно с преобразованием типов проблемы

Igor Chelyadinski
Igor Chelyadinski
Беларусь, Минск, №54, 2013
Валентина Алешина
Валентина Алешина
Россия