WCF:什么是ServiceHost?

正如我目前正在学习使用WCF服务,我经常遇到互联网上提到使用WCF服务时使用ServiceHost教程。

这个ServiceHost究竟是什么?


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

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

然后从那个实例访问我的web方法( OperationContract s)(显然在使用方法之前打开它,然后用OpenClose

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

那么ServiceHost为什么和在哪里使用?

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

你的服务实现只是一个.NET类 – 你需要有一个运行时环境,所以它可以以某种方式执行。 这就是ServiceHost所要做的 – 它将加载你的服务级别,设置端点和通道监听器等等,从而为你的服务级别提供一个“生态系统”来生存和运行。

您可以在控制台应用程序,Windows服务甚至Winforms应用程序中自己实例化ServiceHost类,从而使您的WCF服务类可用于外部世界 – 或者可以将该工作委托给IIS或WAS。 即使IIS或WAS也会使用一个ServiceHost来托pipe你的WCF服务 – 他们只是在后台自动执行它,而且“随需应变” – 只要你的WCF服务请求进入。

渣子