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-сервиса

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

  1. Выполнить команду Project —> Add Service Reference и в диалоговой панели Add Service Reference нажать кнопку Discover (рис. 5).

 

Рисунок

Рис. 5. Добавление ссылки на сервис

  1. Выбрать найденный сервис и нажать кнопку Ok — ссылка на сервис будет добавлена к проекту.
  2. Выполнить команду File —> Add —> New Project и выбрать шаблон Windows Forms Application.
  3. На форму добавить три компонента — кнопку и два текстовых поля. В обработчике события, связанного с нажатием кнопки, написать следующий код:

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

  1. В Solution Explorer выбрать WindowsApplication1 и по нажатии правой кнопки мыши выбрать опцию Set As StartUp Project — в противном случае будет использоваться автоматически сгенерированный тестовый клиент.
  2. Запустить приложение на выполнение и убедиться в том, что сервис работает так, как и ожидалось (рис. 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 состоит из последовательности простых действий, перечисленных далее.

  1. Необходимо выбрать тип проекта, который мы будем использовать для реализации 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.
  2. Наиболее простой способ освоения WF — это создание консольных приложений с использованием либо логической последовательности активностей, либо диаграммы состояний.
  3. И в том, и в другом случае мы попадаем в дизайнер 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.

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

 

В начало В начало

КомпьютерПресс 5'2009


Наш канал на Youtube

1999 1 2 3 4 5 6 7 8 9 10 11 12
2000 1 2 3 4 5 6 7 8 9 10 11 12
2001 1 2 3 4 5 6 7 8 9 10 11 12
2002 1 2 3 4 5 6 7 8 9 10 11 12
2003 1 2 3 4 5 6 7 8 9 10 11 12
2004 1 2 3 4 5 6 7 8 9 10 11 12
2005 1 2 3 4 5 6 7 8 9 10 11 12
2006 1 2 3 4 5 6 7 8 9 10 11 12
2007 1 2 3 4 5 6 7 8 9 10 11 12
2008 1 2 3 4 5 6 7 8 9 10 11 12
2009 1 2 3 4 5 6 7 8 9 10 11 12
2010 1 2 3 4 5 6 7 8 9 10 11 12
2011 1 2 3 4 5 6 7 8 9 10 11 12
2012 1 2 3 4 5 6 7 8 9 10 11 12
2013 1 2 3 4 5 6 7 8 9 10 11 12
Популярные статьи
КомпьютерПресс использует