Разработка бизнес-приложений Silverlight
Дополнительные материалы к занятию можно скачать здесь.
Вложенные папки: AdventureWorksOrders
Ссылки: http://msdn.microsoft.com/en-us/library/ee796241%28v=VS.91%29.aspx#Y3075
Microsoft Silverlight является реализацией .NET Framework, поддерживаемой различными браузерами и платформами, предназначенная для создания и представления мультимедиа и многофункциональных приложений (RIA) нового поколения в Интернете. Silverlight объединяет возможности сервера, Интернета и персонального компьютера; возможности управляемого кода и динамических языков, декларативного и традиционного программирования, а также мощные средства Windows Presentation Foundation (WPF) [34].
Для запуска приложения Silverlight пользователям необходим небольшой подключаемый модуль для браузера. Подключаемый модуль предоставляется бесплатно. Если у пользователя еще не установлен подключаемый модуль, ему автоматически предлагается установить его. Загрузка и установка занимают всего несколько секунд и не требуют от пользователя никаких действий, кроме разрешения на установку [34].
Silverlight гарантирует, что пользователи могут запускать приложения во всех современных браузерах без создания специального кода для браузера. Приложения Silverlight могут выполняться в браузере или вне браузера [34].
При разработке бизнес-приложений очень важную роль играет обеспечение доступа к данным. Данные находятся на сервере, а Silverlight-приложение запускается на машине клиента. Для организации обмена данными между клиентским приложением и базой данных используются сервисы ( рис. 30.1):
Рис. 30.1. Взаимодействие между базой данных и клиентским приложением осуществляется с помощью служб
Silverlight поддерживает службы ASMX, WCF и REST, а также сокеты и net.tcp.
Работа со службами ASMX и WCF аналогична с точки зрения Silverlight. При реализации службы выбором по умолчанию должна быть WCF [35].
Бизнес-приложение Silverlight обычно состоит из клиентской и серверной частей:
Клиентская часть представлена Silverlight приложением. Silverlight приложение - это .xap файл (по сути дела тот же zip архив, содержащий все ресурсы и сборки приложения), выполняющийся в плагине Silverlight [36]. Существует несколько типов проектов Silverlight:
Silverlight Application | обычное приложение Silverlight. |
Silverlight Class Library | библиотека классов Silverlight, этот тип проекта использовался для слоев: Presentation, Infrastructure, Domain. |
Silverlight Navigation Application | приложение SIlverlight, поддерживающее навигацию, этот тип проекта использовался для слоя View. |
Серверная часть представлена WCF сервисом, взаимодействующим с БД через соответствующий слой Data Access. Рассмотрим подробнее слои приложения:
Domain | Этот слой находится в центре приложения и инкапсулирует в себе всю бизнес-логику и знания предметной области. Данный слой содержит все основные бизнес-сущности и бизнес-правила предметной области. Классы Solution (программный проект), Measure (показатель), Developer (разработчик), SolutionProfile (профиль проекта) относятся именно к доменным объектам. В приложении должен быть единый домен, поскольку все, что относится к бизнесу описано именно в этом слое. Однако в архитектуре приложения присутствует два домена. Это связано с ограничением технологии Silverlight. Поскольку технология Silverlight работает на своей платформe Silverlight .Net Framework, которая является сильно урезанной версией полноценного .Net Framework, то совместное использование доменных объектов сборками Silverlight и .Net Framework без перекомпиляции невозможно [36].
Для разрешения данной проблемы и были созданы две сборки Domain: одна используется Silverlight сборками клиентской части, а вторая используется WCF сервисом, работающим под управление полноценного .Net Framework. |
Presentation | Этот слой содержит в себе всю логику работы интерфейса. В этом слое содержатся классы презентеров (Presenters), которые управляют видами (Views). В этом же слое объявлены интерфейсы IViews, которые реализуются в слое View. Также здесь содержатся плоские объекты, так называемы Presenter Entities, которые обеспечивают более удобное представление доменных объектов для отображения. Вся логика работы интерфейса заложена в этом слое. Поскольку он отделен непосредственно от представления (View), и реализован в виде библиотеки классов, то данный слой идеально поддается модульному тестированию, что естественно является одной из главных особенностей и преимуществ шаблона MVP [36]. |
View | Этот слой представляет собой UI приложения. В нем реализуются интерфейсы, объявленные в слое Presenter (IViews). Сам View содержит в себе минимум логики (Passive View), и имеет только простые свойства, для отображения данных [36]. |
Infrastructure | Данный слой содержит классы адаптеров, которые предоставляют и сохраняют доменные объекты по запросу презентеров. Разнообразие адаптеров скрывается от слоя Presenter одним общим фасадом (GOF Facade pattern), что делает работу со слоем Infrastructure очень простой и удобной. Сами интерфейсы фасада и адаптеров объявлены в слое Domain, а в слое Infrastructure содержится реализация этих интерфейсов. |
Серверная часть реализована в виде WCF сервиса, который с помощью слоя DataAccess (в нашем случае в качестве ORM мы использовали LINQ to SQL) получает данные из BD, формирует доменные объекты и передает их в клиентскую инфраструктуру. Однако для того чтобы передать доменные объекты необходимо их сериализовать, то есть преобразовать из сложных объектов в строку, а на клиенте в слое Infrastructure соответственно десериализовать строку в доменные объекты. Для сериализации мы использовали класс DataContractSerializer, доступный как в полноценных сборках .Net, так и в сборках Silverlight, что очень важно при интеграции приложения, поскольку сериализация и десериализация доменных объектов происходит как в клиентских сборках, так и в серверных сборках [36].
Практическое занятие 29. Отображение связанных данных в бизнес-приложении Silverlight
В ходе выполнения данной работы мы создадим бизнес-приложение Silverlight, предназначенное для отображения данных из двух связанных таблиц базы данных AdventureWorks. Этот пример взят с сайта msdn (http://msdn.microsoft.com/en-us/library/ee796241%28v=VS.91%29.aspx#Y3075).
Для выполнения работы необходимо выполнить следующую последовательность действий:
- Создать бизнес-приложение Silverlight, содержащее два проекта: клиент Silverlight и веб-приложение ASP.NET.
- Изменить название приложения с помощью модификации строки ресурсов.
- Создать модель сущности данных, основанную на файле базы данных.
- Создать доменную службу, представляющую данные в модели сущности данных для клиента Silverlight.
- Изменить запрос в доменной службе для того, чтобы вернуть связанные данные.
- Изменить метаданные доменной службы для поддержки загрузки связанных данных.
- Создать дополнительную страницу Silverlight для того, чтобы отображать данные пользователям.
- Добавить кнопку на стандартную панель навигации для обеспечения доступа к странице Silverlight.
- Сконфигурировать страницы Silverlight для отображения данных за счет перетаскивания элементов из окна Источник данных в конструктор Silverlight.
- Добавить элемент управления DataPager для навигации по записям
Пререквезиты
Для выполнения предлагаемой работы требуется предварительная инсталляция определенного программного обеспечения, такого как Visual Studio 2010, Silverlight Developer Runtime вместе с SDK, а также WCF RIA Services и WCF RIA Services Toolkit. Потребуется также установить и настроить SQL Server 2008 R2 Express с расширенными службами и инсталлированными базами данных AdventureWorks OLTP и LT.
Создание бизнес-приложения Silverlight
Бизнес-приложения Silverlight являются решениями, состоящими из двух проектов: Приложение Silverlight и веб-приложение ASP.Net, запускающее Silverlight-приложение. Бизнес-приложения Silverlight имеют встроенную функциональность. По умолчанию имеется страничка Home, страничка About, навигационная панель, а также функциональность для регистрации.
Для создания приложения необходимо:
- В In Visual Studio 2010 создайте новый проект Бизнес-приложения Silverlight в C# с именем AdventureWorksOrders. Решение AdventureWorksOrders solution создается с двумя проектами: Silverlight-проект AdventureWorksOrders и проект веб-приложения AdventureWorksOrders.Web.
- В Solution Explorer разверните проект AdventureWorksOrders
- Разверните папку Resources, вложенную в папку Assets
- Дважды щелкните по файлу ApplicationStrings.resx для того, чтобы запустить инструмент Resource Designer.
- Внесите изменение в строку ресурсов, заменив строку ApplicationName на Adventure Works Orders.
- Сохраните изменения и закройте файл ApplicationStrings.resx.
- Запустите проект. Откроется домашняя страница и отобразит измененное название приложения.