Учебный курс Технологии и средства разработки...

37
Учебный курс Технологии и средства разработки корпоративных систем Лекция 8 Создание приложений по технологии Windows Communications Foundation Лекции читает кандидат технических наук, доцент Зыков Сергей Викторович

Upload: perry-sloan

Post on 03-Jan-2016

155 views

Category:

Documents


5 download

DESCRIPTION

Учебный курс Технологии и средства разработки корпоративных систем. Лекция 8 Создание приложений по технологии Windows Communications Foundation Лекции читает кандидат технических наук, доцент Зыков Сергей Викторович. Содержание. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Учебный курс Технологии и средства разработки корпоративных систем

Учебный курс

Технологии и средства разработки корпоративных систем

Лекция 8

Создание приложений по технологии Windows Communications Foundation

Лекции читает

кандидат технических наук, доцент

Зыков Сергей Викторович

Page 2: Учебный курс Технологии и средства разработки корпоративных систем

2

Содержание

1. Архитектура SOA

2. WCF – реализация SOA от Microsoft

3. Контракты WCF

4. Каналы WCF

5. Связывание

6. Сценарии поведения

7. Сериализация и кодировка

8. Хостинг

9. Пример сервиса

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Page 3: Учебный курс Технологии и средства разработки корпоративных систем

3

Сервисно-ориентированная архитектура

• Сервисно-ориентированная архитектура (SOA) – это архитектура, основанная на использовании сервисов, определяющая протоколы и методы их взаимодействия, а также методики реализации тех или иных решений на основе сервисов

• SOA осуществляет взаимодействие сервисов, оставляя их независимыми друг от друга

• Сервисы в SOA являются строительными блоками бизнес- процессов

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Page 4: Учебный курс Технологии и средства разработки корпоративных систем

4

Цели Windows Communication Foundation (WCF) – Microsoft-реализации SOA

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Page 5: Учебный курс Технологии и средства разработки корпоративных систем

5

Общая архитектурная схема WCF

Контракты

Исполняющая среда сервисов

Сообщения

Хостинг и активация

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Page 6: Учебный курс Технологии и средства разработки корпоративных систем

6

Программная модель WCF

Клиент Сервер

Сценарий поведения

Сценарий поведения

Связы-вание

Контракт

Канал Адрес

Фабрика

Адрес Канал

«Слуша-тель»

Связы-вание

Контракт

сообщение

КонтрактСвязы-вание

Адрес

Конечная точка

Уровень сообщений

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Сценарий поведения

Сценарий поведения

Page 7: Учебный курс Технологии и средства разработки корпоративных систем

7

Контракты WCF

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Page 8: Учебный курс Технологии и средства разработки корпоративных систем

8

Контракты сервисов (1)

1. При определении используют атрибуты:– ServiceContract (для классов и/или

интерфейсов) – OperationContract (для методов)

2. Определяют направление взаимодействия в сервисах:

– однонаправленное;

– дуплексное

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Page 9: Учебный курс Технологии и средства разработки корпоративных систем

9

Контракт сервиса (2)

// Пример описания контракта сервиса

[ServiceContract]

public interface IService1

{

[OperationContract]

string GetData(int value);

[OperationContract]

CompositeType GetDataUsingDataContract(CompositeType composite);

// TODO: Вписать описания операций сервиса

}

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Page 10: Учебный курс Технологии и средства разработки корпоративных систем

10

Контракт данных (1)

1. использует атрибуты для класса и его членов:• DataContract; • DataMember;• CollectionDataContract

2. обеспечивает сериализацию данных:– DataContractSerializer

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Page 11: Учебный курс Технологии и средства разработки корпоративных систем

11

Контракт данных (2)// пример описания контракта данных [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; } } }

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Page 12: Учебный курс Технологии и средства разработки корпоративных систем

12

Контракт сообщения (1)

• Использует атрибуты:

– MessageContract; – MessageHeader;– MessageBodyMember

• Особенности:

– не более одного входного параметра;

– не более одного возвращаемого значения;

– альтернатива контракту данных;

– не используется совместно с контрактом данных

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Page 13: Учебный курс Технологии и средства разработки корпоративных систем

