Подтвердить что ты не робот

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?

4b9b3361

Ответ 1

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

Ответ 2

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

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

Марк