Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемdev.net.ua
2 Создание приложений для Vista с использованием Windows Communication Foundation Сергій Байдачний Фахівець з питань розробки ПЗ Майкрософт Україна Віктор Шатохін Фахівець з питань розробки ПЗ Майкрософт Україна
3 Windows Communication Foundation "Indigo[WCF] is lubrication for software…it reduces friction between the moving parts." -- Don BoxDon Box
4 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 Было: Стало:
6 20,379 строк кода безопасность 5,988 строк кода надежная доставка 25,507 строк кода транзакционность Всего 56,296 4,442 строк кода вспомогательные ф-ии class HelloService { [WebMethod] public String Hello(String Greeting) { X509CertificateCollection collection = new X509CertificateCollection(); IntPtr blob = Marshal.AllocHGlobal(Marshal.SizeOf( typeof(CRYPTOAPI_BLOB))); IntPtr data = (IntPtr)((int)blob + Marshal.SizeOf(typeof(CRYPTOAPI_BLOB))); … SeqAckRange range = new SeqAcknRange(id, low, high ); SeqAckRange[] ranges = { range }; ReliableQueue.ProcessAcks( ranges ); … BeginTransaction (NULL, ISOLATIONLEVEL_SERIALIZABLE, 0, pITxOptions, &pITransaction); … return Greeting; } Разработка в Visual Studio.NET 2003
7 10 строк кода безопасность 1,804 строк кода надежная доставка 25,507 строк кода транзакционность Всего 27,321 class HelloService { [WebMethod] public String Hello(String Greeting) { foreach ( SecurityToken tok in requestContext.Security.Tokens { X509SecurityToken token = tok as X509SecToken } … SeqAckRange range = new SeqAcknRange(id,low,high ); SeqAckRange[] ranges = { range }; ReliableQueue.ProcessAcks( ranges ); … BeginTransaction (NULL, ISOLATIONLEVEL_SERIALIZABLE, 0, pITxOptions, &pITransaction); … return Greeting; } Разработка в Visual Studio.NET 2003 с использованием WSE
8 1 строка кода + 2 конф. эл. безопасность 0 строк кода + 1 конф. эл. надежная доставка 2 строки кода + 1 конф. эл. транзакционность Всего: 3 строки кода+ 4 конф. эл. [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 WCF
9 Как это работает? Данные Описание сервиса Адрес, Привязка, Контракт, и Поведение Канальный уровень Протоколы, Кодировщики, и каналы передачи Сообщения Метаданные
10 Клиент Сервис Конечные точки Endpoint
11 Сервис CBA CBA Клиент Адрес, Привязка, Контракт A BC Адрес Где? Контракт Что? Привязка Как? CBA
12 proxy.cs Клиент app/web.config Публикация & конфигурирование конечных точек GetMetadata WSDL Сервис CBA CBA CBA CBA CBA CBA ?
13 Создание сервиса и клиента Сгенерировать прокси-класс Выбрать конечную точку Определить контракт Реализовать сервис Задать конечные точки Опубликовать сервисClient Service
14 Создание сервиса [ServiceContract] public interface IMyInterface { [OperationContract] public MyOutputType MyMethod(MyInputType myData); } Определить контракт Задать Конечную точку [ServiceBehavior(InstanceContextMode=Single] public class MyService: IMyInterface { public MyOutputType MyMethod(MyInputType myData) { //my code … } Реализовать сервис
15 Контракты Overview Контракт сервиса –Определяет список операций –Отражение CLR типов в WSDL Контракт данных –Определяет структуру данных –Отражение CLR типов в XSD Контракт сообщения –Определяет структуру сообщения –Отражение CLR типов в SOAP сообщения
16 Контракты [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 Адрес Часть адреса определяет транспортный протокол. NetNamedPipesBinding NetMSMQBinding NetTcpBinding BasicHttpBinding, WsHttpBinding Привязка net.pipe://… net.msmq://… net.tcp://… Схема
18 Задание адреса
19 Привязка Транспорт IPCMSMQ Custom TCPHTTP Протокол Кодировка.NETTX Custom SecurityReliability Привязка HTTPTXSecurity Reliability Text Binary Custom TCP Binary
20 Встроенные привязки NetPeerTcpBinding NetMSMQBinding NetNamePipesBinding NetTcpBinding WsHttpBinding BasicHttpBinding Привязка.NET Peer Peer.NET.NET черезMSMQ.NET Безопасность, надежная доставка, дуплекс.NET Безопасность, надежная доставка, дуплекс WS-* Поддержка WS-Security, WS-RM, WS-Tx Basic Profile 1.1 для работы с ASMX Назначение
22 Создание собственной привязки
23 Поведение Поведение локально Разработчики могут изменять поведение –Параллельное выполнение, модель создания, … –Любые аспекты, которые могут повлиять на корректность работы сервиса Администраторы могут изменить поведение –Пропускная способность, публикация метаданных, информация о маршрутизации, … –Любые аспекты, которые могут повлиять на выполнение сервиса Все что можно задать в конфигурационном файле, можно сделать в коде –Кто главнее – элементы заданные в коде имеют приоритет над элементами в конфигурационном файле (Атрибуты -> Конфигурационный файл -> Исходный код)
24 Возможности изменения поведения Значения времени ожидания (закрытия, открытия, простоя) Параллельное выполнение, создание, привязка к потоку Пропускная способность Обработка ошибок и исключительных ситуаций Имперсонификация, авторизация, аудит AutoEnlist, AutoComplete, Timeout, Isolation Serialization, MustUnderstand Метаданные …
25 Гарантированная доставка Демонстрация
26 Really Simple Syndication (RSS) Платформа RSS Просмотр Поиск Подписка Общее хранилище RSS веб-каналов Общий список RSS веб-каналов Механизм синхронизации RSS
27 Платформа RSS веб-каналов Механизм загрузки RSS 0.9x RSS 1.0 RSS 2.0 Atom СсылкиФотографииКонтакты… Новости БлогиФотографииМузыкаКалендариСписки Механизм слияния Общий список Веб-каналов ЭлементыВложения Объектная модель RSS Хранилище Сервис API
28 API веб-каналов COM API Два типа: –Automation-friendly (IFeed…) –Early-bound (IXFeed…) Возможно использование из управляемого кода –Поставляется библиотека типов FeedsManager Feed FeedFolder FeedItem FeedEnclosure
29 Работа с подписками Демонстрация
31 © 2007 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries. The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.