Опубликован: 27.12.2011 | Доступ: свободный | Студентов: 1334 / 35 | Оценка: 4.44 / 4.44 | Длительность: 12:31:00
Лекция 2:

Создание бизнес-приложений Silverlight с использованием .NET WCF RIA сервисов

< Лекция 1 || Лекция 2 || Лекция 3 >
Аннотация: В лекции рассматриваются вопросы построения бизнес-приложений на платформе Silverlight и описаны направления развития, которые предлагает компания Microsoft. Приведено описание служб Windows Communication Foundation Rich Internet Application (WCF RIA) и рассмотрены вопросы их использования в приложениях Silverlight.

Цель лекции: ознакомиться с использованием служб Windows Communication Foundation Rich Internet Application (WCF RIA) в разработке бизнес-приложений на платформе Silverlight.

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

Приложения Silverlight выполняются на стороне клиента, а данные сохраняются в базе данных на сервере. Как уже отмечалось, Silverlight в отличии, например, от ASP.Net не поддерживает серверных технологий работы с базой данных (ADO.Net, Data Readers, Linq to SQL). Поэтому для обеспечения поддержки требуется промежуточная служба, которая будет реализовывать взаимодействие с базой данных и возвращать необходимую информацию в Silverlight.

Для реализации сетевого взаимодействия Silverlight поддерживает технологии Windows Communication Foundation (WCF) и Representational State Transfer (REST), также для интранет приложений можно использовать сокеты и протокол TCP.

Службы ASP.Net (ASMX) и WCF представляют собой разные версии одной технологии, поэтому в современных разработках рекомендуется использовать WCF. Архитектурный стиль REST является более легковесным механизмом обеспечения взаимодействия и пользуется популярностью из-за распространения концепции Web 2.0. Многие известные приложения, созданные в рамках Web 2.0, в том числе Facebook основаны на его использовании. Silverlight поддерживает этот подход, что позволяет создавать клиенты для приложений Web 2.0 или использовать информацию, полученную с его использованием.

Базовым механизмом доступа к данным на платформе .Net является WCF. Для взаимодействия клиентских приложений Silverlight был разработан специальный его вариант, который получил название службы Rich Internet Application Windows Communication Foundation (RIA WCF). С помощью этих служб реализуется промежуточный слой в приложении, а также появляются специальные средства, упрощающие реализацию работы с хранилищем данных. В качестве хранилища могут выступать базы данных SQL Server, модель сущностей, классы C++ Portable Components (POCO). На клиенте создаются прокси представления этих сущностей, которые и будут использованы в элементах, связанных с данными. Обмен между прокси сущностями клиента к хранилищам данных осуществляется средствами RIA WCF.

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

Использование RIA WCF строится на применении шаблона проектирования Модель – представлениепредставление модели (МVVM). Этот шаблон позволяет четко отделить интерфейс от кода программы. При этом обеспечивается доступ к объекту Data Context на клиенте и появляется возможность использовать привязку данных к объектам Data Context. Модель представления на клиенте выполняет роль прокси-объекта и обеспечивает сетевое взаимодействие с объектами хранения данных.

Для обеспечения отправки событий интерфейса на сервер Silverlight представляет интерфейс ICommon, через который осуществляется подписка интерфейсных элементов на соответствующие команды. Общий вид реализуемого взаимодействия приведен на рисунке. В этой модели Silverlight приложение выполняет роль интерфейса и реализует слой представления, который взаимодействует с сервером бизнес-логики (средний слой), а он взаимодействует с базой данных.

Схема использования RIA WCF

Рис. 2.1. Схема использования RIA WCF

Таким образом, WCF RIA представляет собой промежуточное звено, обеспечивающее доступ от клиентского приложения к слою бизнес-логики и хранилищу данных. Для разработчика использование этой технологии обеспечивает высокую степень удобства и простоты реализации механизмов взаимодействия клиентского приложения и сервера.

WCF RIA аналогично WCF Data Services относятся к семейству Windows Communication Foundation. При этом WCF RIA значительно упрощает использование различных механизмов коммуникации от разработчика, скрывая все сложности и сохраняя мощь, заложенную в WCF.

