Вопрос

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

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


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

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

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

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

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

Это было полезно?

Решение

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

Другие советы

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

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

Марк

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top