advertisement

WCF Part 1

100 %
0 %
advertisement
Information about WCF Part 1
Technology

Published on March 4, 2014

Author: venzhyk

Source: slideshare.net

Description

Слайды с тренинга по основам WCF который я проводил в 2012 году в компании Террасофт.
Большое количество слайдов было позаимствовано с других презентаций и часть из них переработана.

Ссылка на примеры кода: https://www.dropbox.com/s/z30ubs6y7ont4gt/HelloWCF.part1.rar
advertisement

Венжик Игорь

Что такое SOA Архитектура WCF WSDL XSD SOAP Контракты (Contracts) Привязки (Bindings) Поведение (Behaviors) Хостинг (Hosting) Безопасность Расширяемость WCF SOAP vs REST Маршрутизация. Масштабируемость. Отказоустойчивость

Что такое SOA Архитектура WCF Первый WCF сервис

Слабое связывание (Loose coupling) Предсказуемость (Formal contract) Абстрагирование от реализации (Abstraction) Автономность (Autonomy) Повторное использование (Reusability) Принцип композиции (Composability) Открытость (Discoverability)

Сервис2 (*) Клиент a+b a+b*c a/b Сервис (+) Сервис3 (/)

Четкие границы Пересечение границ – четко определено Пересечение границ стоит ресурсов Сервисы самостоятельны Мы должны понимать что используемый нами сервис будет развиваться и у нас нет контроля над этим Сервисы управляются и разрабатываются независимо Сервис, который мы используем может быт недоступен! Сервисы предоставляют схему и контракт, но не код Сервисы взаимодействуют по контрактам, которые не меняются. Сервисы предоставляют только контракт, реализация может меняться и недолжна нас беспокоить

ASMX Binary .NET-.NET Communication .NET Remoting Distributed Transactions Enterprise Services WS-* Specifications Web Services Enhancements Queued Messaging System.Messaging RESTful Communication System.Net Windows Communication Foundation Interoperable Web Services

Конечная точка Клиент C Сервис (Endpoint) B A Адрес (Где) Сообщение A B C Привязки Контракт (Как) (Что)

Клиент Сервис A C B A Адрес (Где) Сообщение B C A B C Привязки Контракт (Как) (Что)

Клиент Сервис A Bv C B A Сообщение B C Bv A B C Bv

Metadata Клиент Сервис A Bv C B A Сообщение B C Bv A B C Bv

Metadata Клиент Сервис A Bv Bv C B A Сообщение Proxy B C Bv A B C Bv ServiceHost<T>() Hosting Environments WAS IIS .exe Windows Service DllHost

Binding (Как?) Contract (Что?) Просторы интернетаAddress (Где?)

WSDL XSD SOAP Контракты (Contracts) Привязки (Bindings) Поведение (Behaviors) Хостинг (Hosting)

WSDL – это язык описания веб-сервисов, основанный на языке XML WSDL документ состоит из трех логических частей Определения типов данных – отправляемые и получаемые сервисом XML сообщений (DataContract) Операции сервиса – список операций, которые может предоставить сервис (ServiceContract) Связывание сервисов – способ общения с сервисом (Binding) http://w3.org/TR/wsdl

Конверт Заголовок Action To From Reply-To, Error Тело SOAP: Envelope SOAP: Header SOAP: Body

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <MessageID>1A01E8FE1C4F4451BFA9B6B13DF647FA</MessageID> <Action>http://tscrm.com/GetStockPrice</Action> </soap:Header> <soap:Body> <m:GetStockPrice xmlns:m="..."> <m:StockName>IBM</m:StockName> </m:GetStockPrice> </soap:Body> </soap:Envelope> <soap:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header/> <soap:Body> <GetStockPriceResponse xmlns="http://tempuri.org/"> <GetStockPriceResult>10 000</GetStockPriceResult> </GetStockPriceResponse> </soap:Body> </soap:Envelope>

Service Data Message • Описывает операции, выполняемые сервисом • CLR тип соответствует WSDL • Структура данных • CLR тип соответствует XSD • Структура сообщений • CLR тип соответствует SOAP сообщению

