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

Разработка Silverlight-приложений

Аннотация: Рассматривается назначение технологии Silverlight, её преимущества, возможности и особенности. Приводится последовательность действий по созданию источника и службы данных, а также связи клиентской части со службой данных. В процессе проектирования клиентской части Silverlight-приложения рассматриваются этапы проектирования запросов к службе данных с использованием обобщенного класса запросов DataServiceQuery и языка LINQ, вопросы построения интерфейсных элементов пользователя, привязки данных к элементам управления, управления доступностью кнопок для реализации заданной функциональности, редактирования, удаления и создания новых записей в базе данных.
Ключевые слова: Microsoft Silverlight, net, мультимедиа, подключаемый модуль, интерфейс, Windows-приложения, WMA, VC, Веб-служба, декларативная модель, приложение, сервер, доступ, сущность-связь, EDM, концептуальная модель, представление концептуальной модели, базы данных, тип сущности, таблица, ПО, внешний ключ, ASP, порт, номер порта, ADO.NET, файл, Data, URI, архитектурный стиль, representation, State, transfer, HTTP, GET, POST, DELETE, entity, data modeling, родительский класс, права, класс, управляемый код, Windows, presentation, foundation, Visual Basic, visual, expression, HTML, XAML, веб-приложение, Размещение, адрес, пространство имен, ссылка, главная страница, запрос, объект, универсальный класс, контекст, LINQ, динамические сущности, загрузка данных, open data, арифметический оператор, atom, шаблон, значение, атрибут, список, администратор, аналитик, вызов метода, контент, привязка данных, диаграмма состояний, перечисление, операции, сохранение изменений, сохранение данных, EMP, браузер, UserControl, binding, path, dispatching, источник данных, СУБД, SQL, server

Цель

Освоить основные приемы разработки корпоративных Silverlight- приложений, обеспечивающих взаимодействие клиентской части с базой данных.

Введение в технологию Silverlight

Microsoft Silverlight является межбраузерной межплатформенной реализацией .NET Framework для представления содержимого мультимедиа и многофункциональных приложений для Интернета [ 11 ] . Технология Silverlight предназначена для создания приложений, выполняемых в браузерах и вне браузера под управлением разных операционных систем. Silverlight является подключаемым модулем для браузера, который формирует визуализацию приложения и представляет программный интерфейс [ 5 ] . При обращении к веб-странице, содержащей компоненты Silverlight, надстройка браузера выполняет код Silverlight и выводит компоненты в заданную область на странице. Технология Silverlight позволяет создавать страницы, содержащие интерактивную графику, векторную анимацию, средства воспроизведения аудио- и видеофайлов.

