Создание приложений для Vista с использованием Windows Communication Foundation Сергій Байдачний Фахівець з питань розробки ПЗ Майкрософт Україна

Содержание

Слайд 2

Создание приложений для Vista с использованием Windows Communication Foundation

Сергій Байдачний
Фахівець з питань

Создание приложений для Vista с использованием Windows Communication Foundation Сергій Байдачний Фахівець
розробки ПЗ
Майкрософт Україна

Віктор Шатохін
Фахівець з питань розробки ПЗ
Майкрософт Україна

Слайд 3

Windows Communication Foundation

"Indigo[WCF] is lubrication for software…it reduces friction between the moving

Windows Communication Foundation "Indigo[WCF] is lubrication for software…it reduces friction between the
parts." -- Don Box

Слайд 4

Windows Communication Foundation (WCF)

Что такое WCF?
Унифицированная платформа построения распределенных приложений
Позволяет создавать

Windows Communication Foundation (WCF) Что такое WCF? Унифицированная платформа построения распределенных приложений
безопасные, надежные и транзакционные Веб-сервисы
Взаимодействие с различными платформами
Интеграция с существующими решениями
Использует и расширяет существующие технологии построения распределенных систем Microsoft
Enterprise Services
System.Messaging
Microsoft .NET Remoting
ASMX
WSE

Слайд 5

Что такое Windows Communication Foundation?

Много, путано и непонятно

Remoting

COM

D/COM

COM+

MSMQ

WSE

ASMX

Один подход на все

Что такое Windows Communication Foundation? Много, путано и непонятно Remoting COM D/COM
случаи жизни

Windows Communication Foundation

Было:

Стало:

Слайд 6

Разработка в Visual Studio .NET 2003

Разработка в Visual Studio .NET 2003

Слайд 7

Разработка в Visual Studio .NET 2003 с использованием WSE

Разработка в Visual Studio .NET 2003 с использованием WSE

Слайд 8

