как самостоятельно Хостинг без iis - PullRequest
2 голосов
/ 26 марта 2010

Читая о WCF, у нас есть возможность самостоятельного хостинга, одно ограничение здесь - мы сами должны управлять жизненным циклом хост-процесса. Здесь я изучаю возможность запуска службы без IIS и самостоятельного хостинга.

Мало что приходит на ум - Как будет работать управление запросами здесь. В случае IIS он управляет запросом и дает контроль над dotnet в определенном потоке. В отсутствие IIS нам нужно самим писать код для управления входящими запросами (скажем, через порт tcp), или WCF предоставляет некоторые классы для управления потоками запросов и порождений для обработки каждого потока.

  • Я знаю, что в случае самостоятельного хостинга это должна быть служба Windows. В случае самостоятельного хостинга, как я могу нажать на количество одновременных запросов на сервере, им можно управлять, ограничив пул потоков? или мы можем настроить это через wcf?

Спасибо постоянный ток

Ответы [ 2 ]

6 голосов
/ 26 марта 2010

Самостоятельный хостинг не требует службы Windows. Вы можете самостоятельно размещаться в консольном приложении, если хотите. Просто службы Windows являются хорошим решением для самостоятельного размещения, если вам требуется круглосуточный доступ, но вы не хотите по какой-либо причине использовать IIS.

Управление жизненным циклом хост-процесса не имеет большого значения. Я использую службу Windows для размещения службы WCF. Я просто запускаю свою службу WCF в OnStart() обратном вызове моей службы Windows, например:

private ServiceHost _host;
protected override void OnStart(string[] args)
{
    _host = new ServiceHost(typeof(CalculatorService));
    _host.Open();
}

Аналогично, я закрываю службу WCF в OnStop() обратном вызове моей службы Windows:

protected override void OnStop()
{
    if (_host != null) _host.Close();
}

Это эффективно связывает жизненный цикл службы WCF с жизненным циклом службы Windows. Вы можете сделать что-то подобное в любом приложении - консоли, приложении Windows Forms и т. Д. Например, в обратном вызове OnLoad() вашего приложения Windows Forms запустите ServiceHost для службы WCF и закройте его при выходе из приложения. , Достаточно просто.

WCF дает вам большую гибкость в обработке входящих запросов. Например, вы можете сделать свою службу WCF одноэлементной, что означает, что у вас будет один и только один экземпляр вашей службы WCF. В этом случае все входящие запросы обрабатываются одним экземпляром. Но вы также можете настроить службу WCF на каждый входящий запрос с новым экземпляром службы WCF. Это позволяет вашему сервису лучше масштабироваться, но, вероятно, потребует от вас синхронизации любого доступа к вашему внутреннему хранилищу данных, например, к базе данных. Вы можете контролировать это поведение, используя InstanceContextMode свойство ServiceBehaviorAttribute в службе WCF.

Когда я читаю ваш вопрос еще раз, кажется, что вы только изучаете WCF, поэтому я надеюсь, что ничего из этого не ошеломило вас. Посмотрите мой ответ на этот вопрос , чтобы найти ссылки, которые могут оказаться вам полезными.

1 голос
/ 26 марта 2010

Чтобы ответить на ваш конкретный вопрос, хостинговая инфраструктура WCF раскрутит прослушиватель HTTP, который работает с HTTP.SYS (то же самое, что использует IIS), который будет прослушивать трафик на конкретный порт / адрес, который вы настраиваете.

По любым другим вопросам, я уверен этот раздел в MSDN ответит на них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...