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

Презентация:



Advertisements
Похожие презентации
Microsoft TechDays Людмила Шайкина Quarta Consulting
Advertisements

Microsoft TechDays Никоноров Евгений разработчик EPAM Systems.
Microsoft TechDays Евгений Марченков Эксперт по технологиям разработки ПО Microsoft.
Microsoft TechDays Николай Миляев консультант Microsoft.
Microsoft TechDays Евгений Марченков Эксперт по технологиям разработки ПО Microsoft.
Microsoft TechDays Леонид Шапиро MCT ЦКО «Специалист»
Microsoft TechDays Павел Маслов MVP, Directory Services.
Microsoft TechDays Золотовицкий Аркадий Директор по производству «Интеллектуальные системы»
Microsoft TechDays Константин Трещев MCITP: Enterprise Administrator
Microsoft TechDays Заграничнов Александр Microsoft.
Новые продукты Microsoft для повышения качества и эффективности образования Амит Миталь Старший вице-президент Microsoft по развитию социальных проектов.
Валерия Казбан, менежер по работе с государственным сектором, Майкрософт Украина Опыт внедрения концепции е- управления Майкрософт Украина: локальные особенности.
Msdevcon.ru#msdevcon. OPEN SOURCE РЕШЕНИЯ В ОБЛАКЕ WINDOWS AZURE Воркачёв Владимир.
На примере одного дня из жизни руководителя. Поездка в Милан.
Microsoft TechDayshttp:// Коршиков Андрей Фёдорович ведущий инженер-программист ЗАО «НИПИ «ИнжГео» MCT, MCITP, MCPD.
Microsoft TechDays Панов Никита Технический инженер Microsoft.
Вычислительные ресурсы и приложения доступные через Интернет в виде сервисов Облачные вычисления.
DevCon12 // msdevcon.ru #msdevcon мая, 2012 г. Microsoft.
Microsoft TechDays Марат Бакиров Эксперт по разработке ПО Microsoft
Ромуальд Здебский Microsoft.
Транксрипт:

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

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

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

Что такое Windows Communication Foundation? Много, путано и непонятно Remoting COM D/COM COM+ MSMQ WSE ASMX Один подход на все случаи жизни Windows Communication Foundation Было: Стало:

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

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

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

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

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

Сервис CBA CBA Клиент Адрес, Привязка, Контракт A BC Адрес Где? Контракт Что? Привязка Как? CBA

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

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

Создание сервиса [ServiceContract] public interface IMyInterface { [OperationContract] public MyOutputType MyMethod(MyInputType myData); } Определить контракт Задать Конечную точку [ServiceBehavior(InstanceContextMode=Single] public class MyService: IMyInterface { public MyOutputType MyMethod(MyInputType myData) { //my code … } Реализовать сервис

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

Контракты [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:

Адрес Часть адреса определяет транспортный протокол. NetNamedPipesBinding NetMSMQBinding NetTcpBinding BasicHttpBinding, WsHttpBinding Привязка net.pipe://… net.msmq://… net.tcp://… Схема

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

Привязка Транспорт IPCMSMQ Custom TCPHTTP Протокол Кодировка.NETTX Custom SecurityReliability Привязка HTTPTXSecurity Reliability Text Binary Custom TCP Binary

Встроенные привязки 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 Назначение

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

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

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

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

Really Simple Syndication (RSS) Платформа RSS Просмотр Поиск Подписка Общее хранилище RSS веб-каналов Общий список RSS веб-каналов Механизм синхронизации RSS

Платформа RSS веб-каналов Механизм загрузки RSS 0.9x RSS 1.0 RSS 2.0 Atom СсылкиФотографииКонтакты… Новости БлогиФотографииМузыкаКалендариСписки Механизм слияния Общий список Веб-каналов ЭлементыВложения Объектная модель RSS Хранилище Сервис API

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

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

© 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.