[ServiceContract] public interface ICalculator { [OperationContract] ComplexProblem SolveProblem (ComplexProblem p); }

SessionMode NotAllowed Allowed (default) Required Name & Namespace ProtectionLevel None Sign EncryptAndSign CallbackContract

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

IsOneWay IsInitiating & IsTerminating Name AsyncPattern Action ReplyAction ProtectionLevel & HasProtectionLevel

Дуплексная связь

[DataContract] public class Player { [DataMember] public string Name = “Anonymous”; [DataMember] public int Age { get; set; } } [CollectionDataContract(Name = “Players", ItemName = “Player"))] public class Team : List<Player> { [DataMember] public string Name { get; private set; } }

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

Контракт данных

[ServiceContract] Методы сервиса отмечаем атрибутом [OperationContract] На уровне контракта сервиса можно затребовать поддержку сессий (SessionMode) Можем указать каким методом начитать взаимодействие с сервисом (IsInitiating) и указать каким методом разрывать соединение (IsTerminating) [DataContract] или [CollectionDataContract] Помним что контракты данных подчиняться общим правилам сериализации. В контракте не может быть циклических ссылок У всех свойств отмеченных атрибутом [DataMember] должны присутствовать оба аксессора get и set Если присутствие одного из аксессоров get или set противоречит бизнес логике, его можно сделать приватным [MessageContract] Если метод сервиса принимает контракт сообщения, у него не может быть дополнительных параметров

Привязки — объекты, используемые для задания сведений о связи, необходимых для подключения к конечной точке сервиса Транспорт – определяет транспортный протокол обмена сообщениями (Http, Tcp, …) Кодирование – определяет используемый тип кодирования сообщений Текст (xml, json, …) Бинарный Другие протоколы Безопасность Гарантированная доставка сообщения Поддержка транзакций

Транспорт Кодировка Security Reliability Протокол WS-* WS-* WS-* HTTP TCP Binary Text HTTP Text TCP Binary WS-* WS-* WS-* Pipes MTOM Custom Custom Custom MSMQ Custom Custom

NP = Named Pipes T = Transport Security S = WS-Security O = One-Way Only BasicHttpBinding Http BP WsHttpBinding Http WS TS WsDualHttpBinding Http WS TS NetTcpBinding Tcp TS O NetNamedPipesBinding NP TS O NetMsmqBinding TS NetPeerTcpBinding MSMQ P2P T TS

<?xml version="1.0" encoding="utf-8" ?> <configuration"> <system.serviceModel> <services> <service type="CalculatorService"> <endpoint address=“http://localhost/calculator" binding="basicHttpBinding" contractType="ICalculator" /> </service> </services> </system.serviceModel> </configuration>

<endpoint address=“http://localhost/calculator" binding="basicHttpBinding" bindingConfiguration="Binding1" contractType="ICalculator" /> <bindings> <basicHttpBinding> <binding name="Binding1“ messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"> <security mode="Message"> <transport clientCredentialType="None"/> <message clientCredentialType="UserName“ /> </security> </binding> </basicHttpBinding> </bindings>

<endpoint address=“http://localhost/calculator" binding="basicHttpBinding" bindingConfiguration="" contractType="ICalculator" /> <bindings> <basicHttpBinding> <binding name="" maxReceivedMessageSize="9999999"> <readerQuotas maxArrayLength="9999999"/> </binding> </basicHttpBinding> </bindings>

<protocolMapping> <add scheme="http" binding="basicHttpBinding"/> <add scheme="net.tcp" binding="netTcpBinding"/> <add scheme="net.pipe" binding="netNamedPipeBinding"/> <add scheme="net.msmq" binding="netMsmqBinding"/> </protocolMapping>

<protocolMapping> <add scheme="http" binding="basicHttpBinding"/> <add scheme="net.tcp" binding="netTcpBinding"/> </protocolMapping> <protocolMapping> <clear scheme="http" /> <add scheme="http" binding="customBinding" bindingConfiguration="binaryHttp" /> </protocolMapping> <bindings> <customBinding> <binding name="binaryHttp"> <binaryMessageEncoding/> <httpTransport/> </binding> </customBinding> </bindings>

