Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Режимы параллельного вызова(ConcurrencyMode)




 

Режим Описание
Single Все запросы обслуживаются одним потоком последовательно. Не возникает проблемы синхронизации нескольких клиентов, вызывающих службу: они образуют очередь, их запросы последовательно обрабатываются службой.
Multiple Режим параллельной обработки входящих запросов от всех клиентов с помощью пула потоков. Все эти потоки для клиентов берутся из пула. Чтобы не беспокоиться о синхронизации, можно использовать этот режим совместно с режимом создания экземпляра PerCall.
Reentrant Предполагает вызов в одном потоке (аналог Single), но в этом режиме допустимы рекурсивные вызовы. Пришедший рекурсивный запрос обрабатывается тем же потоком и возвращается назад. Этот режим более сложно устроен, т.к. требует сохранения контекста, чтобы понимать, когда произошел рекурсивный вызов, и не ставить его в очередь. Поэтому этот режим не используется по умолчанию.

 

Когда нужен режим Reentrant? Например, есть служба в режиме Single, вызывающая другую службу. Клиент делает свой вызов к первой службе, она использует для реализации своего функционала внешнюю службу и вызывает вторую, которая снова вызывает первую. Если такое произойдет, получится deadlock (бесконечное ожидание), поскольку первая служба поставит вызов второй в очередь после клиента, а вызов клиента будет ожидать окончания этого вызова, стоящего за ним в очереди. Чтобы избежать такой ситуации, нужен режим Reentrant.


33.6 Пример веб-службы с применением WCF: ручная конфигурация службы

Пример ручного конфигурирования службы:

 

static void Main()

{

var host = new ServiceHost(typeof(WeatherService));

 

var tcpBinding = new NetTcpBinding(SecurityMode.None, false);

tcpBinding.MaxBufferPoolSize = int.MaxValue;

tcpBinding.MaxBufferSize = int.MaxValue;

tcpBinding.MaxReceivedMessageSize = int.MaxValue;

tcpBinding.PortSharingEnabled = false;

tcpBinding.Security.Transport.ClientCredentialType = TcpClientCredentialType.None;

host.AddServiceEndpoint("WcfServiceLibrary1.IWeatherService", tcpBinding, "net.tcp://localhost:5555/Design_Time_Addresses/WcfServiceLibrary1/WeatherService/");

var wsHttpBinding = new WSHttpBinding(SecurityMode.Message);

host.AddServiceEndpoint("WcfServiceLibrary1.IWeatherService", wsHttpBinding, "http://localhost:8731/Design_Time_Addresses/WcfServiceLibrary1/WeatherService/");

 

host.Open();

Console.WriteLine("Press ENTER to stop the service");

Console.ReadLine();

}

 

В примере создается служба с двумя точками доступа: одна точка доступа – по протоколу HTTP через порт 8731, а вторая – по протоколу TCP в бинарном виде через порт 5555.

 

С помощью ручного конфигурирования можно проделать все те действия, которые выполняет система при создании службы при помощи файла App.config. Для реальных систем предпочтительнее использовать файл App.config, позволяющий переносить службу на другой компьютер без перекомпиляции. Кроме того, пример показывает возможность работы двух служб на одном порте.




Поделиться с друзьями:


Дата добавления: 2014-11-16; Просмотров: 319; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.