Введение в windows communication foundation

27
WINDOWS COMMUNICATION FOUNDATION Калита Роман, [email protected]

Upload: akrakovetsky

Post on 18-May-2015

5.790 views

Category:

Technology


2 download

DESCRIPTION

Калита Роман. Введение в Windows Communication Foundation.

TRANSCRIPT

Page 1: Введение в Windows Communication Foundation

WINDOWS COMMUNICATION FOUNDATION

Калита Роман, [email protected]

Page 2: Введение в Windows Communication Foundation

SOA, ЗАЧЕМ?

Распределенные-приложения (четкие границы)

Повторное использование кода Кроссплатформенность

(совместимость сервисов определяется политикой)

Масштабируемость (сервисы самостоятельны)

Защита кода (схема и контракт)

Page 3: Введение в Windows Communication Foundation

WCF, ЗАЧЕМ?

WCF - это единая программная модель, предназначенная для создания сервис-ориентированных приложений

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

Page 4: Введение в Windows Communication Foundation

ПРОБЛЕМЫ КОТОРЫЕ РЕШАЕТ WCF

Объединяет различные программные модели для различных задач

Потребность в надежного и защищенного обмена

Взаимодействие с клиентами на различных платформах

Продуктивная сервис-ориентированая модель программирования

Page 5: Введение в Windows Communication Foundation

WCF, ОБЪЕДИНЕННАЯ МОДЕЛЬ

ASMX

WSE

.NET RemotingCOM+

(Enterprise Services)

MSMQ

Page 6: Введение в Windows Communication Foundation

WCF, ПРЕИМУЩЕСТВАОбъединяет различные программные модели

ASMX, .NET Remoting, MSMQ, Enterprise Services, … и промышленные стандарты

Производительность (быстрее чем ASMX и сравнимо с .NET Remoting)

Хостинг на IIS, сервисах Windows и в standalone приложения как WPF, WinForms,

console apps etc.

Поддержка большинства протоколов: HTTP/HTTPS, TCP, MSMQ, Named pipe etc.

Надежный и защищенный обмен

Page 7: Введение в Windows Communication Foundation

WCF, ТИПИЧНЫЙ СЦЕНАРИЙ

“Data Storage and Management”

UIPresentation

Business

Data StorageData Access

WCF Service

ClientApplication

ServiceApplication

MVC/MVP:Model

MVC/MVP:View, Presenter

Page 8: Введение в Windows Communication Foundation

ОСНОВНЫЕ КОНЦЕПЦИИ WCF

Адрес (address)

• С помощью точки соединения адрес однозначно связывается с привязкой и контрактом

Привязка (binding)

• Сеанс, безопасность, поточность, транзакции, транспорт, кодировка сообщений

Контракт

• Интерфейс службы, определяет требования службы к безопасности, сеансу, задает параметры операции

ENDPOINT – ТОЧКА ПРИВЯЗКИ

Page 9: Введение в Windows Communication Foundation

ADDRESS, BINDING, CONTRACT

Client

Message

Address Binding Contract

(куда) (как) (что)

Endpoint

ABC A B C

Endpoints

A B C

Service

Page 10: Введение в Windows Communication Foundation

WCF. АРХИТЕКТУРА

Transport

Encoder

Protocol(s)

Transport

Encoder

Protocol(s)

ClientService Contract

andBehaviors

Binding

Address

Dispatcher

Page 11: Введение в Windows Communication Foundation

WCF. ТИПЫ КОНТРАКТОВ

Service Contract

Определяет операции и поведение

сервиса

ServiceContract,

OperationContract

attributes

Data Contract

Определяют какие типы

данных принимают и передаются

службой

DataContract

attribute

Message Contract

Определение application-

specific заголовков и контента для

сообщений

Управление над

структурой SOAP или

другого типа сообщений

Fault Contract

Определяет специфические

ошибки для службы, их обработку и

передачу клиенту

FaultContract

attribute

Page 12: Введение в Windows Communication Foundation

ВЗАИМОДЕЙСТВИЕ – OPERATION CONTRACT

Одностороннее (One way): «Вызвал и забыл»

Запрос-Ответ (Request-Reply) Клиент отправляет запрос и блокируется до

получения ответа Дуплексное (Duplex)

Ответ получаем позже и реагируем на него через callback

Client Service

One Way

Request-Reply

Duplex (Dual)

Page 13: Введение в Windows Communication Foundation

WCF. УПРАВЛЕНИЕ ЭКЗЕМПЛЯРАМИ

Уровня вызова

Для каждого запроса клиента создается новый

экземпляр сервиса (службы)

ServiceBehavior attribute,

option - PerCall

Сеансовые службы

Создается один экземпляр службы

для каждого подключения

клиента

ServiceBehavior attribute,

