Software Factories — быстрый способ создания шаблонов приложений
Портальные технологии и расширенные функции
Порядок установки Smart Client Software Factory
Весной этого года мы рассказывали читателям о Enterprise Library 2.0 — наборе функциональных блоков, которые могут использоваться для построения различных типов корпоративных приложений (см. статью «Enterprise Library 2.0. Корпоративные приложения из функциональных блоков» в КомпьютерПресс № 3’2006). Идеи, заложенные в библиотеку Enterprise Library, а также в выпущенный отдельно блок Composite UI Application Block, который применяется в качестве основы для создания композитных приложений, нашли свое дальнейшее развитие в программных руководствах на основе средств расширения Visual Studio 2005 — Guidance Automation Extensions и Guidance Automation Toolkit. Такие программные руководства получили название Software Factory. В настоящий момент доступны следующие руководства: Smart Client Software Factory, Mobile Client Software Factory и Web Service Software Factory.
Согласно определению, данному на сайте Microsoft Patterns & Practices, Software Factory — это «структурированный набор программных артефактов, устнавливаемый в среду разработки и облегчающий работу архитекторов и разработчиков по предсказываемому, эффективному и качественному созданию приложений определенного типа». Реализация Software Factory базируется на вышеупомянутых расширениях Visual Studio 2005. Guidance Automation Extensions (GAX) служит для расширения возможностей Visual Studio 2005, позволяя выполнять в среде разработки специальные пакеты (guidance packages), которые предназначены для автоматизации создания различных программных артефактов. В свою очередь, Guidance Automation Toolkit (GAT) — это набор средств по созданию таких пакетов. Более подробно о GAX и GAT можно прочитать в специальном разделе сайта MSDN по адресу: http://msdn.microsoft.com/vstudio/teamsystem/workshop/gat/default.aspx. На том же сайте (рис. 1) можно загрузить и предварительную версию этих технологий — Guidance Automation Extensions Technology Preview (June 2006 Release for Visual Studio 2005) и Guidance Automation Toolkit Technology Preview (June 2006 Release for Visual Studio 2005).
Рис. 1. Страница, посвященная Guidance Automation Extensions
и Guidance Automation Toolkit
Ниже мы рассмотрим, как эти средства расширения Visual Studio 2005 используются для генерации шаблонов приложений и других программных артефактов, ускоряющих и облегчающих создание приложений различного типа.
Web Service Software Factory
В задачу этого набора программных артефактов входят упрощение разработки web-сервисов на основе технологии ASMX (часть ASP .NET) и поддержка связанных с этой разработкой задач. К таким задачам, в частности, относятся: дизайн сообщений и интерфейсов к сервисам, обработка исключительных ситуаций (exceptions), создание бизнес-объектов, преобразование сообщений для работы с бизнес-объектами, дизайн, создание и использование уровня доступа к данным, возможная миграция на Windows Communication Foundation (WCF) и т.п. На диаграмме, приведенной на рис. 2, показаны основные компоненты приложения на основе web-сервисов и выделены те компоненты, создание которых автоматизируется Service Factory.
Рис. 2. Архитектура сервиса, создаваемого средствами
Service Factory
Как видно из приведенной диаграммы, приложения на основе web-сервисов — это намного больше, чем просто набор технологий для получения и отсылки SOAP-сообщений и предоставления WSDL-контрактов, — такие приложения должны включать различные звенья, отвечающие и за интерфейсы к сервису, и за бизнес-логику и представление бизнес-объектов, и за доступ к ресурсам, включая доступ к данным и взаимодействие с другими сервисами, а также содержать механизмы обработки исключений, быть управляемыми в рамках всей инфраструктуры, где работают такие приложения, и т.п.
Помимо вышеописанной функциональности приложения на основе web-сервисов создаются с использованием текущих технологий — .NET Framework 2.0 (ASP .NET и Web Server Enhancements), но подразумевается, что они должны легко портироваться на технологии, которые появятся в недалеком будущем — .NET Framework 3.0 (Windows Communication Foundation, Windows Workflow Foundation и CardSpace). При разработке Service Factory по возможности были учтены те изменения, которые появятся в новых версиях .NET Framework, а в состав продукта включены практически все необходимые руководства по возможной миграции.
Руководство по созданию приложений на основе web-сервисов доступно в виде трех основных форматов: документация, пакеты для автоматизации создания программных артефактов и пример использования web-сервисов при разработке приложений.
Документация содержит описание архитектуры, включая такие документы, как Web Services Application Architecture, Message Design in Service-Oriented Applications, Exception Handling in Service Oriented Applications и Planning for and Migration to Windows Communication Foundation (WCF) (рис. 3).
Рис. 3. Software Factory в Visual Studio 2005
Используя набор мастеров, разработчики получают шаблоны исходных кодов для реализации собственно сервисов на основе ASMX, включая интерфейсы к сервисам, сообщения, потребляемые и посылаемые сервисами, а также механизмы трансляции сообщений в бизнес-объекты, описанные на уровне доменной модели и на уровне доступа к данным, использование которого облегчает создание бизнес-объектов на основе существующей модели данных, генерацию классов репозитария и создание логики доступа к источникам данных.
Service Factory предназначается для различных категорий технических специалистов — архитекторов, разработчиков, отвечающих как за отдельные компоненты сервисного приложения, так и за приложение в целом. С помощью Service Factory можно создавать сервисные приложения разных типов — сервисы, обеспечивающие доступ к бизнес-данным, а также сервисы, расширяющие бизнес-логику приложений. В следующих версиях Service Factory планируется расширить сценарии сервисов и предоставить разработчикам возможность создания сервисов, управляющих бизнес-процессами, и сервисов, обеспечивающих инфраструктурную функциональность — протоколирование, перенаправление потоков данных, безопасность, подписку и т.п. (рис. 4).
Рис. 4. Руководства, включенные в Service Factory
Service Factory распространяется в рамках инициативы Microsoft Patterns & Practices через сайт GotDotNet.com. Для доступа к Service Factory требуется бесплатная регистрация. Адрес раздела, посвященного Service Factory: http://www.gotdotnet.com/codegallery/codegallery.aspx?id=6fde9247-53a8-4879-853d-500cd2d97a83 (рис. 5).
Рис. 5. Стартовая страница Service Factory
После установки Service Factory (необходима установка GAX и GAT) можно скачать набор практических работ, использование которых значительно облегчит ее освоение. В практические работы входят следующие модули:
- создание структуры решения;
- создание типов данных;
- создание сообщений;
- создание операций, выполняемых сервисами;
- создание бизнес-объектов;
- трансляция сообщений в бизнес-объекты;
- создание хранимых процедур для выполнения CRUD-операций;
- создание классов для репозитария данных;
- вызов уровня доступа к данным;
- создание клиентского приложения и тестирование сервиса.
Применение Service Factory возможно при наличии на компьютере Microsoft Visual Studio 2005 (любое издание, кроме Express), Microsoft .NET Framework 2.0, Microsoft SQL Server 2005 Express Edition или SQL Server 2005. При необходимости модификации различных настроек требуется использование Enterprise Library Configuration Tool — для этого устанавливается Enterprise Library for .NET Framework 2.0. Для запуска unit-тестов понадобится Visual Studio Team System.
В планы развития Service Factory входит поддержка Windows Communication Foundation (WCF), расширенная поддержка доступа к данным на основе ADO .NET 2.0, а также подготовка к миграции на новые технологии доступа к данным, в том числе LINQ и ADO .NET vNext.
Smart Client Software Factory
Второй пример использования расширений Visual Studio (GAX & GAT) — это реализация Smart Client Software Factory. Данный набор руководств по созданию приложений в архитектуре Smart Client базируется на предыдущих наработках, выпущенных в рамках инициативы Microsoft Patterns & Practices, — Enterprise Library 2.0 и Composite User Interface Application Block (рис. 6).
Рис. 6. Композитные приложения
Основное назначение Smart Client Software Factory — облегчить разработчикам создание композитных приложений в архитектуре Smart Client, предоставив в их распоряжение набор решений, которые позволяют адресовать следующие задачи: разработка приложений с богатым и функциональным интерфейсом, использующим возможности Windows Desktop; объединение в рамках одного клиентского приложения ряда серверных бизнес-приложений и обмен данными между ними; отображение информации, поступающей из различных источников, в интегрированном интерфейсе; использование локальных ресурсов и хранилищ для поддержания работоспособности приложения в случаях отсутствия сетевого соединения; простые механизмы развертывания и конфигурации приложений (рис. 7).
Рис. 7. Документация к Smart Client Software Factory
В состав Smart Client Software Factory входят программные артефакты, которые можно разделить на следующие основные группы:
- модульность:
- создание композитных интерфейсов для интеграции данных из различных бизнес-приложений: Composite User Interface Application Block, паттерны, руководства по реализации, примеры создания приложений,
- объединение приложений из различных модулей и блоков: паттерны, руководства по реализации, примеры создания приложений,
- централизованное хранение конфигурации композитных приложений — список и порядок загрузки отдельных модулей,
- одновременная работа с несколькими экземплярами бизнес-объектов;
- пользовательский интерфейс:
- разделение модулей по бизнес-задачам,
- возможность различного расположения моделей на экране,
- поддержка навигационных панелей,
- поддержка панелей задач,
- слабосвязанные компоненты, общающиеся друг с другом через события;
- развертывание и обновление:
- развертывание и управление по технологии ClickOnce,
- поддержка версионности модулей — отделение интерфейса модуля от его реализации,
- поддержка независимого развертывания модулей;
- поддержка web-сервисов: взаимодействие с web-сервисами — асинхронное и синхронное, создание очередей сообщений, возможность работы в отсоединенном режиме;
- локальное хранилище: кэширование часто используемых данных;
- безопасность:
- авторизация,
- изменение интерфейса в зависимости от роли пользователя;
- управляемость:
- обработка исключений — на базе Enterprise Library,
- протоколирование исключений — на базе Enterprise Library (рис. 8).
Рис. 8. Smart Client Software Factory
Вместе с Smart Client Software Factory поставляются два примера реализации приложений. Первый пример показывает использование Software Factory для создания клиентского приложения, которое может работать в соединенном и отсоединенном режимах, второй пример — это реализация многомодульного, комплексного приложения, которое всегда работает в соединенном режиме.
Среди входящих в состав Software Factory паттернов можно отметить Model-View-Presenter (MVP), Asynchronous Web Service Invocation with Timeout и Map Business Entities into UI Elements. Помимо этого в Software Factory есть следующие паттерны:
- Service Agent Proxy API Separation;
- Container Hierarchy;
- View Navigation;
- Workspace Hierarchy;
- UI Threading;
- Module Plug-In;
- Action Catalog;
- Service Locator;
- WorkItem Identity Publication;
- Module Interface Separation.
Наиболее часто решаемые задачи поставляются в виде шаблонов — Smart Client Application (задает архитектурную основу всего приложения), Add Business Module, Add Foundation Module, Add View & Presenter, Add Smart Web Reference, Add Event Publication и Add Event Subscription.
Порядок установки Smart Client Software Factory
Перед установкой Smart Client Software Factory необходимо установить Composite User Interface Application Block (http://msdn.microsoft.com/library/en-us/dnpag2/html/cab.asp), Enterprise Library (http://msdn.microsoft.com/library/en-us/dnpag2/html/EntLib2.asp), а также Guidance Automation Extensions (GAX) и Guidance Automation Toolkit (GAT). После этого в Visual Studio 2005 нужно открыть проект CompositeUI.sln, выполнить команду Build и скопировать следующие сборки в каталог Lib:
- Microsoft.Practices.CompositeUI.dll;
- Microsoft.Practices.CompositeUI.WinForms.dll;
- Microsoft.Practices.ObjectBuilder.dll.
После компиляции Enterprise Library (командой Build Library) в соответствующем меню скопировать следующие сборки в каталог Lib:
- Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.dll;
- Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.dll;
- Microsoft.Practices.EnterpriseLibrary.Logging.dll;
- Microsoft.Practices.EnterpriseLibrary.Caching.dll;
- Microsoft.Practices.EnterpriseLibrary.Security.dll;
- Microsoft.Practices.EnterpriseLibrary.Common.dll.
При установке Smart Client Software Factory необходимо указать местоположение соответствующих сборок — Composite User Interface Application Block и Enterprise Library.
Smart Client Software Factory распространяется в рамках инициативы Microsoft Patterns & Practices через сайт GotDotNet.com. Для доступа к Smart Client Software Factory требуется бесплатная регистрация. Адрес раздела, посвященного Smart Client Software Factory: http://www.gotdotnet.com/codegallery/codegallery.aspx?id=941d2228-3bb5-42fd-8004-c08595821170 (рис. 9).
Рис. 9. Стартовая страница Smart Client Software Factory
Guidance Explorer
Недавно в рамках инициативы Microsoft Patterns & Practices было выпущено простое средство для сбора и консолидации знаний, накапливаемых в рамках работы над различными программными проектами. В отличие от рассмотренных выше Software Factories, построенных на основе пакета расширений для Visual Studio — GAX & GAT, Guidance Explorer — это отдельная утилита, не требующая наличия на компьютере Visual Studio.
На момент написания данного обзора оболочка Guidance Explorer (версия от 16.08.2006) объединяла набор руководств, опуликованных в рамках Patterns & Practices, по темам производительности и безопасности, включая руководства, тест-кейсы, примеры кода и т.п. (рис. 10).
Рис. 10. Guidance Explorer
Guidance Explorer распространяется бесплатно через сайт GotDotNet.com. Для доступа к программе требутся регистрация. Адрес раздела, посвященного Guidance Explorer: http://www.gotdotnet.com/codegallery/codegallery.aspx?id=bb9aecfe-56ba-4ca9-8127-44e551b90962. Все материалы, отображаемые в Guidance Explorer, представлены в виде XML-файлов, что существенно упрощает пополнение этого репозитария знаний — как силами специалистов Microsoft, так и разработчиками, реализующими различные программныеи проекты.
Для желающих узнать, как публиковать информацию для Guidance Explorer в web, есть специальный ресурс, расположенный по адресу: http://channel9.msdn.com/wiki/default.aspx/GuidanceLibrary.GEFAQ011. Расписание публикаций в рамках Microsoft Patterns & Practices доступно на сайте GuidanceLibrary Wiki по адресу: http://channel9.msdn.com/wiki/default.aspx/GuidanceLibrary.GuidanceExplorerSchedule.