Visual Studio 2008
Часть 7. Windows Communication Foundation (WCF) и Windows Workflow Foundation (WF)
Windows Communication Foundation (WCF)
Windows Workflow Foundation (WF)
В данной статье мы рассмотрим возможности создания и использования новых сервисов, появившихся в Microsoft .NET Framework 3.0, расширенных в .NET Framework 3.5 и поддерживаемых на уровне Microsoft Visual Studio 2008. Речь пойдет о двух ключевых компонентах Microsoft .NET Framework 3.0 — унифицированной программной модели и среде для выполнения сервисов Windows Communication Foundation (WCF) и гибкой декларативной среде выполнения workflow-процессов и активностей Windows Workflow Foundation (WF).
Windows Communication Foundation (WCF)
Windows Communication Foundation — это платформа Microsoft для создания распределенных систем, которая включает лучшие характеристики таких технологий, как MSMQ, DCOM, ASMX Web services, .NET Remoting, и ряд других. Windows Communication Foundation представляет собой новое поколение коммуникационной инфраструктуры, построенной на основе архитектуры веб-сервисов. Расширенная поддержка веб-сервисов в Windows Communication Foundation обеспечивает безопасную, надежную транзакционную систему передачи сообщений с возможностью реализации гетерогенных систем.
Ориентированная на сервисы программная модель, реализованная в Windows Communication Foundation, построена на основе Microsoft .NET Framework и существенно облегчает и упрощает создание систем на базе развитых коммуникационных механизмов.
Windows Communication Foundation унифицирует широкий спектр возможностей коммуникационных систем, предоставляя компонентную и расширяемую архитектуру, обширный набор транспортных протоколов, систему безопасности, шифрование, сетевые топологии и модель хостинга. Основные характеристики WCF следующие:
- унифицированная программная модель;
- широкий набор коммуникационных возможностей;
- взаимодействие;
- поддержка корпоративных сервисов;
- нейтральность по отношению к транспортному уровню, протоколам и форматам;
- масштабируемость.
Windows Communication Foundation поддерживается на таких платформах, как:
- Microsoft Windows Vista;
- Microsoft Windows XP;
- Microsoft Windows Server 2003;
- Microsoft Windows Server 2008.
При использовании Visual Studio 2005 разработчикам требовалось загрузить и установить специальный набор расширений — Visual Studio 2005 extensions for Framework .NET 3.0 (WCF & WPF) для того, чтобы получить шаблоны проектов для разработки с использованием WCF. В состав Visual Studio 2008 входят полноценные средства работы с WCF, включая все необходимые шаблоны, поддержку на уровне дизайнеров и т.п. (рис. 1).
Рис. 1. Шаблоны для WCF в составе Visual Studio 2008
К новинкам, появившимся в .NET Framework 3.5 и Visual Studio 2008 для поддержки работы с WCF, относятся поддержка автохостинга и клиента для тестирования сервисов, новый редактор конфигураций, средства отладки:
- в предыдущих версиях Visual Studio создание сервиса также требовало написания кода для хостинга в тех случаях, когда сервис использовался не под управлением Internet Information Services (IIS). Функция autohost, реализованная в Visual Studio 2008, позволяет разработчикам не заботиться о хостинге сервисов;
- в предыдущих версиях Visual Studio после того, как вы создали сервис, вам требовалось создать клиентское приложение для его тестирования. В Visual Studio 2008 клиент для тестирования генерируется автоматически — данная функциональность схожа с автоматической генерацией клиента для тестирования веб-сервисов на основе ASMX.
Создание простейшего WCF-сервиса средствами Visual Studio состоит из ряда простых шагов. Мы начинаем с того, что выбираем шаблон — WCF Service Library, который расположен в ветви WCF для поддерживаемых языков программирования — Visual Basic .NET и Visual C#. Вот код, создаваемый на основе шаблона WCF Service Library:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
namespace WcfServiceLibrary1
{
// NOTE: If you change the interface name «IService1» here,
// you must also update the reference to «IService1» in App.config.
[ServiceContract]
public interface IService1
{
[OperationContract]
string GetData(int value);
[OperationContract]
CompositeType GetDataUsingDataContract(CompositeType composite);
// TODO: Add your service operations here
}
// Use a data contract as illustrated in the sample below to
// add composite types to service operations
[DataContract]
public class CompositeType
{
bool boolValue = true;
string stringValue = «Hello «;
[DataMember]
public bool BoolValue
{
get { return boolValue; }
set { boolValue = value; }
}
[DataMember]
public string StringValue
{
get { return stringValue; }
set { stringValue = value; }
}
}
}
Создаваемый на основе шаблона код сервиса готов к тестированию, нажатие клавиши F5 приводит к:
- автоматической генерации хоста для данного сервиса — WcfSvcHost — рис. 2 и 3);
Рис. 2. Автоматически сгенерированный
хостинг для сервиса (WcfSvcHost)
Рис. 3. Автоматический хостинг для WCF-сервиса
- созданию тестового клиента (рис. 4).
Рис. 4. Тестовый клиент для WCF-сервиса
Для того чтобы создать клиентское приложение, которое будет потреблять наш сервис, необходимо выполнить следующие простые шаги:
- Выполнить команду Project —> Add Service Reference и в диалоговой панели Add Service Reference нажать кнопку Discover (рис. 5).
Рис. 5. Добавление ссылки на сервис
- Выбрать найденный сервис и нажать кнопку Ok — ссылка на сервис будет добавлена к проекту.
- Выполнить команду File —> Add —> New Project и выбрать шаблон Windows Forms Application.
- На форму добавить три компонента — кнопку и два текстовых поля. В обработчике события, связанного с нажатием кнопки, написать следующий код:
Private Sub Button1_Click(ByVal sender As System.Object,
ByVal e As System.EventArgs)
Handles Button1.Click
‘ Использование ссылки на сервис
Dim client As New ServiceReference1.Service1Client
Dim returnString As String
returnString = client.GetData(TextBox1.Text)
TextBox2.Text = returnString
End Sub
- В Solution Explorer выбрать WindowsApplication1 и по нажатии правой кнопки мыши выбрать опцию Set As StartUp Project — в противном случае будет использоваться автоматически сгенерированный тестовый клиент.
- Запустить приложение на выполнение и убедиться в том, что сервис работает так, как и ожидалось (рис. 6).
Рис. 6. Тестирование сервиса из Windows-клиента
К дополнительным новинкам, появившимся в .NET Framework 3.5 и Visual Studio 2008 для поддержки работы с WCF, относятся следующие:
- поддержка программирования на уровне протокола HTTP и поддержка протокола REST и синдикации — поддержка программирования на уровне протокола HTTP означает, что разработчики могут полностью использовать возможности протокола REST, в частности можно более просто интегрировать WCF с веб-приложениями, например, для поставки данных через WCF-сервисы в приложения, созданные на основе ASP .NET;
- поддержка передачи сообщений на уровне протокола JSON — протокол JSON (JavaScript Object Notation) особенно полезен при создании приложений на основе ASP .NET AJAX, так как используется для взаимодействия с компонентами AJAX. Поддержка на уровне WCF означает, что у разработчиков появляется возможность создания сервиса, который будет поставлять данные компонентам ASP .NET AJAX, расположенным на клиенте;
- поддержка новых протоколов стандарта OASIS — Windows Communication Foundation 3.5 является одним из первых программных компонентов, полностью поддерживающих новые протоколы стандарта OASIS, — это означает, что разработчики могут применять новые типы «привязок» при создании WCF-сервисов;
- интеграция с Windows Workflow Foundation (WF) — в предыдущих версиях использование и WCF и WF требовало написания собственного инфраструктурного кода. В Visual Studio 2008 такой код, обеспечивающий связывание двух технологий, генерируется автоматически.
Windows Workflow Foundation (WF)
Windows Workflow Foundation (WF) — программный компонент для создания и выполнения workflow, который поставляется в составе .NET Framework 3.0 и более поздних версий. Workflow — это набор активностей (activity), координирующих действия людей или программного обеспечения.
Workflow может быть представлен как логическая последовательность активностей (flowchart) или диаграмма состояний (state diagram) — табл. 1.
Workflow создается в Visual Studio с помощью специального дизайнера (входит в комплект поставки WF). Возможно создание workflow целиком с помощью кода с описанием на языке XOML и включением фрагментов кода (code behind) или только на языке XOML. Созданное описанными выше средствами workflow выполняется внутри приложения (hosting application). Еще один способ создания workflow — генерация дерева активностей на лету с последующей сериализацией.
Активности могут быть базовыми, определяющими один шаг в рамках workflow, или составными, содержащими другие активности. С точки зрения .NET Framework активности — это полноценные классы, обладающие свойствами, методами и событиями. Разработчики могут создавать собственные библиотеки активностей или расширять существующие.
В состав WF входит набор предопределенных активностей: активности, управляемые правилами, управление последовательностями, транзакции, коммуникации (локальные и веб-сервисы). Базовые активности показаны в табл. 2.
Workflow поддерживают состояния, возможность сохранения в потоки (файловая система, реляционное хранилище), транзакции, потоки, таймеры и ряд других сервисов, включая интеграцию с ASP .NET.
Имеется возможность использования дизайнера workflow как компонента для Windows Forms. Ядро выполнения workflow позволяет «выставлять» workflow в виде веб-сервисов. Также имеется возможность «общения» с локальными объектами внутри хост-приложения (local communication services) на уровне обмена данными, вызова методов и обработки событий.
Помимо перечисленных выше возможностей, в WF поддерживаются адаптивные workflow — предоставляется механизм для динамического изменения экземпляров workflow в режиме выполнения (dynamic update). Эта функциональность доступна как из самого выполняемого workflow, так и из хост-приложения.
Windows Workflow Foundation поддерживается на платформах Microsoft Windows ХР Vista и Microsoft Windows Server 2003/2008.
В состав Visual Studio входит набор шаблонов для использования WF в приложениях, включая возможность разработки workflow для Microsoft Office SharePoint Server 2007 (рис. 7).
Рис. 7. Шаблоны для Windows Workflow Foundation
Набор активностей, входящих в состав Windows Workflow Foundation 3.0, показан на рис. 8.
Рис. 8. Активности, входящие в состав WF
Создание проектов с использованием WF состоит из последовательности простых действий, перечисленных далее.
- Необходимо выбрать тип проекта, который мы будем использовать для реализации workflow. Команда File —> New —> Project приводит к отображению диалоговой панели New Project, в которой есть ветвь Workflow для поддерживаемых языков программирования — Visual Basic .NET и Visual C#. В зависимости от задачи мы можем выбрать один из следующих шаблонов:
- Sequential Workflow Console Application — логическая последовательность активностей в консольном приложении;
- Sequential Workflow Library — библиотека логических последовательностей;
- Workflow Activity Library — создание библиотеки активностей;
- State Machine Workflow Console Application — диаграмма состояний в консольном приложении;
- State Machine Workflow Library — библиотека диаграмм состояний;
- Empty Workflow Project — пустой проект для создания приложений с использованием WF.
- Наиболее простой способ освоения WF — это создание консольных приложений с использованием либо логической последовательности активностей, либо диаграммы состояний.
- И в том, и в другом случае мы попадаем в дизайнер workflow, который позволяет нам составлять workflow из активностей, расположенных в галерее (рис. 9).
Рис. 9. Дизайнер workflow для логической последовательности
При создании приложения на базе шаблона Empty Workflow Project у разработчиков появляется возможность создавать более сложные workflow, объединяющие логические последовательности и диаграммы состояний, — необходимо использовать команду Project —> Add для выбора добавляемых к проекту элементов: логическая последовательность, диаграмма состояний или активность (рис. 10).
Рис. 10. Добавление элементов проекта
Выбор любой из опций приводит к появлению диалоговой панели Add New Item, в которой можно выбрать соответствующий шаблон (рис. 11).
Рис. 11. Доступные шаблоны
Обратите внимание на то, что и для активностей, и для логической последовательности и диаграммы состояний поддерживается два режима работы — на уровне кода и на уровне XML с выделением кода в отдельный файл.
К новинкам, появившимся в Visual Studio 2008, относится возможность интеграции Windows Workflow Services и Windows Communication Foundation (в этих сценариях WCF-сервисы могут выполнять роль workflow, а Workflow может хоститься как WCF-сервис), а также новые средства создания контрактов. Данные расширения позволяют, в частности, использовать сервисы хранения состояния WF в WCF и модель безопасности, реализованную в WCF, в ряде сценариев создания workflow.
В следующей статье мы рассмотрим ключевые новинки, связанные с созданием приложений для мобильных устройств.