通过IoC容器进行WCF服务实例化

时间:2008-12-29 23:28:15

标签: wcf inversion-of-control

是否可以通过IoC容器而不是通过其常规流程来使WCF运行时实例化服务? (另外,考虑到容器的类型生活方式配置与服务的InstanceContextBehavior之间可能存在冲突,这种方法会不是很糟糕?)

我知道我可能会完全提出错误的问题。我的目标是通过容器提供的方法拦截工具进行AOP方法(例如,方法输入/退出日志记录,性能计数和调用限制,所有这些都涉及我不想插入到我的服务实现中的逻辑和依赖项)。我想WCF提供了其他方法来解决这个问题,所以我也很想知道其他推荐的方法。

2 个答案:

答案 0 :(得分:8)

简短回答 - 是的,可能。

请看看Castle WCF整合。它允许你使用Castle Windsor作为WCF,它提供了比注入依赖项更强大的功能。 最好使用trunk版本found here。关于它的文档不多,但请看一下测试。它们很容易理解,对您来说是一个很好的示例代码。 WCF工具让你完全按照你所要求的那种方式进行。

答案 1 :(得分:3)

是的,下面是使用ObjectBuilder和Spring.NET的实现(如果你按照链接的话,还有更多!):

http://www.infoq.com/news/2008/01/wcf-di

不能评论生活方式和实例上下文行为的交互。

对于更多针对WCF的方法,利用WCF行为概念(如上例所示)也可能有用。有几种不同的类型,这是一个起点:

http://mehranikoo.net/CS/archive/2007/02/22/WCFBehaviours.aspx

干杯,
马特