SlideShare uma empresa Scribd logo
1 de 27
Windows communication foundation Калита Роман, kalita.roman@gmail.com
SOA, зачем? Распределенные-приложения(четкие границы) Повторное использование кода Кроссплатформенность(совместимость сервисов определяется политикой) Масштабируемость(сервисы самостоятельны) Защита кода (схема и контракт)
WCF, зачем? 	WCF - это единая программная модель, предназначенная для создания сервис-ориентированных приложений Построение распределенных приложений, где есть сервис, который отвечает за бизнес-логику, есть клиенты. При том, если нужны различные транспорты, сценарии безопасности, балансировка нагрузки и т.д.
Проблемы которые решает WCF Объединяет различные программные модели для различных задач Потребность в надежного и защищенного обмена Взаимодействие с клиентами на различных платформах Продуктивная сервис-ориентированая модель программирования
WCF, объединенная модель
WCF, ПРЕИМУЩЕСТВА
WCF, Типичный сценарий Presentation Client Application UI MVC/MVP: View, Presenter “Data Storage and Management” WCF Service Service Application MVC/MVP: Model Business Data Access Data Storage
Основные концепции WCF Endpoint – Точка ПРивязки
Address, Binding, Contract Endpoint A B C A B C A B C Client Service Endpoints Message Address Binding Contract (куда) (как) (что)
WCF. АРХИТЕКТуРА Transport Encoder Protocol(s) Transport Encoder Protocol(s) Service Contract andBehaviors Client Dispatcher Binding Address
WCF. ТИПЫ КОНТРАКТОВ
взаимодействие – OPERATION CONTRACT One Way Client Service Request-Reply Duplex (Dual) Одностороннее (One way):  «Вызвал и забыл» Запрос-Ответ (Request-Reply) Клиент отправляет запрос и блокируется до получения ответа Дуплексное (Duplex) Ответ получаем позже и реагируем на него через callback
WCF. УПРАВЛЕНИЕ ЭКЗЕМПЛЯРАМИ
ПРОСТОЙ WCF SERVICE Service Contract Definition [ServiceContract] public interface IMyInterface { [OperationContract] 	void MyMethod(); } Service Implementation public class MyService: IMyInterface { 	public void MyMethod() {/* do something */} } <service name="MyService"> <endpoint       address=“net.tcp://localhost:1234/MySvc"       binding="netTcpBinding"       contract="IMyInterface“ /> Endpoint Definition Address + Binding  + Contract
WCF. SERVICE ConTRACT using System.ServiceModel;  [ServiceContract] public interface ICalculate {  [OperationContract(IsOneWay=true)]  void StoreProblen( ComplexProblem problem);  [OperationContract]  ComplexProblemGetProblem);  }
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); }
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;    } }
WCF. MESSAGE CONTRACT [MessageContract] public class ComplexProblem { [MessageHeader] public string operation; [MessageBody]public ComplexNumber n1; [MessageBody]public ComplexNumber n2; [MessageBody]public ComplexNumber solution;     // Constructors… }
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>
WCF. CONFIGURING BINDINGS <endpoint address="Calculator"          bindingSectionName="basicProfileBinding"bindingConfiguration="Binding1"          contractType="ICalculator" /> <bindings>  <basicProfileBinding><binding configurationName="Binding1"             hostnameComparisonMode="StrongWildcard"             transferTimeout="00:10:00"             maxMessageSize="65536"             messageEncoding="Text"             textEncoding="utf-8"    </binding></basicProfileBinding></bindings>
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>
WCF. КЛИеНТ ,[object Object]
Прокси класс:
CLR интерфейс и класс представляющий все методы и объекты сервиса
Содержит дополнительные методы для управления прокси классом и соединением,[object Object]
Прокси класс:
CLR интерфес и класс представляющий все методы и объекты сервиса

Mais conteúdo relacionado

Semelhante a Введение в Windows Communication Foundation

Eugene Lisitsky Web Sockets
Eugene Lisitsky Web SocketsEugene Lisitsky Web Sockets
Eugene Lisitsky Web Socketsrit2010
 
6 создание распределенных приложений по технологии remoting
6 создание распределенных приложений по технологии remoting6 создание распределенных приложений по технологии remoting
6 создание распределенных приложений по технологии remotingKewpaN
 
Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработкиIT-Доминанта
 
МАИ, Сети ЭВМ, Лекция №5
МАИ, Сети ЭВМ, Лекция №5МАИ, Сети ЭВМ, Лекция №5
МАИ, Сети ЭВМ, Лекция №5Dima Dzuba
 
Лекции и задания по рнр
Лекции и задания по рнрЛекции и задания по рнр
Лекции и задания по рнрRauan Ibraikhan
 
Вячеслав Смирнов - Инструменты нагрузочного тестирования
Вячеслав Смирнов - Инструменты нагрузочного тестированияВячеслав Смирнов - Инструменты нагрузочного тестирования
Вячеслав Смирнов - Инструменты нагрузочного тестированияElias Fofanov
 
Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...
Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...
Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...Транслируем.бел
 
8 создание приложений по технологии windows communications foundation
8 создание приложений по технологии windows communications foundation8 создание приложений по технологии windows communications foundation
8 создание приложений по технологии windows communications foundationKewpaN
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один goBadoo Development
 
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...CodeFest
 
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...Ilya Kaznacheev
 
Классификация экономико-технических атак. Спикер: Григорий Васильков
Классификация экономико-технических атак. Спикер: Григорий ВасильковКлассификация экономико-технических атак. Спикер: Григорий Васильков
Классификация экономико-технических атак. Спикер: Григорий ВасильковCyber Fund
 
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Yandex
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesAliaksandr Ikhelis
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовSQALab
 
Применение TDD при разработке веб-сервисов
Применение TDD при разработке веб-сервисовПрименение TDD при разработке веб-сервисов
Применение TDD при разработке веб-сервисовMagecom Ukraine
 
Интеграция информационных систем МДМ-банка
Интеграция информационных систем МДМ-банкаИнтеграция информационных систем МДМ-банка
Интеграция информационных систем МДМ-банкаКРОК
 

Semelhante a Введение в Windows Communication Foundation (20)

Eugene Lisitsky Web Sockets
Eugene Lisitsky Web SocketsEugene Lisitsky Web Sockets
Eugene Lisitsky Web Sockets
 
6 создание распределенных приложений по технологии remoting
6 создание распределенных приложений по технологии remoting6 создание распределенных приложений по технологии remoting
6 создание распределенных приложений по технологии remoting
 
Экскурс в мир WEB разработки
Экскурс в мир WEB разработкиЭкскурс в мир WEB разработки
Экскурс в мир WEB разработки
 
МАИ, Сети ЭВМ, Лекция №5
МАИ, Сети ЭВМ, Лекция №5МАИ, Сети ЭВМ, Лекция №5
МАИ, Сети ЭВМ, Лекция №5
 
Wcf Part 2
Wcf Part 2Wcf Part 2
Wcf Part 2
 
Лекции и задания по рнр
Лекции и задания по рнрЛекции и задания по рнр
Лекции и задания по рнр
 
Вячеслав Смирнов - Инструменты нагрузочного тестирования
Вячеслав Смирнов - Инструменты нагрузочного тестированияВячеслав Смирнов - Инструменты нагрузочного тестирования
Вячеслав Смирнов - Инструменты нагрузочного тестирования
 
Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...
Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...
Андрей Богомолов Автоматизация дистрибуции информации о наличии и цене товара...
 
8 создание приложений по технологии windows communications foundation
8 создание приложений по технологии windows communications foundation8 создание приложений по технологии windows communications foundation
8 создание приложений по технологии windows communications foundation
 
Семь тысяч Rps, один go
Семь тысяч Rps, один goСемь тысяч Rps, один go
Семь тысяч Rps, один go
 
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...
CodeFest 2012. Сошников Д. — Разработка мобильных приложений на платформе Mic...
 
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
Анна Якубенко, Татьяна Лебедева - SAP ERP в качестве backend для HTML5 прилож...
 
Классификация экономико-технических атак. Спикер: Григорий Васильков
Классификация экономико-технических атак. Спикер: Григорий ВасильковКлассификация экономико-технических атак. Спикер: Григорий Васильков
Классификация экономико-технических атак. Спикер: Григорий Васильков
 
Artsofte for b2 b
Artsofte for b2 b Artsofte for b2 b
Artsofte for b2 b
 
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
Использование шаблонов и RTTI для конфигурации симулятора флеш-накопителя - Г...
 
Open Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practicesOpen Source Testing Framework: real project example and best practices
Open Source Testing Framework: real project example and best practices
 
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментовРеализация тестового фреймворка на основе OPEN-SOURCE инструментов
Реализация тестового фреймворка на основе OPEN-SOURCE инструментов
 
ASP.NET MVC
ASP.NET MVCASP.NET MVC
ASP.NET MVC
 
Применение TDD при разработке веб-сервисов
Применение TDD при разработке веб-сервисовПрименение TDD при разработке веб-сервисов
Применение TDD при разработке веб-сервисов
 
Интеграция информационных систем МДМ-банка
Интеграция информационных систем МДМ-банкаИнтеграция информационных систем МДМ-банка
Интеграция информационных систем МДМ-банка
 

Mais de akrakovetsky

qiss.IM - wp7rocks.com
qiss.IM - wp7rocks.comqiss.IM - wp7rocks.com
qiss.IM - wp7rocks.comakrakovetsky
 
Семантический HTML5 - iForum
Семантический HTML5 - iForumСемантический HTML5 - iForum
Семантический HTML5 - iForumakrakovetsky
 
Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0akrakovetsky
 
Dependency Injection на примере Unity и NInject
Dependency Injection на примере Unity и NInjectDependency Injection на примере Unity и NInject
Dependency Injection на примере Unity и NInjectakrakovetsky
 
jQuery для ASP.NET разработчиков
jQuery для ASP.NET разработчиковjQuery для ASP.NET разработчиков
jQuery для ASP.NET разработчиковakrakovetsky
 
Функциональное программирование на F#
Функциональное программирование на F#Функциональное программирование на F#
Функциональное программирование на F#akrakovetsky
 
Переходим на Windows 7 и Windows 2008 R2
Переходим на Windows 7 и Windows 2008 R2Переходим на Windows 7 и Windows 2008 R2
Переходим на Windows 7 и Windows 2008 R2akrakovetsky
 
Разработка и раскрутка iPhone приложений "с нуля"
Разработка и раскрутка iPhone приложений "с нуля"Разработка и раскрутка iPhone приложений "с нуля"
Разработка и раскрутка iPhone приложений "с нуля"akrakovetsky
 
Основи розробки ігор на платформі XNA
Основи розробки ігор на платформі XNAОснови розробки ігор на платформі XNA
Основи розробки ігор на платформі XNAakrakovetsky
 
Введение в Microsoft Silverlight 3.0
Введение в Microsoft Silverlight 3.0Введение в Microsoft Silverlight 3.0
Введение в Microsoft Silverlight 3.0akrakovetsky
 
ASP.NET 4.0 Cache Extensibility
ASP.NET 4.0 Cache ExtensibilityASP.NET 4.0 Cache Extensibility
ASP.NET 4.0 Cache Extensibilityakrakovetsky
 
Microsoft .NET User Group Вінниця #4
Microsoft .NET User Group Вінниця #4Microsoft .NET User Group Вінниця #4
Microsoft .NET User Group Вінниця #4akrakovetsky
 
What's new in Visual Studio 2010.
What's new in Visual Studio 2010.What's new in Visual Studio 2010.
What's new in Visual Studio 2010.akrakovetsky
 
Что нового в ASP.NET 4
Что нового в ASP.NET 4Что нового в ASP.NET 4
Что нового в ASP.NET 4akrakovetsky
 
Microsoft User Group Vinnitsya
Microsoft User Group VinnitsyaMicrosoft User Group Vinnitsya
Microsoft User Group Vinnitsyaakrakovetsky
 

Mais de akrakovetsky (17)

Alco calculator
Alco calculatorAlco calculator
Alco calculator
 
qiss.IM - wp7rocks.com
qiss.IM - wp7rocks.comqiss.IM - wp7rocks.com
qiss.IM - wp7rocks.com
 
Семантический HTML5 - iForum
Семантический HTML5 - iForumСемантический HTML5 - iForum
Семантический HTML5 - iForum
 
Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0Что нового в Visual Studio 2010 и .Net 4.0
Что нового в Visual Studio 2010 и .Net 4.0
 
Dependency Injection на примере Unity и NInject
Dependency Injection на примере Unity и NInjectDependency Injection на примере Unity и NInject
Dependency Injection на примере Unity и NInject
 
jQuery для ASP.NET разработчиков
jQuery для ASP.NET разработчиковjQuery для ASP.NET разработчиков
jQuery для ASP.NET разработчиков
 
Функциональное программирование на F#
Функциональное программирование на F#Функциональное программирование на F#
Функциональное программирование на F#
 
Переходим на Windows 7 и Windows 2008 R2
Переходим на Windows 7 и Windows 2008 R2Переходим на Windows 7 и Windows 2008 R2
Переходим на Windows 7 и Windows 2008 R2
 
Разработка и раскрутка iPhone приложений "с нуля"
Разработка и раскрутка iPhone приложений "с нуля"Разработка и раскрутка iPhone приложений "с нуля"
Разработка и раскрутка iPhone приложений "с нуля"
 
Основи розробки ігор на платформі XNA
Основи розробки ігор на платформі XNAОснови розробки ігор на платформі XNA
Основи розробки ігор на платформі XNA
 
Html5
Html5Html5
Html5
 
Введение в Microsoft Silverlight 3.0
Введение в Microsoft Silverlight 3.0Введение в Microsoft Silverlight 3.0
Введение в Microsoft Silverlight 3.0
 
ASP.NET 4.0 Cache Extensibility
ASP.NET 4.0 Cache ExtensibilityASP.NET 4.0 Cache Extensibility
ASP.NET 4.0 Cache Extensibility
 
Microsoft .NET User Group Вінниця #4
Microsoft .NET User Group Вінниця #4Microsoft .NET User Group Вінниця #4
Microsoft .NET User Group Вінниця #4
 
What's new in Visual Studio 2010.
What's new in Visual Studio 2010.What's new in Visual Studio 2010.
What's new in Visual Studio 2010.
 
Что нового в ASP.NET 4
Что нового в ASP.NET 4Что нового в ASP.NET 4
Что нового в ASP.NET 4
 
Microsoft User Group Vinnitsya
Microsoft User Group VinnitsyaMicrosoft User Group Vinnitsya
Microsoft User Group Vinnitsya
 

Введение в Windows Communication Foundation

  • 1. Windows communication foundation Калита Роман, kalita.roman@gmail.com
  • 2. SOA, зачем? Распределенные-приложения(четкие границы) Повторное использование кода Кроссплатформенность(совместимость сервисов определяется политикой) Масштабируемость(сервисы самостоятельны) Защита кода (схема и контракт)
  • 3. WCF, зачем? WCF - это единая программная модель, предназначенная для создания сервис-ориентированных приложений Построение распределенных приложений, где есть сервис, который отвечает за бизнес-логику, есть клиенты. При том, если нужны различные транспорты, сценарии безопасности, балансировка нагрузки и т.д.
  • 4. Проблемы которые решает WCF Объединяет различные программные модели для различных задач Потребность в надежного и защищенного обмена Взаимодействие с клиентами на различных платформах Продуктивная сервис-ориентированая модель программирования
  • 7. WCF, Типичный сценарий Presentation Client Application UI MVC/MVP: View, Presenter “Data Storage and Management” WCF Service Service Application MVC/MVP: Model Business Data Access Data Storage
  • 8. Основные концепции WCF Endpoint – Точка ПРивязки
  • 9. Address, Binding, Contract Endpoint A B C A B C A B C Client Service Endpoints Message Address Binding Contract (куда) (как) (что)
  • 10. WCF. АРХИТЕКТуРА Transport Encoder Protocol(s) Transport Encoder Protocol(s) Service Contract andBehaviors Client Dispatcher Binding Address
  • 12. взаимодействие – OPERATION CONTRACT One Way Client Service Request-Reply Duplex (Dual) Одностороннее (One way): «Вызвал и забыл» Запрос-Ответ (Request-Reply) Клиент отправляет запрос и блокируется до получения ответа Дуплексное (Duplex) Ответ получаем позже и реагируем на него через callback
  • 14. ПРОСТОЙ WCF SERVICE Service Contract Definition [ServiceContract] public interface IMyInterface { [OperationContract] void MyMethod(); } Service Implementation public class MyService: IMyInterface { public void MyMethod() {/* do something */} } <service name="MyService"> <endpoint address=“net.tcp://localhost:1234/MySvc" binding="netTcpBinding" contract="IMyInterface“ /> Endpoint Definition Address + Binding + Contract
  • 15. WCF. SERVICE ConTRACT using System.ServiceModel; [ServiceContract] public interface ICalculate { [OperationContract(IsOneWay=true)] void StoreProblen( ComplexProblem problem); [OperationContract] ComplexProblemGetProblem); }
  • 16. 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); }
  • 17. 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; } }
  • 18. WCF. MESSAGE CONTRACT [MessageContract] public class ComplexProblem { [MessageHeader] public string operation; [MessageBody]public ComplexNumber n1; [MessageBody]public ComplexNumber n2; [MessageBody]public ComplexNumber solution; // Constructors… }
  • 19. 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>
  • 20. WCF. CONFIGURING BINDINGS <endpoint address="Calculator" bindingSectionName="basicProfileBinding"bindingConfiguration="Binding1" contractType="ICalculator" /> <bindings> <basicProfileBinding><binding configurationName="Binding1" hostnameComparisonMode="StrongWildcard" transferTimeout="00:10:00" maxMessageSize="65536" messageEncoding="Text" textEncoding="utf-8" </binding></basicProfileBinding></bindings>
  • 21. 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>
  • 22.
  • 24. CLR интерфейс и класс представляющий все методы и объекты сервиса
  • 25.
  • 27. CLR интерфес и класс представляющий все методы и объекты сервиса
  • 28.
  • 29.
  • 32.

Notas do Editor

  1. Существует три режима создания экземпляра нашего сервисного объекта:PerCall - экземпляр службы создается для каждого вызова от каждого клиента. Этот режим хорош, наверное, для явно одиночных вызовов: Rss, перевод текста, и так далее. PerSession - экземпляр службы создается на период действия сеанса. Этот вариант подходит для большинства встречавшихся мне сценариев достаточно продолжительного взаимодействия, так как позволяет хранить на сервисе служебную информацию между вызовами клиента. Singleton - один экземпляр на всех. Если честно, в голову не приходит ни одного реального проекта, в котором можно подобный режим использовать. Один плюс, который я заметил - к экземпляру службы можно обратиться через его ServiceHost.