Создание бизнес-приложений Silverlight с использованием .NET RIA сервисов
Rich Internet Application (RIA) - это особый класс веб-приложений. RIA приложения позволяют делать богатый пользовательский интерфейс, но без необходимости перегрузок страниц, как в обычных веб-приложениях. Типовая архитектура таких приложений приведена на рис. 4.1
Обычно приложение состоит из серверной части, где размещены веб-сервисы, бизнес-логика, СУБД. Клиентская часть может быть HTML+Ajax или Silverlight. Мы будем рассматривать в контексте Silverlight. По сети части взаимодействуют по протоколам SOAP или REST (см. Работа Silverlight с web сервисами).
В обычном бизнес приложении уровни клиента и сервера разъединены и независимо разрабатываются. Но в RIA приложениях две части разрабатываются как одно приложение. Такую возможность дают .NET RIA сервисы. RIA сервисы не входят в состав Silverlight 3 и доступны для скачивания по адресу: http://www.microsoft.com/downloads/details.aspx?FamilyID=76bb3a07-3846-4564-b0c3-27972bcaabce&displaylang=en
.NET RIA сервисы упрощают разработку многоуровневых приложений объединяя платформы ASP.NET и Silverlight. Логика приложения располагается на среднем уровне и отвечает за запросы, изменения данных и прочие методы. .NET RIA сервисы автоматически генерируют прокси-классы для клиента, чтобы тот мог использовать их в этих операциях. И так как на уровнях логики и клиента сервисы работают с одной средой выполнения CLR (Common Language Runtime), разработчик может писать код, работающий на обоих уровнях. Использование .NET RIA сервисов стирает грань между разработкой клиентской и серверной частями и позволяет разрабатывать обе части, как одно приложение.
В общем .NET RIA сервисы могут использоваться не только с Silverlight, но и с другими технологиями написания клиентской части (Рис. 4.2). В любом случае бизнес-логика приложения будет передаваться через прокси-классы клиенту.
Создание приложений с .NET RIA сервисами
На Рис. 4.3 показан процесс создания приложения Silverlight с поддержкой .NET RIA сервисов в Visual Studio 2008.
затем
Есть возможность изменить существующий проект Silverlight, для того чтобы тот мог работать с .NET RIA сервисами. Автоматически в references проекта добавится ссылка на библиотеку System.Windows.Ria.
http://www.silverlightshow.net/AWWeb/AdventureWorksLOB.aspx - пример бизнес-приложения, использующего .NET RIA сервисы
В примере виден список товаров, возможна сортировка (List price), группировка (Category), поиск, постраничный вывод.
Преимущества для клиента при использовании .NET RIA сервисов.
Ключевыми моментами создания многоуровневых приложений с использованием .NET RIA сервисов являются:
- Стандартное приложение Silverlight может быть трансформировано в многоуровневое с помощью линка RIA link между проектом Silverlight и веб-проектом.
- Простейшее многоуровневое приложение состоит из 2-х отдельных проектов внутри одного решения (solution), один из них проект ASP.NET (уровень бизнес-логики), а другой - приложение Silverlight (клиент).
- Класс DomainService в серверном проекте располагает набором сущностей и операций, свойственных определенному домену. Разработчик помещает логику приложения в этот класс.
- Когда решение скомпилировано, прокси-класс для клиента генерируется автоматически для проекта Silverlight, согласно сущностям и операциям, определенных классом DomainService.
- Клиент Silverlight взаимодействует со сгенерированным кодом прокси-класса DomainContext для получения и манипулирования соответствующими сущностями.
- И сервер и клиент работают с одним и тем же набором сущностей, делая возможным прозрачно использовать бизнес-логику и правила ввода данных на всех уровнях.
Преимуществами для клиента при использовании .NET RIA сервисов являются:
- Навигация по страницам с помощью кнопок браузера "вперед" и "назад". Заголовок страницы изменяется во время навигации.
- Проверка правильности ввода (валидация) данных на клиенте.
- Фильтрация, сортировка, разбиение на страницы - осуществляется декларативно
- Создание окон в рамках Silverlight 3 приложения - необходимая функция для бизнес-приложений
- Обеспечение безопасности через [RequiresAuthentication] - атрибут метода или свойства
- Любые источники данных ADO.NET, SOAP|REST, LINQ, SQL Server
- Полное тестирование кода (unit test)
- Добавление любых бизнес-операций