Рассмотрим пример создания несложного бизнес-приложения с использованием служб WCF RIA. Для их использования необходимо загрузить специальную надстройку Visual Studio 2010 с сервера Silverlight ( http://go.microsoft.com/fwlink/?LinkId=205085).

После установки данной библиотеки возможности Visual Studio 2010 будут расширены, в том числе появятся два новых типа проектов: Silverlight Business Application и WCF RIA Class Library.

Silverlight Business Application представляет собой шаблон и пример использования технологии WCF RIA. После создания такого типа решения, оно будет содержать два проекта. Business Application позволяет создать Silverlight приложение клиентской стороны, а Business Application1.Web – это серверная часть решения, которая и содержит WCF RIA Services. Созданное решение может быть скомпилировано и запущено, в результате появится простейшее приложение с базовым функционалом и навигацией. Для создания полноценного приложения с необходимыми функциями в созданный шаблон следует добавить требуемые бизнес-объекты, подключить к хранилищу данных и реализовать бизнес-логику.

Первым шагом на стороне сервера в проекте Business Application 1.Web необходимо создать модель сущностей данных. Для этого подключается существующая база данных, например, Microsoft Adventure Work, которая расположена (http://msftclbprodsampless.codeplex.com), в папку Appdata. Затем в проект добавляется ADO.Net Entity Data Model, в мастере необходимо выбрать вариант Генерировать на основе баз данных, и выбрать несколько таблиц. После завершения в проект будет добавлена соответствующая модель сущностей, связанная с базой данных проекта. Строка соединения с базой данных будет добавлена в файл Web.Config. После этого необходимо скомпилировать проект и он готов для создания Domain Services. С помощью Domain Services создается механизм передачи модели сущностей и в клиентское приложение и удобного использования.

Для его создания необходимо добавить в BusinessApplication1.Web класс Domain Services с помощью команды Добавить в инспекторе проекта. Появится окно настройки, в котором необходимо указать требуемую сущность, а также выбрать все необходимые таблицы. Установить флажок Разрешить доступ клиента, что обеспечивает возможность из Silverlight к данному классу. В результате создания будет сгенерирован новый класс, содержащий необходимое для доступа к модели сущностей через интернет. Большинство методов этого класса реализует возможность получения требуемой сущности из базы данных через интернет, а также ее обновления. При необходимости можно добавить требуемые способы фильтрации или сортировки. В качестве методов обновления реализуются стандартные операции Вставки (Insert), Обновления ( Update) и Удаления (Delete). Измененный проект необходимо перекомпилировать, на данный момент можно считать, что серверная часть готова к использованию и требуется настройка только для клиентской части.

Для использования созданных на сервере служб создадим в клиентской части проекта Silverlight страницу с названием Customers.xaml. Страницу необходимо разместить в папке Views. Проекта. Страница должна наследоваться от других страниц проекта. Также необходимо добавить элемент Data Grid, который будет использован для отображения данных, полученных с сервера.

После подключения WCF RIA Services в Visual Studio на панели элементов становятся доступными новые элементы управления, в частности Domain Data Source. Этот элемент необходимо также перенести на страницу Silverlight. В результате в проект будет добавлено соответствующее пространство или включен элемент <riaControls=DomainDataSource/> Затем можно настроить данный элемент управления на взаимодействие с сервером, а после этого осуществить привязку DataGrid к этому источнику данных.

Например, для наших данных необходимо установить свойство QueryName в значение GetCustomers, свойство LoadSize в значения 10, это свойство показывает количество загружаемых за один раз записей.

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

После компиляции и запуска проекта на экране отобразится таблица, содержащая 10 записей из источника данных, после небольшой паузы будут подгружены еще 10 записей, и так , пока записи не будут загружены.

Для постраничной разбавки содержимого можно добавить на страницу элемент Data Pager, и указать для него нужные настройки

<sdk: DataPager Height= "26" Name= "dataPager1" PageSize= "10" Source= BindingData, ElementName= domainDataSource1}/>

С его использованием элементы будут отображаться по 10 за один раз.

Важным для реализации простейшей логики управления данными является фильтрация данных на основе критериев задаваемых пользователей. Например, можно отображать список категорий и по выбору пользователя отображать в Data Grid информацию, относящуюся к выбранной категории. Опции фильтрации можно применить на стороне клиента добавив выпадающий список с набором категории, а также настроив дополнительно элемент Domain Data Source. В него добавляется секция Описания фильтров.

<riaControls:DomainDataSource.FilterDescriptors>
<riaControls:FilterDescriptor
PropertyPath="TerritoryID"
Operator="IsEqualTo"
Value="{Binding ElementName=comboBox1,
Path=SelectedItem.Content}" />
</riaControls:DomainDataSource.FilterDescriptors>

В данном случае используется свойство PropertyPath, которое указывает на поле, по которому осуществляется фильтрация в таблице сущностей. Свойство Operator определяет способ сравнения. Остальные данные используют механизм связывания.

В этой лекции была рассмотрена рекомендуемая Microsoft технология создания бизнес-приложения, основанная на использовании WCF RIA служб. Данный подход ориентирован на обеспечение механизмов передачи данных от сервера к клиентскому приложению и наоборот. В этом кроется существенное отличие от других технологий веб-разработки, например, ASP.Net , где и взаимодействие с данными и пользовательский интерфейс генерируются на сервере и передаются клиенты, который только отображает созданную HTML страницу. Технология WCF RIA Services значительно упрощает и скрывает от разработчика детали реализации, представляет возможность использовать на клиенте Data Context и другие объекты Entity Framework. Также в состав WCF RIA входит шаблон приложения, на основе которого можно создавать бизнес-приложения любого уровня сложности.

Краткие итоги

  • Современные бизнес-приложения имеют архитектуру интерфейсных форм на основе данных.
  • Для реализации сетевого взаимодействия Silverlight поддерживает ряд специальных технологий.
  • Для взаимодействия клиентских приложений Silverlight были службы Rich Internet Application Windows Communication Foundation (RIA WCF).
  • RIA WCF представляет собой промежуточное звено, обеспечивающее доступ от клиентского приложения к слою бизнес-логики.
  • Для создания служб RIA WCF используется надстройка Silverlight Business Application, которая представляет собой шаблон и пример использования технологии WCF RIA.
< Лекция 1 || Лекция 2 || Лекция 3 >