由于我目前正在学习使用WCF服务,我经常在互联网上遇到一些教程,其中提到在使用WCF服务时使用ServiceHost。
这个ServiceHost 到底是什么?
在我当前的项目中,我使用一个WCF服务,并从我的应用程序中引用它,每当我想从我的应用程序中使用它的时候,我就像这样实例化它的ServiceClient:
new MusicRepo_DBAccess_ServiceClient(new InstanceContext(instanceContext), customBinding, endpointAddress);然后从该实例访问我的web方法(OperationContract)(显然,在使用该方法之前先打开它,然后用Open和Close关闭它)
我的WCF服务是我的IIS中的主机,我只是从我的应用程序中访问.svc来实例化ServiceClient。
那么,为什么和在哪里使用ServiceHost呢?
发布于 2009-05-03 03:27:09
ServiceHost基本上为您提供了在非IIS中承载WCF服务或设置WCF服务所需的一切。ServiceHost的一个常见位置是在控制台应用程序或Windows服务中。有关如何在控制台应用程序中设置ServiceHost,请参阅MSDN中的示例代码。
发布于 2009-05-03 08:15:10
您的服务实现只是一个.NET类--您需要为它创建一个运行时环境,以便可以以某种方式执行它。这就是ServiceHost的作用--它将加载您的服务类,设置端点和通道侦听器等等,从而为您的服务类提供一个生存和运行的“生态系统”。
您可以在控制台应用程序、Windows服务甚至Winforms应用程序中实例化ServiceHost类,从而使您的WCF服务类可供外界使用--也可以将该工作委托给IIS或曾经使用。即使是IIS或WAS也会使用ServiceHost来托管您的WCF服务--他们只是在幕后自动地这样做,并在WCF服务的请求出现时使用“随需应变”。
Marc
https://stackoverflow.com/questions/816211
复制相似问题