13

Контракт сообщения (2)

// пример контракта сообщения

[MessageContract]

public class ItemMesage

{

[MessageHeader]

public SomeProtocol ProtocolHeader;

[MessageBody]

public Item Content;

}

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Page 14: Учебный курс Технологии и средства разработки корпоративных систем

14

Каналы WCF

• служат для подготовки и доставки сообщений

• представляются в виде стека

• делятся на: – транспортные;

– протокольные

• Возможные конфигурации:– однонаправленный;

– дуплексный;

– запрос-ответ

• Каналы, фабрики каналов и «слушатели» наследуют единый интерфейс ICommunicationObject

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Page 15: Учебный курс Технологии и средства разработки корпоративных систем

15

Связывание• Связыванием (binding) – называется

сконфигурированный стек каналов WCF

• Связывания образуют стек каналов с помощью специальных элементов

• В WCF по умолчанию определены 9 типов связываний

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Page 16: Учебный курс Технологии и средства разработки корпоративных систем

16

СвязываниеНачало

Требуется интеропера-бельность?

Локальное?

Уровень интероперабельност

и?

Требуются очереди?

Требуются унаследова

нные

MSMQ?

Требуется сеть «точка-

точка»?

Нужен дуп-

лексный режим?

Требуется выделенн

ая безопасно

сть?

basicHttpBinding

wsDualHttpBinding

wsFederationHttpBinding илиws2007Federa-tionHttpBinding

netNamedPipeBinding

netPeerTcpBinding

netTcpBinding

msmqIntegrationBinding

netMsmqBinding

wsHttpBinding илиws2007HttpBinding

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Page 17: Учебный курс Технологии и средства разработки корпоративных систем

17

Сценарий поведения (behavior) - класс WCF, влияющий на поведение системы во время выполнения

• Виды: – сервисный (service) - работает на уровне сервиса, имеет доступ ко всем его

конечным точкам, отвечает за транзакции, авторизацию, создание объектов, аудит

– конечных точек (endpoints) - работает на уровне конечных точек, реализует инспекцию и обработку входящих/исходящих сообщений

– oперационный (operational) - используется на уровне отдельных операций, управляет сериализацией, транзакционным потоком

– обратного вызова (callback) – аналог сценария сервисов, используется для элементов, функционирующих на клиенте при дуплексной коммуникации.

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Page 18: Учебный курс Технологии и средства разработки корпоративных систем

18

Сценарии поведения для управления потоком данных

На клиенте: На сервере:

• Инспекция параметров

• Инспекция сообщений

• Форматирование сообщений

• Инспекция параметров

• Инспекция сообщений

• Форматирование сообщений

• Выбор операции (метода)

• Вызов операции (метода)

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Page 19: Учебный курс Технологии и средства разработки корпоративных систем

19

Сервисные сценарии поведения

Класс WCF Функциональность

InstanceContextMode

Определяет , сколько экземпляров сервиса будут обслуживать запросы (возможные значения Single, PerCall, PerSession)

ConcurrencyMode Определяет число потоков на экземпляр сервиса (возможные значения: Single, Reentrant, Multiple)

ServiceMetadataBehavior

Экспорт и публикация данных о сервисе

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Page 20: Учебный курс Технологии и средства разработки корпоративных систем

20

Операционные сценарии поведения: транзакции

• Виды транзакций:– многошаговые бизнес-процессы;

– короткие транзакции (быстро завершаются, затрагивают небольшое число объектов и зависимостей)

• Для определения транзакционного поведения в WCF необходимо использовать атрибут [OperationBehavior

(TransactionScopeRequired=true)]

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Page 21: Учебный курс Технологии и средства разработки корпоративных систем

21

Сериализация и кодировка в WCF

• Сериализация – процесс преобразования графа объектов в формат XML Information Set (XML Infoset)

• Кодировка – процесс преобразования сообщения WCF в поток байт

• Виды кодировки: – двоичный;

– текстовый;

– Message Transmission Optimization Mechanism (MTOM);

– JavaScript Object Notation;

– Plain-Old-XML (POX)

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Page 22: Учебный курс Технологии и средства разработки корпоративных систем