Поведение сервиса может быть настроено как в коде сервиса так и в конфигурационном файле Атрибутом ServiceBehavior может быть отмечен только класс, который инкапсулирует в себе весь функционал сервиса Основные параметры AddressFilterMode AutomaticSessionShutdown ReleaseServiceInstanceOnTransactionComplete TransactionIsolationLevel IncludeExceptionDetailInFaults

Service PerSession Single Single Multiple InstanceContextMode ConcurrencyMode PerSession Single PerCall Reentrant Single Multiple

Поведение операций может задаваться только в коде Атрибутом может быть отмечен только метод конкретного класса реализующего контракт Основные параметры Impersonation (олицетворение) TransactionAutoComplete TransactionScopeRequired ReleaseInstanceMode None BeforeCall AfterCall BeforeAndAfterCall

[ServiceBehavior( InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Multiple)] public class Service : IService { [OperationBehavior( ReleaseInstanceMode = ReleaseInstanceMode.AfterCall)] public DateTime GetCurrentDate() { return DateTime.Now; }

Self-hosting Console Application WinForm Application WPF Application Internet Information Services (IIS) Separate (Statealone) ASP Application Windows Service

Http Console App WinForm App WPF App Windows Service Web server IIS6 Web server IIS7 Tcp Named Pipes MSMQ P2P

Вопросы? Пожелания?

Add a comment

Related presentations

Presentación que realice en el Evento Nacional de Gobierno Abierto, realizado los ...

In this presentation we will describe our experience developing with a highly dyna...

Presentation to the LITA Forum 7th November 2014 Albuquerque, NM

Un recorrido por los cambios que nos generará el wearabletech en el futuro

Um paralelo entre as novidades & mercado em Wearable Computing e Tecnologias Assis...

Microsoft finally joins the smartwatch and fitness tracker game by introducing the...

Related pages

Part 1 Introduction to WCF - YouTube

Link for code samples used in the demo http://csharp-video-tutorials.blogspot.com/2013/11/part-1-introduction-to-wcf.html Link for all dot net ...
Read more

WCF Services ( WCF Part 1) - YouTube

WCF Services ( WCF Part 1) ManzoorTheTrainer. Subscribe Subscribed Unsubscribe 5,799 5K. ... How to create a simple WCF Service - Part 1 - Duration: 19:12.
Read more

Authentication and Authorization in WCF Services - Part 1

Robert Green. MCW Technologies. Download . C# version; VB version; Articles in this series. Introduction to Windows Communication Foundation; Hosting ...
Read more

WCF Part 1: Introduction & Service ABC

WCF - Part 1: Introduction & Service ABC . WCF brings all the formerly distinct and separate Microsoft connectivity technologies together under a single ...
Read more

Introduction to WCF: Part 1 - C# Corner

Windows Communication Foundation (WCF) is a framework for building service-oriented applications. Most of WCF functionality is included in a single ...
Read more

Meet the WCF Channel Model – Part 1 | Yasser Shohoud

For the past 5 months or so, I’ve been working on the WCF Core Communications team (with Kenny, Matt, and Steve) where we focus on WCF ...
Read more

Using Custom Behaviors with the BizTalk WCF Adapters, Part 1

One of the advantages of using Windows Communication Foundation (WCF) as a message communication mechanism is the opportunity to extend the functionality ...
Read more

WCF FAQs: Part 1 - C# Corner

This article is a collection of the most frequently asked questions about Windows Communication Foundation at the beginner level. What is WCF? Microsoft ...
Read more

Communication options with WCF - Part 1 - CodeProject

Communication options with WCF - Part 1.; Author: Al Alberto; Updated: 11 Jul 2006; Section: Windows Communication Foundation; Chapter: Platforms ...
Read more

Pub/Sub with WCF (Part 1) | UK Premier Support for Developers

In yesterday’s post I have explored how to use Service Bus queues as a transport to communicate between a WCF client and a service. In today ...
Read more