[ServiceContract]
class HelloService
{
[OperationContract]
[PrincipalPermission(SecurityAction.Demand,
Role = “Adminstrators")]
[TransactionFlow(TransactionFlowOption.Mandatory)]
[OperationBehavior(TransactionScopeRequired

[ServiceContract] class HelloService { [OperationContract] [PrincipalPermission(SecurityAction.Demand, Role = “Adminstrators")] [TransactionFlow(TransactionFlowOption.Mandatory)] [OperationBehavior(TransactionScopeRequired =
= true,
TransactionAutoComplete = true)]
String Hello(String Greeting) {return Greeting;}
}








Разработка в Visual Studio 2005 + WCF

Слайд 9

Как это работает?

Данные

Описание сервиса
Адрес, Привязка, Контракт, и Поведение

Канальный уровень
Протоколы, Кодировщики, и каналы

Как это работает? Данные Описание сервиса Адрес, Привязка, Контракт, и Поведение Канальный
передачи

Сообщения

Метаданные

Слайд 10

Клиент

Сервис

Конечные точки

Endpoint

Endpoint

Endpoint

Endpoint

Клиент Сервис Конечные точки Endpoint Endpoint Endpoint Endpoint

Слайд 11

Сервис

Клиент

Адрес, Привязка, Контракт

Сервис Клиент Адрес, Привязка, Контракт

Слайд 12

proxy.cs

Клиент

app/web.config

Публикация & конфигурирование конечных точек

GetMetadata

WSDL

Сервис

?

proxy.cs Клиент app/web.config Публикация & конфигурирование конечных точек GetMetadata WSDL Сервис ?

Слайд 13

Создание сервиса и клиента

Сгенерировать прокси-класс

Выбрать конечную точку

Определить контракт

Реализовать сервис

Задать конечные точки

Опубликовать сервис

Client

Service

Создание сервиса и клиента Сгенерировать прокси-класс Выбрать конечную точку Определить контракт Реализовать

Слайд 14

Создание сервиса

Создание сервиса

Слайд 15

Контракты Overview

Контракт сервиса
Определяет список операций
Отражение CLR типов в WSDL
Контракт данных
Определяет структуру данных
Отражение CLR

Контракты Overview Контракт сервиса Определяет список операций Отражение CLR типов в WSDL
типов в XSD
Контракт сообщения
Определяет структуру сообщения
Отражение CLR типов в SOAP сообщения

Слайд 16

Контракты

[ServiceContract]
public interface IMyInterface
{
[OperationContract]
public MyOutputType MyMethod(MyInputType myData);
}

Как возвращаемые и передаваемые типы

Контракты [ServiceContract] public interface IMyInterface { [OperationContract] public MyOutputType MyMethod(MyInputType myData); }
сариализуются в сообщение?

Сериализация осуществляется с помощью DataContractSerializer по умолчанию
Обработка“встроенных” .NET типов автоматически
Пользовательские типы необходимо определить как Data Contracts:

[DataContract]
public class MyDataContract
{ [DataMember]
public string MyField;
}

[ServiceContract]
[XmlSerializerFormat]
public interface IMyInterface

При желании, можно использовать XmlSerializer:

Слайд 17

Адрес

Часть адреса определяет транспортный протокол.

Адрес Часть адреса определяет транспортный протокол.

Слайд 18

Задание адреса







name=“MyService”>

Задание адреса name=“MyService”> address=“MyEndpointAddress” binding=“wsHttpBinding” bindingConfiguration=“MyReliableBinding” contract=“IMyInterface” />
address=“MyEndpointAddress”
binding=“wsHttpBinding”
bindingConfiguration=“MyReliableBinding”
contract=“IMyInterface” />


Слайд 19

Привязка

Транспорт

IPC

MSMQ

Custom

TCP

HTTP

Протокол

Кодировка

.NET

TX

Custom

Security

Reliability

Привязка

HTTP

TX

Security

Reliability

Text

Text

Binary

Custom

TCP

Binary

Привязка Транспорт IPC MSMQ Custom TCP HTTP Протокол Кодировка .NET TX Custom

Слайд 20

Встроенные привязки

name=“MyService”
address=“MyAddress”
binding=“netTcpBinding”
contract=“IMyInterface”
/>

Встроенные привязки name=“MyService” address=“MyAddress” binding=“netTcpBinding” contract=“IMyInterface” />

Слайд 21


name=“MyService”>
address=“MyAddress”
binding=“wsHttpBinding”
bindingConfiguration=“MyReliableBinding”
contract=“IMyInterface” />




name=“MyService”> address=“MyAddress” binding=“wsHttpBinding” bindingConfiguration=“MyReliableBinding” contract=“IMyInterface” /> enabled=“true” ordered=“true” Модификация встроенных привязок

enabled=“true”
ordered=“true”



Модификация встроенных привязок

Слайд 22





name=“MyService”>
address=“MyAddress”
binding=“customBinding”
bindingConfiguration=“MyCustomBinding”
contract=“IMyInterface”

name=“MyService”> address=“MyAddress” binding=“customBinding” bindingConfiguration=“MyCustomBinding” contract=“IMyInterface” /> Создание собственной привязки
/>











Создание собственной привязки

Слайд 23

Поведение

Поведение локально
Разработчики могут изменять поведение
Параллельное выполнение, модель создания, …
Любые аспекты, которые могут

Поведение Поведение локально Разработчики могут изменять поведение Параллельное выполнение, модель создания, …
повлиять на корректность работы сервиса
Администраторы могут изменить поведение
Пропускная способность, публикация метаданных, информация о маршрутизации, …
Любые аспекты, которые могут повлиять на выполнение сервиса
Все что можно задать в конфигурационном файле, можно сделать в коде
Кто главнее – элементы заданные в коде имеют приоритет над элементами в конфигурационном файле (Атрибуты -> Конфигурационный файл -> Исходный код)

Слайд 24

Возможности изменения поведения

Значения времени ожидания (закрытия, открытия, простоя)
Параллельное выполнение, создание, привязка к

Возможности изменения поведения Значения времени ожидания (закрытия, открытия, простоя) Параллельное выполнение, создание,
потоку
Пропускная способность
Обработка ошибок и исключительных ситуаций
Имперсонификация, авторизация, аудит
AutoEnlist, AutoComplete, Timeout, Isolation
Serialization, MustUnderstand
Метаданные

Слайд 25

Гарантированная доставка

Демонстрация

Гарантированная доставка Демонстрация

Слайд 26

Really Simple Syndication (RSS)

Платформа RSS

Просмотр

Поиск

Подписка

Really Simple Syndication (RSS) Платформа RSS Просмотр Поиск Подписка

Слайд 27

Платформа RSS веб-каналов

Механизм
загрузки

RSS 0.9x
RSS 1.0
RSS 2.0 Atom

Ссылки

Фотографии

Контакты


Новости

Блоги

Фотографии

Музыка

Календари

Списки

Механизм
слияния

Общий список
Веб-каналов

Элементы

Вложения

Объектная модель RSS

Хранилище

Сервис

API

Платформа RSS веб-каналов Механизм загрузки RSS 0.9x RSS 1.0 RSS 2.0 Atom

Слайд 28

API веб-каналов

COM API
Два типа:
Automation-friendly
(IFeed…)
Early-bound
(IXFeed…)
Возможно использование из управляемого кода
Поставляется библиотека типов

FeedsManager

Feed

FeedFolder

FeedItem

FeedEnclosure

API веб-каналов COM API Два типа: Automation-friendly (IFeed…) Early-bound (IXFeed…) Возможно использование

Слайд 29

Работа с подписками

Демонстрация

Работа с подписками Демонстрация