22

Сравнение методов сериализации WCFСериализатор ХарактеристикиDataContract Serializer

Сериализатор по умолчанию WCF. Основан на схемах XSD. Может использоваться для взаимодействия с внешними приложениями

NetDataConractSerializer

Отличается возможностью добавления информации о типах CLR. Используется только внутри конкретного .NET приложения

XmlSerializer Стандартный сериализатор .NET. Совместим со встроенными типами .NET, позволяет конфигурировать выходной XML, работает с Web-сервисами ASP.NET

DataContractJsonSerializer

Поддерживает нотацию объектов JavaScript.

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Page 23: Учебный курс Технологии и средства разработки корпоративных систем

23

Хостинг

• Service Host (хост) – процесс, ответственный за работу и контекст выполнения сервиса

• В качестве хоста WCF может выступать любой процесс;

• IIS (Internet InformationServices) и WAS (Windows Process Activation Services) имеют встроенную поддержку хостинга

• Для любого хоста необходимо реализовать: – создание объекта класса ServiceHost;

– добавление конечной точки;

– запуск прослушивания сообщений

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Page 24: Учебный курс Технологии и средства разработки корпоративных систем

24

Среда хостинга WAS

• WAS (Windows Process Activation Services) - среда хостинга;

• WAS встроена в Windows Vista и Windows Server 2008;

• WAS позволяет размещать сервисы в гибкой среде, которая не требует обязательного использования протокола обмена http

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Page 25: Учебный курс Технологии и средства разработки корпоративных систем

25

Схема реализации хостинга в среде WASWindows Process

Activation Services (WAS)

httpnet.tc

pnet.pip

emsm

q

Process Host

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Page 26: Учебный курс Технологии и средства разработки корпоративных систем

26

Пример сервиса WCF (1)• Описание - сервис, реализующий функции калькулятора. // Контракт сервиса

[ServiceContract(Namespace=

"http://Microsoft.ServiceModel.Samples")]

public interface ICalculator{

[OperationContract]

double Add(double n1, double n2);

[OperationContract]

double Subtract(double n1, double n2);

[OperationContract]

double Multiply(double n1, double n2);

[OperationContract]

double Divide(double n1, double n2);

}

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Page 27: Учебный курс Технологии и средства разработки корпоративных систем

27

Пример сервиса WCF (2)

// Класс, реализующий контракт:public class CalculatorService : ICalculator{ public double Add(double n1, double n2){ return n1 + n2; } public double Subtract(double n1, double n2){ return n1 - n2; } public double Multiply(double n1, double n2){ return n1 * n2; } public double Divide(double n1, double n2){ return n1 / n2; }}

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Page 28: Учебный курс Технологии и средства разработки корпоративных систем

28

Пример сервиса WCF (3)//конфигурационный файл сервера (начало):<system.serviceModel> <services> <service name="Microsoft.ServiceModel.Samples.CalculatorService" behaviorConfiguration="CalculatorServiceBehavior"> <!-- ICalculator is exposed at the base address provided by

host: http://localhost/servicemodelsamples/service.svc --> <endpoint address="" binding="wsHttpBinding" contract="Microsoft.ServiceModel.Samples.ICalculator" /> <!-- the mex endpoint is explosed at

http://localhost/servicemodelsamples/service.svc/mex --> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services>

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Page 29: Учебный курс Технологии и средства разработки корпоративных систем

29

Пример сервиса WCF (4)//конфигурационный файл сервера (окончание):

<!--For debugging purposes set the includeExceptionDetailInFaults attribute to true-->

<behaviors> <serviceBehaviors> <behavior name="CalculatorServiceBehavior"> <serviceMetadata httpGetEnabled="True"/> <serviceDebug includeExceptionDetailInFaults="False" />

</behavior> </serviceBehaviors> </behaviors> </system.serviceModel>

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Page 30: Учебный курс Технологии и средства разработки корпоративных систем

30

