MEF和WCF

MEF和WCF,wcf,iis,inversion-of-control,mef,Wcf,Iis,Inversion Of Control,Mef,我希望使用MEF在IIS中承载多个WCF服务的应用程序中实例化依赖项。不同的服务依赖于共享组件,我希望MEF管理这些组件的实例化和注入 我应该在哪里表演作文?起初,我想在IInstanceProvider中使用CompositionContainer,但后来我意识到该容器只服务于单个端点,它管理的实例不会与其他端点共享。同样,在ServiceHost中具有CompositionContainer——这不会在不同的服务之间共享 我的分析正确吗?是将CompositionContainer作为应用程

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

我应该在哪里表演作文?起初,我想在IInstanceProvider中使用CompositionContainer,但后来我意识到该容器只服务于单个端点,它管理的实例不会与其他端点共享。同样,在ServiceHost中具有CompositionContainer——这不会在不同的服务之间共享

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

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


是否有人可以共享此概念的代码示例?非常感谢

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


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


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

关于代码示例,我在博客上记录了我的方法:


希望这能有所帮助。

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

关于代码示例,我在博客上记录了我的方法:


希望这有帮助。

你可以用这个。在项目站点上,您可以找到几个示例,说明如何在web应用程序中使用该库或将其用作自托管服务。

您可以使用此示例。在项目网站上,您可以找到几个示例,说明如何在web应用程序中使用该库或将其作为自托管服务。

谢谢您的帮助。我已经看过史蒂夫·莫斯利的例子了。这里的问题是容器是“每个WCF端点”。有了MEF,我知道这会阻止我在不同的端点之间共享导出的对象,这对我来说是一个阻碍。Unity在这方面不同吗?所以当你说“共享组件”时,你的意思是共享组件应该保持一些状态/价值,这些状态/价值将在各种服务中使用吗?是的。这些是单身汉。除了我希望我的IoC容器实现这一点,而不是硬编码它们。从我到目前为止所读到的内容来看,我需要一个静态工厂来跨所有不同的服务进行组合。温莎城堡将其命名为“WCF集成设施”。我想为我的朋友买点类似的东西。但我不知道如何让它在运行时按需自动连接每个服务实例。我担心如果我有一个静态CompositionContainer并为每个服务实例调用Compose(),那么这将对已经组合的服务实例产生不利影响。您是否可以在服务启动时使用IExtension之类的工具来附加必要的单例?谢谢您的帮助。我已经看过史蒂夫·莫斯利的例子了。这里的问题是容器是“每个WCF端点”。有了MEF,我知道这会阻止我在不同的端点之间共享导出的对象,这对我来说是一个阻碍。Unity在这方面不同吗?所以当你说“共享组件”时,你的意思是共享组件应该保持一些状态/价值,这些状态/价值将在各种服务中使用吗?是的。这些是单身汉。除了我希望我的IoC容器实现这一点,而不是硬编码它们。从我到目前为止所读到的内容来看,我需要一个静态工厂来跨所有不同的服务进行组合。温莎城堡将其命名为“WCF集成设施”。我想为我的朋友买点类似的东西。但我不知道如何让它在运行时按需自动连接每个服务实例。我担心如果我有一个静态CompositionContainer并为每个服务实例调用Compose(),那么这将对已经组合的服务实例产生不利影响。您是否可以在服务启动时使用IExtension之类的工具来附加必要的单例?