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
используется?
2 ответов
ServiceHost в основном предоставляет вам все необходимое для размещения службы WCF в не-IIS или настройки. Общим местом для ServiceHost будет консольное приложение или служба Windows. См. пример кода из MSDN для Как настроить ServiceHost в консольном приложении.
ваша реализация службы-это просто класс .NET - вам нужно иметь среду выполнения для него, чтобы он мог быть выполнен каким-то образом. Вот для чего предназначен ServiceHost - он загрузит ваш класс обслуживания, настроит конечные точки и прослушиватели каналов и все такое, и, таким образом, даст вашему классу обслуживания "экосистему" для жизни и работы.
вы можете создать экземпляр класса ServiceHost самостоятельно в консольном приложении, службе Windows или даже в приложении Winforms и таким образом Класс службы WCF доступен для внешнего мира - или вы можете делегировать эту работу IIS или WAS. Даже IIS или WAS будут использовать ServiceHost для размещения вашей службы WCF - они просто делают это автоматически за кулисами и" по требованию " - всякий раз, когда приходит запрос на вашу службу WCF.
Марк