Пример сервиса WCF (5)Код на клиенте (с сокращениями - начало): [System.Diagnostics.DebuggerStepThroughAttribute()] [System.CodeDom.Compiler.GeneratedCodeAttribute ("System.ServiceModel", "3.0.0.0")] public partial class CalculatorClient: System.ServiceModel.ClientBase<Microsoft.ServiceModel.Samples. ICalculator>, Microsoft.ServiceModel.Samples.ICalculator{ public CalculatorClient(){} public CalculatorClient(string endpointConfigurationName): base(endpointConfigurationName){} public CalculatorClient(string endpointConfigurationName, string remoteAddress): base(endpointConfigurationName, remoteAddress){} public CalculatorClient(string endpointConfigurationName, System.ServiceModel.EndpointAddress remoteAddress): base(endpointConfigurationName, remoteAddress){} public CalculatorClient(System.ServiceModel.Channels.Binding binding,System.ServiceModel.EndpointAddress remoteAddress): base(binding, remoteAddress){}

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Page 31: Учебный курс Технологии и средства разработки корпоративных систем

31

Пример сервиса WCF (5) (продолжение)

public double Add(double n1, double n2) { return base.Channel.Add(n1, n2); } public double Subtract(double n1, double n2) { return base.Channel.Subtract(n1, n2); } public double Multiply(double n1, double n2) { return base.Channel.Multiply(n1, n2); } public double Divide(double n1, double n2) { return base.Channel.Divide(n1, n2); } }

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Page 32: Учебный курс Технологии и средства разработки корпоративных систем

32

Пример сервиса WCF (6)Код на клиенте (с сокращениями - окончание): public double Add(double n1, double n2){ return base.Channel.Add(n1, n2); }

public double Subtract(double n1, double n2){ return base.Channel.Subtract(n1, n2); }

public double Multiply(double n1, double n2){ return base.Channel.Multiply(n1, n2); }

public double Divide(double n1, double n2){ return base.Channel.Divide(n1, n2); } }

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Page 33: Учебный курс Технологии и средства разработки корпоративных систем

33

Библиография (1)

Основная литература:http://msdn.microsoft.com/en-us/netframework/aa663324.aspx S. Resnick, R. Crane, C. Bowen. Essential Windows

Communication Foundation. Pearson Education, Inc., 2008 C.Peiris, D. Mulder Pro WCF: Practical Microsoft SOA

Implementation. A-Press, 2007

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Page 34: Учебный курс Технологии и средства разработки корпоративных систем

34

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Библиография (2)

Дополнительная литература:• Соммервилл И. Инженерия программного

обеспечения (6-е изд.), м.: Вильямс, 2002.- 624 с., ил.

• Schach S.R.: Object-Oriented and Classical Software Engineering (5 ed.) McGraw-Hill, 2001, 744 pp.

• Зыков С.В. Проектирование корпоративных порталов.– М.: МФТИ, 2005.– 258 с.

• Буч Г., Рамбо Дж., Джекобсон А. Язык UML. Руководство пользователя: Пер. с англ.- изд. 2-е, М.:ДМК Пресс, С.-Пб.: Питер, 2004.- 432 с.

Page 35: Учебный курс Технологии и средства разработки корпоративных систем

35

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Библиография (3)

Дополнительная литература:

• Жизненный цикл программного обеспечения ИC. http://www.tver.mesi.ru/e-lib/res/661/2/devis_2.html

• Martin Fowler, The New Methodology http://www.martinfowler.com/articles/newMethodology.html

Page 36: Учебный курс Технологии и средства разработки корпоративных систем

36

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Задания для самостоятельной работыРеализовать Web-сервис, который…

1. … реализует функции простого калькулятора: сложение, вычитание, умножение, деление

2. … конвертирует валюты (рубли в доллары и т.п.). Курс – случайная величина с периодом обновления 3 минуты.

3. … принимает как параметр имя пользователя и определяет, сколько раз его вызывал пользователь с этим именем

4. … вычисляет квадратный корень в форме консольного приложения-клтиента.

5. … определяет знак зодиака, по введенной дате

Page 37: Учебный курс Технологии и средства разработки корпоративных систем

37

Корпоративные системы Веб-сервисы и распределенные приложения

ИНТУИТ, 2009

Благодарю за внимание!

Вопросы?

• http://zykov.altweb.ru

[email protected]

[email protected]