вторник, 28 июня 2011 г.

Разработка бизнес приложения на silverlight –Часть 1(создание базы данных, silverlight приложения и Edmx файла)

В этой статье мы с вами рассмотрим что такое ria services и напишем простенькую Программку на сильверлайт с использованием dataform и datagrid. Итак, приступим.
Суть задачи вот в чем: есть некий объект в базе, допустим - здание (строение - некая коммерческая недвижимость), у него есть набор полей - адрес, название здания (например, бизнес-центры зачастую имеют название), этажность, общая площадь, общее кол-во помещений, мин.арендная ставка, макс.арендная ставка, дата постройки, кол-во арендаторов и т.п. .(если хотите, можете еще добавить полей :)) Также, у здания можно посмотреть (и конечно же редактировать тоже) данные по каждому этажу - площадь этажа, номер этажа, кол-во арендаторов и т.п. Все данные надо уметь редактировать и добавлять-удалять, DataGrid для редактирования данных не использовать.
Что можно и нужно использовать (точнее, что бы использовала я, и что я рекомендую использовать) - SQL Express в качестве, Entity Framework (LINQ2SQL по желанию) для сохранения данных из вэб-сервиса, WCF RIA для передачи данных между Базой и Silverlight приложением, DataForm для редактирования данных на стороне клиента (кстати замечательная вещь - просто "скармливаете" ваш объект форме и она сама строит все поля и подписи к ним). Также, почитайте про DataAnnotation - какие есть аттрибуты у этой технологии, используемые совместно с WCF RIA. На первый взгляд достаточно сложно, особенно для новичка, но эти технологии реально упрощают построение бизнес приложений с помощью Silverlight 4.0.
С заданием определились, начинаем делать.
Сначала создаём базу данных. У нас будет две таблицы Building и Floor.
CREATE TABLE [dbo].[Building](
[ID] [int] IDENTITY(1,1) NOT NULL,
[Address] [nvarchar](500) NOT NULL,
[Name] [nchar](200) NOT NULL,
[FloorCount] [int] NULL,
[TotalArea] [int] NULL,
[Room] [int] NULL,
[MinRentalRate] [int] NULL,
[MaxRentalRate] [int] NULL,
[CreationDate] [datetime] NULL,
[TenantsCount] [int] NULL,
CONSTRAINT [PK_Building] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
CREATE TABLE [dbo].[Floor](
[BuildingID] [int] NOT NULL,
[Number] [int] NOT NULL,
[Area] [int] NULL,
[TenantsCount] [int] NULL,
CONSTRAINT [PK_Floor] PRIMARY KEY CLUSTERED
(
[BuildingID] ASC,
[Number] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
Теперь нам необходимо создать сильверлайт проект в Visual Studio.
Microsoft Silverlight является реализацией .NET Framework, поддерживаемой различными браузерами и платформами, предназначенная для создания и представления мультимедиа и многофункциональных приложений (RIA) нового поколения в Интернете. Silverlight объединяет возможности сервера, Интернета и персонального компьютера; возможности управляемого кода и динамических языков, декларативного и традиционного программирования, а также мощные средства Windows Presentation Foundation (WPF).
Для запуска приложения Silverlight пользователям необходим небольшой подключаемый модуль для браузера. Подключаемый модуль предоставляется бесплатно. Если у пользователя еще не установлен подключаемый модуль, ему автоматически предлагается установить его. Загрузка и установка занимают всего несколько секунд и не требуют от пользователя никаких действий, кроме разрешения на установку.
Silverlight гарантирует, что пользователи могут запускать приложения во всех современных браузерах без создания специального кода для браузера. Приложения Silverlight могут выполняться в браузере или вне браузера.
Давайте создадим новый проект.
· Запустите Visual Studio 2010.
· В меню Файл последовательно выберите пункты Создать и Проект.
Откроется диалоговое окно Создать проект.
· В области Установленные шаблоны разверните узел Visual C# или Visual Basic и выберите Silverlight.
· В списке шаблонов выберите шаблон Приложение Silverlight. На следующем рисунке приведен пример шаблонов проектов Silverlight.
image
· Введите имя и расположение приложения и нажмите кнопку ОК.
· Открывается диалоговое окно Создать приложение Silverlight, как показано на следующем рисунке.
image
· Выберите метод для размещения приложения Silverlight.
o Если вы не хотите использовать веб-сайт для размещения приложения Silverlight, снимите флажок Размещение приложения Silverlight на новом веб-сайте. Вместо этого будет создана тестовая страница HTML для размещения данного приложения.
o Установите флажок Размещение приложения Silverlight на новом веб-сайте, если требуется добавить к решению для размещения приложения Silverlight отдельный веб-сайт ASP.NET или проект веб-приложения ASP.NET. При выборе этого параметра необходимо также указать Имя нового веб-проекта и Тип нового веб-проекта.
· Из раскрывающегося списка Версия Silverlight выберите нужную версию Silverlight.
· Нажмите кнопку ОК.
· Для построения проекта приложения Silverlight в меню Построение выберите команду Построить решение.
· Для отладки проекта приложения Silverlight в меню Отладка выберите команду Начать отладку.
· Для запуска проекта приложения Silverlight в меню Отладка выберите команду Начать без отладки.
Я выбрала в размещение приложения Silverlight на новом веб-сайте и Visual Studio сгенерировала мне два проекта: один asp.Net проект, второй Silverlight. Вот что получилось.
clip_image005
Рассмотрим что за файлы cгенерила нам Visual Studio.
Проект приложения Silverlight содержит следующую конфигурацию, ссылки на сборки и файлы кода:
· AppManifest.xml – это файл манифеста приложения, необходимый для создания пакета приложения. Изменение этого файла не допускается.
· AssemblyInfo.cs - этот файл содержит имя и метаданные версии, которые внедрены в созданную сборку.
· XAP-файл - это пакет приложения Silverlight. Пакет создается, когда выполняется построение проекта приложения Silverlight. Пакет приложения — это сжатый ZIP-файл с расширением XAP-файла, содержащий все файлы, необходимые для запуска данного приложения.
· Файлы MainPage - класс MainPage используется для создания пользовательского интерфейса к приложению Silverlight.
· Файлы приложения - Класс App является обязательным для приложения Silverlight для отображения интерфейса пользовательского приложения. Класс App реализуется с помощью App.xaml и App.xaml.cs. Для класса App создается экземпляр с помощью подключаемого модуля Silverlight после создания пакета приложения (XAP-файл).
· Тестовая страница - отдельная страница HTML (TestPage.html) создается для размещения приложения, если не установлен флажок Размещение приложения Silverlight на новом веб-сайте в диалоговом окне Создание приложения Silverlight.
При установке флажка Размещение приложения Silverlight на новом веб-сайте в диалоговом окне Создание приложения Silverlight создается веб-сайт ASP.NET и добавляется к решению Silverlight. Веб-сайт содержит следующие файлы:
· Silverlight.js - вспомогательный файл JavaScript, содержащий функции для инициализации экземпляров подключаемого модуля Silverlight и функции для определения установленной версии клиента подключаемого модуля.
· HTML-файл - файл HTML, используемый для настройки и создания экземпляра подключаемого модуля Silverlight, который загружает и запускает приложение Silverlight.
· ASPX-файл - ASPX-файл, являющийся веб-страницей запуска по умолчанию. Имя этого файла — это объединение имени проекта приложения Silverlight и текста "TestPage.aspx".
· Файл Web.config - файл конфигурации веб-сайтов
Далее переходим к уровню бизнесс логики. Мы будем в своей программе использовать Entity Framework. Entity Framework (EF) — это объектно-ориентированная технология доступа к данным, является object-relational mapping (ORM) решением для .NET Framework от Microsoft. Предоставляет возможность взаимодействия с объектами как посредством LINQ в виде LINQ to Entities, так и с использованием Entity SQL.
Для начала нам необходимо в приложении создать edmx файл. EDMX-файл — это XML файл, определяющий концептуальную модель, режим хранения и их сопоставление. Кроме того, EDMX-файл содержит сведения, используемые конструктором моделей EDM ADO.NET (конструктор сущностей) для подготовки модели к просмотру в графическом режиме. Рекомендуется производить создание EDMX-файла с помощью мастера моделей EDM.
Создаём EDMX-файл из существующей базы данных:
· Откройте или создайте проект, для которого нужно создать EDMX-файл.
· Щелкните правой кнопкой мыши имя проекта в обозревателе решений, укажите пункт Добавить и выберите пункт Создать элемент.
· Выберите в области Шаблоны пункт Модель ADO.NET EDM.
· Введите имя файла (<имя_проекта>.edmx), а затем нажмите кнопку Добавить.
· Откроется первая страница программы Мастер моделей EDM.
· В диалоговом окне Выбор содержимого модели выберите Создать из базы данных, а затем нажмите кнопку Далее.
· Нажмите кнопку Создать соединение.
· Появится диалоговое окно Свойства соединения.
· Введите имя сервера, выберите метод проверки подлинности и введите имя базы данных, для которой была создана модель. Нажмите кнопку ОК.
· В диалоговом окне Выбор подключения к данным обновятся настройки подключения к базе данных.
Примечание: По умолчанию настройки соединения сущности сохраняются в файле App.config или Web.config file (в зависимости от типа проекта). Введите имя соединения или используйте имя, заданное по умолчанию. Снимите флажок Сохранить параметры соединения сущности, если не нужно сохранять сведения о соединении в файле конфигурации.
· Чтобы продолжить работу, нажмите кнопку Далее.
· Появится диалоговое окно Выбор объектов базы данных. По умолчанию объекты в базе данных не выбираются для включения в EDMX-файл.
· Разверните узлы для таблиц, представлений и хранимых процедур. Отмените выделение любых таблиц, представлений и хранимых процедур, которые не нужно включать в EDMX-файл.
Примечание: Классы, сформированные из концептуальной модели, будут находиться в области Пространство имен модели. Введите имя пространства имен или используйте имя, установленное по умолчанию.
· Чтобы создать EDMX-файл, нажмите кнопку Готово.
Мастер моделей EDM выполняет следующие действия.
· Добавляет в проект ссылки на сборки System.Data, System.Data.Entity, System.Core, System.Security и System.Runtime.Serialization, если они еще не существуют.
· Создает EDMX-файл, который инкапсулирует модель хранения, концептуальную модель и сопоставления.
· Создает файл с исходным кодом, содержащий классы, сформированные из концептуальной модели. Файл с исходным кодом можно просмотреть, развернув узел EDMX в окне Обозреватель решений.
Примечание: Файл с исходным кодом формируется из EDMX-файла. Любые изменения, внесенные вручную в файл с исходным кодом, перезаписываются при изменении соответствующего EDMX-файла. Чтобы избежать перезаписи пользовательского кода, можно разработать разделяемые классы, хранимые в отдельных файлах.
· Создает файл App.Config или Web.Config (в зависимости от типа проекта).
· Для проектов веб-узлов ASP.NET определяет поставщик компоновки в файле Web.config.
· Отображает концептуальную модель в конструкторе моделей EDM ADO.NET (конструктор сущностей).
Вот то что у меня получилось.
clip_image006
Как вы уже поняли мы разрабатываем сегодня бизнес приложение. А что приходит в голову при рассмотрении бизнес-приложений? На первом месте стоят данные. Приложения Silverlight выполняются на стороне клиента в обозревателе. Однако данные находятся в базе данных на стороне сервера. Если посмотреть на пространства имен и сборки Silverlight, в них отсутствует поддержка ADO.NET, поэтому платформа не поддерживает такие хорошо известные функции, как DataReaders или LINQ-To-SQL.
Кроме того, в Silverlight отсутствует база данных на стороне клиента. Во многих случаях это не решило бы проблему. Вы, конечно же, не захотите случайно сохранить временную копию базы данных с конфиденциальной информацией на клиентском компьютере.
Решение просто: добавление к базе данных уровня службы. Этот уровень службы можно использовать для подключения к базе данных, желательно через бизнес-уровень. На стороне клиенте Silverlight может подключаться к этим службам и получать доступ к данным.clip_image007
Silverlight поддерживает типы служб ASMX, WCF и REST. Также можно использовать Silverlight для использования более экзотических служб, таких как сокеты и net.tcp. Это хорошая новость, если вы добавляете Silverlight к существующим технологиям предприятия. Службы, от которых Silverlight может получать данные, – это те же самые службы, которые можно использовать для других типов приложений.
Работа со службами ASMX и WCF аналогична с точки зрения Silverlight. При реализации службы выбором по умолчанию должна быть WCF.
Далее нам необходимо создать WCF RIA сервисы в нашем приложении, которые будут проводниками между базой данных и Silverlight приложением. Что же такое RIA сервисы и как их создать мы рассморим в следующей статье.

Комментариев нет:

Отправить комментарий