WCF: что такое ServiceHost?

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

что это ServiceHost ?


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

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

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

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

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

2 ответов


ServiceHost в основном предоставляет вам все необходимое для размещения службы WCF в не-IIS или настройки. Общим местом для ServiceHost будет консольное приложение или служба Windows. См. пример кода из MSDN для Как настроить ServiceHost в консольном приложении.


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

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

Марк