带DI / IoC的WCF:寻找模式

时间:2011-12-20 14:59:10

标签: c# wcf design-patterns dependency-injection unity-container

  

可能重复:
  Injecting data to a WCF service

我有一个如下所示的WCF服务:(为清晰起见省略了服务合同属性)

public interface IMyService
{
    void LoadBulkData(LoadRequest request);
}

public class MyService : IMyService
{
    IUnityContainer unity = new UnityContainer();
    IDataProvider provider;

    public MyService()
    {
        unity.LoadConfiguration();
        provider = unity.Resolve<IDataProvider>();
    }

    public void LoadBulkData(LoadRequest request)
    {
        // ...
    }
}

根据公司政策, Microsoft Unity 必须用于DI / IoC。因为这是WCF,我无法使用 构造函数注入,因为服务实现必须使用默认的无参数构造函数。

特别是,我不喜欢使用Unity来解析构造函数中的依赖项。有没有人 知道解决这个问题的方法吗?此外,是否有一种模式可能更适合我的需求 这里吗?

4 个答案:

答案 0 :(得分:3)

为什么不使用Property Injection:

Annotating Objects for Property (Setter) Injection

答案 1 :(得分:2)

我自己博客的无耻插件:)

http://thirteendaysaweek.com/2010/12/01/dependency-injection-and-wcf-services/

使用WCF和Unity进行构造函数注入实际上非常容易。您最终需要一个自定义的ServiceHost,ServiceHostFactory,一个与容器和IServiceBehavior实现交互的IInstanceProvider实现。总而言之,这不是很多代码,而且相当容易理解。

答案 2 :(得分:0)

您可以使用Ninject和WCF Ninject Extension。 http://ninject.org/

答案 3 :(得分:0)

This blogpost描述了如何实现自定义WCF IInstanceProvider