WCF:什么是ServiceHost?

时间:2009-05-03 03:09:37

标签: c# wcf web-services servicehost

由于我目前正在学习使用WCF服务,因此我经常遇到互联网上的教程,这些教程在使用WCF服务时使用ServiceHost

这究竟是什么ServiceHost


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

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

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

我的WCF服务是我的IIS中的主机,我只是从我的应用中访问.svc来实例化ServiceClient

那么ServiceHost使用的原因和位置是什么?

2 个答案:

答案 0 :(得分:31)

ServiceHost基本上为您提供在非IIS或WAS设置中托管WCF服务所需的一切。 ServiceHost的常见位置是控制台应用程序或Windows服务。请参阅MSDN中的how to setup a ServiceHost in a console app示例代码。

答案 1 :(得分:25)

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

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

马克