При загрузке данных из БД возникает исключение InvalidOperationException с сообщением: Элемент коллекции должен быть пустым перед использованием ItemsSource. Знаю, что для заполнения DataGrid можно использовать коллекции Items или ItemsSource, но одновременно их использовать нельзя: если задано значение для свойства ItemsSource и в коде C# добавляется элемент в Items, возникает исключение. |
Разработка многофункциональных бизнес-приложений
Цель
Освоить основы технологии разработки бизнес-приложение 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).
Инструментальная среда Visual Studio 2010 в соответствии с выбранным шаблоном генерирует новое решение, состоящее из двух проектов ( рис. 10.2).
В сгенерированном решении имеются два проекта: клиентский Silverlight-проект EnterpriceBusinessApplication и серверный Web-проект EnterpriceBusinessApplication.Web. Каждый проект структурирован, включает папки и отдельные файлы, назначение которых будет рассмотрено позднее ( рис. 10.3)
При запуске проекта на экран выводится главная страница приложения ( рис. 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}}"/>
При этом настройка клиентской части приложения на требуемый язык сводился к заданию необходимого основного языка для браузера пользователя.
Для локализации приложения вначале необходимо отсоединить клиентскую часть – проект EnterpriceBusinessApplication. Для в этого в обозревателе решений щелкнем правой кнопкой мыши на клиентском проекте и в выпадающем меню выберем пункт Отменить загрузку проекта ( рис. 10.7).
Для редактирования XAML-описания отсоединенного проекта в контекстном меню выберем пункт Изменить EnterpriceBusinessApplication.csproj ( рис. 10.8).
В XAML-описании проекта для элемента SupportedCultures добавим код для культуры русского языка ru-RU.
<SupportedCultures>en-US,ru-RU</SupportedCultures>
После сохранения изменений требуется перезагрузить проект ( рис. 10.9).
Для клиентского проекта EnterpriceBusinessApplication необходимо скопировать файл ресурса строк приложения ApplicationStrings.resx ( рис. 10.10а). Копию ресурса следует переименовать в ApplicationStrings.ru-RU.resx ( рис. 10.10б).
Двойным щелчком на файле ресурса ApplicationStrings.ru-RU.resx откроем окно для его редактирования. Исходное содержание файла ApplicationStrings.ru-RU.resx приведено на рис. 10.11.
Для локализации приложения на русский язык необходимо изменить значения строк русскими эквивалентами. На последующих этапах разработки приложения нам потребуются дополнительные строковые ресурсы, которые необходимо будет добавить с файл строковых ресурсов. На рис. 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).
После проведенный работ по локализации приложения главная страница будет иметь вид, приведенный на рис. 10.14, а страницы с авторизацией и регистрацией пользователя - на рис. 10.15, рис. 10.16.