WCF: что такое ServiceHost? - PullRequest
37 голосов
/ 03 мая 2009

Поскольку в настоящее время я учусь пользоваться Службами WCF, я постоянно сталкиваюсь с учебниками в Интернете, в которых упоминается использование ServiceHost при использовании Службы WCF.

Что именно это ServiceHost?


В моем текущем проекте я использую Службу WCF и имею ссылку на него из своего приложения, и всякий раз, когда я хочу использовать его из своего приложения, я просто создаю экземпляр ServiceClient, например:

new MusicRepo_DBAccess_ServiceClient(new InstanceContext(instanceContext), customBinding, endpointAddress);

И затем получить доступ к моим веб-методам (OperationContract s) из этого экземпляра (очевидно, открывая его перед использованием метода и затем закрывая его с помощью Open и Close)

Моя служба WCF является хостом в моем IIS, и я просто обращаюсь к .svc из своего приложения, чтобы создать экземпляр ServiceClient.

Так почему и где используется ServiceHost?

Ответы [ 2 ]

31 голосов
/ 03 мая 2009

ServiceHost в основном предоставляет вам все необходимое для размещения службы WCF в настройках, отличных от IIS или WAS. Распространенным местом для ServiceHost является консольное приложение или служба Windows. См. Пример кода из MSDN для , как настроить ServiceHost в консольном приложении .

25 голосов
/ 03 мая 2009

Ваша реализация сервиса - это просто класс .NET - вам нужно иметь среду выполнения для него, чтобы его можно было как-то выполнить. Это то, для чего предназначен ServiceHost - он загрузит ваш класс обслуживания, настроит конечные точки и прослушиватели каналов и все такое, и, таким образом, предоставит вашему классу обслуживания «экосистему» ​​для жизни и работы.

Вы можете создать экземпляр класса ServiceHost самостоятельно в консольном приложении, службе Windows или даже приложении Winforms и, таким образом, сделать свой класс службы WCF доступным для внешнего мира - или вы можете делегировать эту работу IIS или WAS. Даже IIS или WAS будут использовать ServiceHost для размещения вашей службы WCF - они просто делают это автоматически за кулисами и «по требованию» - всякий раз, когда поступает запрос на вашу службу WCF.

Марк

...