BC/NW 2008, №2 (13): 3.2

ИСПОЛЬЗОВАНИЕ ТЕХНОЛОГИИ Microsoft.NET
Framework 3.5 WCF (Indigo) ДЛЯ СОЗДАНИЯ СИСТЕМ
РАСПРЕДЕЛЕННОЙ ОБРАБОТКИ ДАННЫХ

 

Курдюкова В.А. 

 

(Москва, Московский энергетический институт (ТУ), Россия)

 

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

Рассмотрим программную систему распределенной обработки данных, специального назначения (рисунок 1). Система представляет собой набор прикладных программных компонентов, выполняющих непрерывную локальную обработку данных и асинхронно обменивающихся между собой блоками данных, имеющими, как правило, фиксированный формат.


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Рис. 1. Пример системы распределенной обработки данных

Будем считать, что прикладной программный компонент является приложением, запущенным на вычислительной машине. Машины, на которых могут размещаться один или более компонентов, соединены в локальную вычислительную сеть. Таким образом, имеется набор приложений, децентрализовано выполняемых на разных машинах вычислительной сети. Необходимо реализовать асинхронный обмен данными между этими приложениями.

В 2007 г. компания Microsoft представила продукт .NET Framework 3.5, который включил в себя систему Windows Communication Foundation (WCF, Indigo), представляющую собой набор библиотек и классов для построения распределенных программных систем.

Рис. 2. Распределенное приложение WCF

Данный продукт (система и поддерживаемая ею технология) обеспечивают сервисно-ориентированный подход (Service Oriented Architecture, SOA) к построению распределенных приложений.

Как показано на рисунке 3, каждый сервис Indigo включает три составные части:

·                         сервисный класс, реализованный на C#, VB.NET или каком-либо другом CLR-языке, имеющий один или более методов;

·                         host-среду – домен приложения и процесс, в которых сервис выполняется;

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

Рис. 3. Принцип работы WCF приложений

Применительно к рассматриваемой системе распределенной обработки данных, можно использовать следующую диаграмму классов, в полной мере обеспечивающих ее реализацию (рисунок 4).

Рис. 4. Диаграмма классов реализации

Прикладной компонент обработки данных представляется объектом класса, унаследованного от BaseComponent, который реализует интерфейс IComponent.  IComponent умеет:

·                         читать данные извне (присваивать читаемые значения своим внутренним переменным) – ReceiveData,

·                         производить операции над данными – ProceedData,

·                         пересылать результаты вычислений вовне – SendData;

Сетевой сервис IComponentNetworkServiceIndigo Service, являющийся сердцевиной решения, осуществляет пересылку данных от одного прикладного компонента к другому – Forward Data. При этом возникает событие SendDataEvent, которое сообщает компоненту-адресату, что ему передается блок данных. При пересылке данных сетевой сервис опирается на конфигурацию сети, хранящуюся в конфигурационном файле Configuration File.

Каждый прикладной компонент имеет так называемый прокси-компонент, который осуществляет его связь с сетевым сервисом, осуществляющим пересылку данных между прикладными компонентами. Прокси-компонент отдает входные данные компоненту и передает результаты сетевому сервису для дальнейшей пересылки.

Технология WCF (Indigo) не позволяет реализовать стандартным образом подписку клиентов (в нашем случае – прокси-компонентов) на события сервисов (в нашем случае на события сервиса IComponentNetworkService). Поэтому предлагается использовать так называемый дуплексный метод. Суть метода заключается в том, что создаются два сервиса Indigo: IComponentNetworkService и IComponentProxyService. В момент возникновения события пересылки данных сервис IComponentNetworkService обращается к сервису IComponentProxyService компонента-адресата сети, вызывая у него метод-оповещение.

В заключении подведем итоги. Для реализации распределенных программных систем обработки данных, использующих нескольких приложений, запущенных в общем случае на разных машинах вычислительной сети и асинхронно обменивающихся между собой данными, предлагается использовать технологию Microsoft WCF (Indigo). Эта технология, в отличие от других средств и методов создания распределенных приложений, предоставляет высокоуровневый унифицированный инструментарий, позволяющий реализовывать системы различной сложности, минимизировав затраты времени и ресурсов.[1]

ЛИТЕРАТУРА

1. Juval Lowy, "Programming WCF Services", O'Reilly Media, ISBN 0596526997, February 20, 2007, 634 pages