39

由于我目前正在学习使用 WCF 服务,因此我经常在互联网上遇到教程,其中提到ServiceHost在使用 WCF 服务时使用 a 。

这到底是什么ServiceHost


在我当前的项目中,我正在使用 WCF 服务并从我的应用程序中引用它,每当我想从我的应用程序中使用它时,我只需ServiceClient像这样实例化它:

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

然后从该实例访问我的网络方法(OperationContracts)(显然在使用方法之前打开它,然后用 and 关闭OpenClose

我的 WCF 服务托管在我的 IIS 中,我只需.svc从我的应用程序访问ServiceClient.

那么为什么以及在哪里ServiceHost使用呢?

4

2 回答 2

33

ServiceHost 基本上为您提供了在非 IIS 或 WAS 设置中托管 WCF 服务所需的一切。ServiceHost 的常见位置是控制台应用程序或 Windows 服务。请参阅 MSDN 中的示例代码,了解如何在控制台应用程序中设置 ServiceHost

于 2009-05-03T03:27:09.990 回答
28

您的服务实现只是一个 .NET 类 - 您需要为它提供一个运行时环境,以便它可以以某种方式执行。这就是 ServiceHost 的用途——它将加载您的服务类,设置端点和通道侦听器以及所有这些东西,从而为您的服务类提供一个“生态系统”来生存和运行。

您可以自己在控制台应用程序、Windows 服务甚至 Winforms 应用程序中实例化 ServiceHost 类,从而使您的 WCF 服务类对外部世界可用 - 或者您可以将该工作委托给 IIS 或 WAS。甚至 IIS 或 WAS 也将使用 ServiceHost 来托管您的 WCF 服务——它们只是在后台自动执行,并且“按需”——只要有对您的 WCF 服务的请求。

马克

于 2009-05-03T08:15:10.093 回答