2

我想使用 MEF 来实例化在 IIS 中托管多个 WCF 服务的应用程序中的依赖项。不同的服务依赖于共享组件,我希望 MEF 管理这些组件的实例化和注入。

我应该在哪里进行作曲?最初我想在 IInstanceProvider 中有一个 CompositionContainer,但后来我意识到该容器只能服务于一个端点,并且它管理的实例不会与其他端点共享。同样,在 ServiceHost 中拥有 CompositionContainer - 这不会在不同服务之间共享。

我在这个分析中正确吗?将 CompositionContainer 作为应用程序级别的单例的唯一解决方案是什么?

第二个问题是 - 当 WCF 实例化服务时(例如启动新用户会话时),我如何提供其依赖项?我是否让 CompositionContainer 重新组合?这不会影响其他已经在运行的服务实例吗?

有人可以分享这个概念的代码示例吗?非常感谢!

4

3 回答 3

0

我多次遇到使 WCF 服务可组合的要求,而您确定的使用自定义 IInstanceProvider 的方法就是解决它的方法。除了编写自定义实例提供程序之外,您还需要服务行为和自定义服务主机。

在代码示例方面,我已经在我的博客上记录了我的方法: http ://www.timjroberts.com/2011/08/wcf-services-with-mef/

希望这可以帮助。

于 2011-08-18T11:51:35.750 回答
0

您使用了“注入”一词,根据您的要求,我实际上建议考虑使用 IoC 容器(Spring、Windsor、Unity 等),因为这将提供更大的灵活性。也有一些这样的例子:

http://avingtonsolutions.com/blog/post/2008/08/02/Uisng-Uni​​ty-with-a-WCF-Service.aspx

于 2009-06-10T18:59:05.793 回答
0

您可以使用这个nuget 包。在项目站点,您可以找到几个如何在 Web 应用程序中使用该库或作为自托管服务的示例。

于 2014-01-30T13:43:25.817 回答