Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dependency injection WCF服务的统一依赖注入_Dependency Injection_Wcf_Unity Container - Fatal编程技术网

Dependency injection WCF服务的统一依赖注入

Dependency injection WCF服务的统一依赖注入,dependency-injection,wcf,unity-container,Dependency Injection,Wcf,Unity Container,有人能告诉我一个关于WCF服务的Unity依赖注入的好例子吗? 任何博客或msdn文章也会有所帮助 要将依赖项注入WCF服务,我必须实现一个服务主机工厂 我找到了一个循序渐进的教程 基本上,你必须: 实现IInstanceProvider以使用容器创建服务 实现IServiceBehavior以在端点调度器中设置实例提供程序 扩展ServiceHost以添加新的服务行为 扩展ServiceHostFactory以创建新的服务主机 给出了一个关于如何使用Castle Windsor在WCF中启用D

有人能告诉我一个关于WCF服务的Unity依赖注入的好例子吗?
任何博客或msdn文章也会有所帮助

要将依赖项注入WCF服务,我必须实现一个服务主机工厂

我找到了一个循序渐进的教程

基本上,你必须:

  • 实现IInstanceProvider以使用容器创建服务
  • 实现IServiceBehavior以在端点调度器中设置实例提供程序
  • 扩展ServiceHost以添加新的服务行为
  • 扩展ServiceHostFactory以创建新的服务主机
  • 给出了一个关于如何使用Castle Windsor在WCF中启用DI的示例


    在示例中,只需将IWindsorContainer替换为IUnityContainer,您应该已经准备好了,尽管您可能还希望将类名从WindsorXyz更改为UnityXyz:)

    我将尝试使用Unity.Wcf库(),乍一看效果非常好。我在这本书里读到:

    如果您使用ServiceHost在Windows服务中托管WCF服务,请将ServiceHost实例替换为自定义Unity.WCF.UnityServiceHost。您将发现UnityServiceHost在Unity容器中作为其第一个参数,但在其他方面与默认ServiceHost相同

    因为这是我的情况,我要这样做

       class Program
    {
        static void Main(string[] args)
        {
            // 1st Initialize the Host (Configures Container and Factories)
            ServiceHostController.Initialize();
    
            // 2nd Create a URI to serve as the base address.
            var baseAddress = new Uri("http://localhost:54321/BlaBlaBla/");
    
            // 3rd Create a UnityServiceHost instance
            var myService = new UnityServiceHost(ServiceHostController.UnityContainer, typeof(MyService), baseAddress);
    
            try
            {  //etcetera...
    
    这对我来说很有效,我仍然需要重构一些东西,添加一些特性和方法,但起点很有魅力


    希望有帮助。

    这是最好的吗?我已经看过了,看起来很复杂。还有比这更简单的吗?现在这是一个死链接。