В [ 2 ] отмечается, что Silverlight имеет следующие преимущества:

  • интеграция Silverlight в существующую платформу, за счет чего возможна разработка Silverlight-приложений на управляемом языке программирования (C# или VB.NET) с поддержкой основных компонент .NET Framework;
  • возможность создания корпоративных приложений, имеющих эффективный интерактивный интерфейс близкий по функциональности к Windows-приложениям, и обеспечивающих работу, как в браузере, так и вне браузера;
  • поддержка Silverlight в интегрированных средствах разработки, таких как Visual Studio 2010 и Expression Blend.

В технологии Silverlight используются надстройки браузера, которые обеспечивают следующие средства создания интерактивных приложений:

  • двухмерное рисование с помощью фигур и контуров, которыми можно манипулировать на стороне клиента и добавлять интерактивность за счет реагирования на определенные события;
  • широкий набор элементов управления, заимствованный из технологии WPF, с возможностью манипулирования стилями и шаблонами;
  • анимация, основанная на временных интервалах, и позволяющая определять, что должно произойти и как долго это будет длиться;
  • мультимедиа, предоставляющая средства воспроизведения медиафайлов WMA, WMV7-9, MP3 и VC-1;
  • общеязыковая среда выполнения CLR, которая предоставляет полный набор базовых классов .NET;
  • интернет, посредством которого Silverlight-приложения могут обращаться к традиционным веб-службам ASP.NET или Windows Communication Foundation (WCF), что позволяет объединять клиентский код с безопасными серверными процедурами;
  • связывание данных, что предоставляет удобные способы вывода большого количества данных с помощью небольших фрагментов кода.

Технология Silverlight базируется на подмножестве модели WPF. Это обстоятельство определяет следующие общие для Silverlight и WPF особенности:

  • для определения пользовательского интерфейса Silverlight используется разметка XAML, аналогичная используемой в WPF с тем же синтаксисом и возможностью связывания данных;
  • использование многих базовых элементов управления, системы стилизации и механизма шаблонов;
  • использование идентичных фигур, контуров и кистей для рисования;
  • декларативная модель анимации, основанная на последовательности раскадровок, работающая также, как и анимационная модель WPF;
  • использование класса MediaElement для воспроизведения аудио- и видеофайлов.

Для изучения технологии проектирования Silverlight- приложения будем испльзовать учебный пример с базой данных Person и приложением, которое реализует стандартные фунции:

  • просмотр данных по сотрудникам;
  • ввод данных по новому сотруднику;
  • редактирование данных по сотруднику;
  • удаление данных по сотруднику;
  • поиск данных по сотруднику.

В общем случае корпоративное приложение состоит из клиентской и серверной частей. Серверная часть должна обеспечивать взаимодействие клиента с базой данных.

Проектирование серверной части приложения

Основой серверной части Silverlight- приложения является веб-сервер. В рамках веб-сервера создаются источники данных и службы, предоставляющие доступ к данным.

Взаимодействие приложения Silverlight с источником данных базируется на службе данных WCF и модели "сущность-связь" – Entity Data Model (EDM).

Концептуальная модель является специфическим представлением структуры некоторых данных в виде сущностей и связей. Одним из способов представления концептуальной модели является схема. На рис. 7.1 приведена схема концептуальной модели базы данных Person – "Персонал" с двумя типами сущностей ( Employee – Сотрудник и JobTitle –роль/должность) и одной ассоциативной связью 1:* (один ко многим).

Концептуальная модель базы данных

Рис. 7.1. Концептуальная модель базы данных

Таблица Employee содержит данные по сотруднику. Атрибутами таблицы являются:

  • EmployeeID – код сотрудника;
  • JobRoleIDвнешний ключ для связи с таблицей Title;
  • EmployeeSurname – фамилия;
  • EmployeeName – имя;
  • EmployeePatronymic – отчество;
  • EmployeeStatus – статус;
  • Access – уровень доступа;
  • NetName – сетевое имя;
  • FirstDate – дата приема на работу;
  • LastDate – дата увольнения.

Таблица JobTitle является справочником должностей, имеющихся на предприятии, и включает следующие атрибуты:

  • ID – код должности;
  • Title – наименование должности.

Разработку Silverlight-приложения, взаимодействующего с базой данных, начнем с конструирования EDM-модели данных. Для этого создадим новое веб-приложение ASP.NET с именем PersonService ( рис. 7.2).

Создание новое веб-приложение ASP.NET

увеличить изображение
Рис. 7.2. Создание новое веб-приложение ASP.NET

В проекте будем использовать порт 12345. Для этого откроем окно свойств проекта и на вкладке Веб введем новый номер порта ( рис. 7.3).

Создание новое веб-приложение ASP.NET

увеличить изображение
Рис. 7.3. Создание новое веб-приложение ASP.NET

Добавим в проект новый элемент – модель ADO.NET EDM, присвоив файлу модели имя Employee.edmx.

При завершении работы мастера создания EDM-модели в проект будет добавлен файл Employee.edmx ( рис. 7.4).

Проект с моделью EDM

увеличить изображение
Рис. 7.4. Проект с моделью EDM

Службы WCF Data Services входят в состав библиотеки .NET Framework и состоят из набора шаблонов и библиотек. Они позволяют создавать службы данных и обращаться к ним в Интернете, интрасети или в приложении. Службы WCF Data Services предоставляют данные как ресурсы, адресуемые с помощью URI. Это позволяет обращаться к данным и изменять их с использованием семантики архитектурного стиля Representational State Transfer (REST), в частности стандартных команд HTTP, таких как GET, PUT, POST и DELETE.

Службы WCF Data Services взаимодействуют с сущностей модели EDM и предоставляют ресурсы в виде наборов сущностей и взаимосвязей между ними. Они позволяют предоставлять данные, происходящие из различных источников. Предоставлять реляционные данные в виде ресурсов можно, определив концептуальную модель с помощью Entity Data Model (EDM).

В состав служб WCF Data Services включен набор клиентских библиотек:

  • для типовых клиентских приложений .NET Framework;
  • для приложений на основе Silverlight.

Клиентские библиотеки предоставляют возможности объектно-ориентированного программирования для доступа к службам WCF Data Services из таких платформ, как .NET Framework и Silverlight.

Создание службы данных начнем с добавления в проект нового элемента – службы данных WCF, файл которой назовем WfcDataServicePerson.svc ( рис. 7.5).

Добавление в проект службы данных

увеличить изображение
Рис. 7.5. Добавление в проект службы данных

В объявлении сгенерированного класса WcfDataServicePerson необходимо указать обобщенный тип PersonalEntities (EDM-модель) родительского класса DataService, то есть:

public class WcfDataServicePerson : DataService<PersonalEntities>

и права при работе с таблицами базы данных:

config.SetEntitySetAccessRule("Employees", EntitySetRights.All);
config.SetEntitySetAccessRule("JobTitles", EntitySetRights.All);

Это обеспечивает авторизованным клиентам доступ к ресурсам указанных наборов сущностей.

Отредактированный класс службы данных будет иметь следующий вид:

public class WcfDataServicePerson: DataService<PersonalEntities >
    {
        public static void InitializeService(DataServiceConfiguration config)
        {
            config.SetEntitySetAccessRule("Employees", EntitySetRights.All);
            config.SetEntitySetAccessRule("JobTitles", EntitySetRights.All);
            config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
        }
    }

Для тестирования запустим службу. Результаты выполнения приведены на рис. 7.6.

Тестирование службы данных

увеличить изображение
Рис. 7.6. Тестирование службы данных

На этом создание службы данных завершено.

Александр Петров
Александр Петров

При загрузке данных из БД возникает исключение 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
Валентина Алешина
Валентина Алешина
Россия