Апробация технологий Silverlight/LINQ/WCF для создания web-приложений, ориентированных на интенсивную обработку данных Дипломная работа студента 545 группы Бешко Михаила Научный руководительИванов А. Н. РецензентЛуцив Д. В. Санкт-Петербургский государственный университет математико-механический факультет кафедра системного программирования 2008 г
Введение Целевая область: Информационные системы, ориентированные на данные Основные функции: 1.Обслуживание картотеки 2.Сбор статистики 3.Операции над объектами 4.Другие бизнес-процессы Примеры приложений: Банковские системы Системы автоматизации документооборота ERP-системы
Введение Технологическая платформа – связка от Microsoft: Silverlight –средство создания богатого UI LINQ (Language Integrated Queries) –технология уровня доступа к данным WCF (Windows Communication Foundation) –связующее звено между клиентом и сервисом, выдающим данные Браузер Клиент Cервер БД Web-хост Silverlight приложение LINQ to SQL Data-сервис MS SQL ServerWCF
Постановка задачи Провести анализ возможностей рассмотренной платформы Разработать архитектуру типового приложения Создать рабочий прототип приложения Выделить общую функциональность в библиотеки поддержки Формализовать логику генерации кода Сделать выводы о потенциале рассмотренной платформы в целевой области
Создание интерфейса Важнейшие свойства: –стандартная библиотека - подмножество «большого».NET Framework –декларативное описание интерфейса при помощи XAML –богатая библиотека элементов управления Проблемы: –Отсутствие наследования дизайна интерфейса. Решено удачной организацией архитектуры и поддержкой генерации на основе созданных шаблонов
Разработанная архитектура уровня представления Библиотеки поддержки Специфичная (генерируемая) часть List template IListView IView ICardView CardPresenterListPresenter CommonPresenter Cards Lists Card template Presenters Application Controller Application Controller Model ViewPresenter MVP Model View Presenter В работе созданы и вынесены в библиотеку поддержки: –базовые классы модуля Presenter –интерфейсы и шаблоны View Решены проблемы: –синхронизации асинхронных операций –страничного представления данных –фильтрации на стороне сервера
Организация взаимодействия клиента с data-сервисом В работе выбран механизм «классических» WCF-сервисов и описан алгоритм генерации интерфейса типовых операций data-сервиса. Проблемы: –Бизнес-объекты вместо абстрактных кортежей Решено использованием лямбда-выражений на клиенте и генерацией серверного кода data-сервиса –Невозможность передачи лямбда-выражений на сервер для фильтрации из-за их несериализуемости Взамен разработан механизм фильтрующих сущностей Браузер Клиент Cервер БД Web-хост Silverlight приложение LINQ to SQL Data-сервис MS SQL ServerWCF
Клиент Сервер Разработанная архитектура уровня доступа к данным Фильтрующие сущности – это классы, парные к объектам модели, дающие возможность фильтрации по полям соответствующего объекта, в том числе полям его связей. В работе описан алгоритм генерации набора фильтрующих сущностей по множеству классов модели, и этот набор используется в коде методов data-сервиса. DB Реляционная база MS SQL Server Модель образ модели Фильтрующие сущности образ фильтрующих сущностей proxy-генератор Visual Studio 2008 генератор LINQ to SQL описанный в работе генератор
Результаты Разработана архитектура типовых приложений в целевой области Предложен вариант организации взаимодействия с data-сервисом, подходящий для данной задачи Созданы библиотеки поддержки времени выполнения и рабочий прототип приложений на их основе Выделены элементы приложения, подлежащие генерации, описаны соответствующие алгоритмы и предложены шаблоны кода Сделаны следующие выводы: –о возможности создания функциональных приложений на целевой платформе –о целесообразности такого выбора в случае высоких требований к дизайну интерфейса и интерактивности работы
Направления дальнейшей работы Адаптировать созданный каркас под релиз-версию Silverlight 2, которая обещана в ближайшее время. Добавить классы для форм-отношений и связанных полей карточек. Реализовать генераторы на основе описанных алгоритмов и созданных шаблонов. Спасибо за внимание!