WCF: Что такое ServiceHost?
Поскольку я в настоящее время участвую в использовании служб WCF, я постоянно сталкиваюсь с учебными материалами в Интернете, в которых упоминается использование ServiceHost
при использовании службы WCF.
Что именно это ServiceHost
?
В моем текущем проекте я использую службу WCF и имею ссылку на нее из своего приложения, и всякий раз, когда я хочу ее использовать из своего приложения, я просто создаю его ServiceClient
, например:
new MusicRepo_DBAccess_ServiceClient(new InstanceContext(instanceContext), customBinding, endpointAddress);
И затем получите доступ к моим веб-методам (OperationContract
s) из этого экземпляра (очевидно, открыв его перед употреблением метода и закрыв его с помощью Open
и Close
)
Моя служба WCF является хостом в моем IIS, и я просто обращаюсь к .svc
из моего приложения, чтобы создать экземпляр ServiceClient
.
Итак, почему и где используется ServiceHost
?
Ответы
Ответ 1
Служба ServiceHost предоставляет вам все необходимое для размещения службы WCF в настройках, отличных от IIS или WAS. Обычным местом для ServiceHost будет консольное приложение или служба Windows. См. Пример кода из MSDN для как настроить ServiceHost в консольном приложении.
Ответ 2
Реализация вашего сервиса - это просто класс .NET - для этого вам необходимо иметь среду выполнения, поэтому ее можно каким-то образом выполнить. Для чего нужен ServiceHost - он загрузит ваш класс обслуживания, настроит конечные точки и прослушиватели каналов и все это, и, таким образом, ваш класс обслуживания станет "экосистемой", чтобы жить и работать.
Вы можете создать экземпляр класса ServiceHost самостоятельно в консольном приложении, службе Windows или даже в приложении Winforms и, таким образом, сделать свой класс обслуживания WCF доступным для внешнего мира - или вы можете делегировать эту работу IIS или WAS. Даже IIS или WAS будут использовать ServiceHost для размещения вашей службы WCF - они просто делают это автоматически за кулисами и "по запросу" - всякий раз, когда приходит запрос на ваш сервис WCF.
Марк