了解项目中的 WcfIISHost Class 库

Understanding WcfIISHost Class Library in a Project

我正在调查一个 Web 项目,我遇到了一个 class 库。它的名字是"UnitName.SampleProject.WcfIISHost",它只有两个文件,一个是"CategoryService.svc"和"NinjectFileLessServiceHostFactory.cs"。奇怪的是,"CategoryService.svc" 只有一行,因此:

<%@ ServiceHost Language="C#" Debug="true" Service="UnitName.SampleProject.BusinessLayer.Concrete.ProductManagement.CategoryService" Factory="Ninject.Extensions.Wcf.NinjectServiceHostFactory" %>

和"NinjectFileLessServiceHostFactory.cs"的内容。是:

public class NinjectFileLessServiceHostFactory : NinjectServiceHostFactory
{
  public NinjectFileLessServiceHostFactory()
  {
  var kernel = new StandardKernel(new BusinessModule());
  kernel.Bind<ServiceHost>().To<NinjectServiceHost>();
  SetKernel(kernel);
 }
}

有一个 Wcf 库和 Wcf 控制台主机库,我了解它们。这个库的用途是什么?

提前致谢。

总之,由于承载环境的变化,IIS承载的WCF不同于控制台承载的WCF,在控制台中,我们可以通过ServiceHost在服务启动前添加额外的逻辑,添加额外的服务,端点行为事件,或者初始化数据库等。
因为IIS没有实例化Service host,所以链接到service生命周期的事件都是通过Factory实现的属性.
这里有详细的解释。
https://docs.microsoft.com/en-us/dotnet/framework/wcf/extending/extending-hosting-using-servicehostfactory
NinjectServiceHostFactory 扩展添加了对 WCF 服务和行为的 Dedenpency 注入的支持。
https://github.com/ninject/Ninject.Extensions.Wcf
如果有什么我可以帮忙的,请随时告诉我。