option - PerSession

Синглетные службы

Все подключения

обслуживаются одним

экземпляром

ServiceBehavior attribute,

option - Single

Page 14: Введение в Windows Communication Foundation

ПРОСТОЙ WCF SERVICE[ServiceContract]public interface IMyInterface{

[OperationContract]void MyMethod();

}

public class MyService: IMyInterface{

public void MyMethod() {/* do something */}}

<service name="MyService"> <endpoint address=“net.tcp://localhost:1234/MySvc" binding="netTcpBinding" contract="IMyInterface“ />

Service Contract Definition

Service Implementation

Endpoint Definition

Address + Binding

+ Contract

Page 15: Введение в Windows Communication Foundation

WCF. SERVICE CONTRACT

using System.ServiceModel;

[ServiceContract]public interface ICalculate {

[OperationContract(IsOneWay=true)] void StoreProblen( ComplexProblem problem); [OperationContract] ComplexProblem GetProblem);

}

Page 16: Введение в Windows Communication Foundation

WCF. DUPLEX РЕЖИМ

[ServiceContract(Session=true, CallbackContract=typeof(ICalculatorResults)]public interface ICalculatorProblems{ [OperationContract(IsOneWay=true)] void SolveProblem (ComplexProblem p);}

public interface ICalculatorResults{ [OperationContract(IsOneWay=true)] void Results(ComplexProblem p);}

Page 17: Введение в Windows Communication Foundation

WCF. DATA CONTRACT

[DataContract]public class ComplexNumber{ [DataMember] public double Real = 0.0D; [DataMember] public double Imaginary = 0.0D; public ComplexNumber(double r, double i) { this.Real = r; this.Imaginary = i; }}

Page 18: Введение в Windows Communication Foundation

WCF. MESSAGE CONTRACT

[MessageContract]public class ComplexProblem{ [MessageHeader] public string operation; [MessageBody] public ComplexNumber n1; [MessageBody] public ComplexNumber n2; [MessageBody] public ComplexNumber solution; // Constructors…}

Page 19: Введение в Windows Communication Foundation

WCF. DEFINING ENDPOINTS

<?xml version="1.0" encoding="utf-8" ?><configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0"> <system.serviceModel> <services> <service serviceType="CalculatorService"> <endpoint address="Calculator" bindingSectionName="basicProfileBinding" contractType="ICalculator" /> </service> </services> </system.serviceModel></configuration>

Page 20: Введение в Windows Communication Foundation

WCF. CONFIGURING BINDINGS

<bindings> <basicProfileBinding> <binding configurationName="Binding1" hostnameComparisonMode="StrongWildcard" transferTimeout="00:10:00" maxMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" </binding> </basicProfileBinding></bindings>

<endpoint address="Calculator" bindingSectionName="basicProfileBinding" bindingConfiguration="Binding1" contractType="ICalculator" />

Page 21: Введение в Windows Communication Foundation

WCF. CUSTOM BINDINGS

<bindings> <customBinding> <binding configurationName="Binding1"> <reliableSession bufferedMessagesQuota="32" inactivityTimeout="00:10:00" maxRetryCount="8" ordered="true" /> <httpsTransport manualAddressing="false" maxMessageSize="65536" hostnameComparisonMode="StrongWildcard"/> <textMessageEncoding maxReadPoolSize="64" maxWritePoolSize="16" messageVersion="Default" encoding="utf-8" /> </binding> </customBinding></bindings>

Page 22: Введение в Windows Communication Foundation

WCF. КЛИЕНТ

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

Прокси класс: CLR интерфейс и класс

представляющий все методы и объекты сервиса

Содержит дополнительные методы для управления прокси классом и соединением

Page 23: Введение в Windows Communication Foundation

WCF. КЛИЕНТ

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

Прокси класс: CLR интерфес и класс

представляющий все методы и объекты сервиса

Содержит дополнительные методы для управления прокси классом и соединением

Page 24: Введение в Windows Communication Foundation

WCF. ГЕНЕРАЦИЯ ПРОКСИ КЛАССА В VS

В Visual Studio 2005/2008

Page 25: Введение в Windows Communication Foundation

WCF. DEMOS

DEMO

Page 26: Введение в Windows Communication Foundation

РЕСУРСЫ http://msdn2.microsoft.com/en-us/netframework/

aa663324.aspx - MSDN Windows Communication Foundation portal

http://msdn.microsoft.com/en-us/library/ms751514.aspx - WCF samples

http://www.codeproject.com/KB/WCF/WCFOverview.aspx - WCF overview

Дж. Лёве, Создание служб WCF, СПб.: Питер, O’Reilly, 2008

Page 27: Введение в Windows Communication Foundation

ВОПРОСЫ И ОТВЕТЫ

?