C# 如何在MVC中托管多个IoC驱动的WCF服务?

C# 如何在MVC中托管多个IoC驱动的WCF服务?,c#,wcf,asp.net-mvc-4,structuremap,C#,Wcf,Asp.net Mvc 4,Structuremap,我想在一个MVC应用程序中托管大约6个WCF服务,将请求路由到/services/foo到WcfFooService和/services/bar到WcfBarService 我可以通过使用Jimmy Bogard在博客中提到的示例,在服务中使用StructureMap来完成IoC,并注入我的构造函数依赖项: Jimmy的文章很棒,但我正在尝试将其扩展到使用同一MVC应用程序中托管的多个服务。基本上,底部的部分是让我头疼的部分: public class StructureMapServiceHo

我想在一个MVC应用程序中托管大约6个WCF服务,将请求路由到
/services/foo
WcfFooService
/services/bar
WcfBarService

我可以通过使用Jimmy Bogard在博客中提到的示例,在服务中使用StructureMap来完成IoC,并注入我的构造函数依赖项:

Jimmy的文章很棒,但我正在尝试将其扩展到使用同一MVC应用程序中托管的多个服务。基本上,底部的部分是让我头疼的部分:

public class StructureMapServiceHostFactory : ServiceHostFactory
{
    public StructureMapServiceHostFactory()
    {
        ObjectFactory.Initialize(x => x.AddRegistry<FooRegistry>());
        //var iTriedThisToo = ObjectFactory.Container;
        //container.Configure(x => x.[etc]);
    }

    protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
    {
        return new StructureMapServiceHost(serviceType, baseAddresses);
    }
}
公共类结构MapServiceHostFactory:ServiceHostFactory
{
公共结构MapServiceHostFactory()
{
初始化(x=>x.AddRegistry());
//var itriedthisto=ObjectFactory.Container;
//Configure(x=>x.[etc]);
}
受保护的重写ServiceHost CreateServiceHost(类型serviceType,Uri[]baseAddresses)
{
返回新的StructureMapServiceHost(serviceType,baseAddresses);
}
}
使用单一的WCF服务-通过上面显示的StructureMapServiceHostFactory将MVC请求路由到特定的url非常有效-但是-如果(例如)我为
/services/bar
调用创建了一个
StructureMapServiceHostFactory2
,以允许在MVC应用程序启动时使用不同的注册表,当它运行RouteConfig.cs并添加路由时,它似乎会依次调用每个工厂,因此最终我不会得到第一个ServiceHostFactory应该提供的配置实例

如果我调用
Initialize()
或尝试获取
容器
属性,并在其上调用
配置

我对这件事一无所知吗?要求注册表隔离的主要原因是由于不同的NHibernate配置,但是我可以为NHibernate目的配置SessionFactory和Session的命名实例,然后使用单个注册表来解决这个问题。在我看来,我希望WCF服务和MVC托管能够单独使用自己的IoC容器,这就是我走这条路线的原因


我有什么办法可以做到这一点吗?

好的,看来唯一能够回答这个问题的人就是我,通过重新思考和“重新设计”解决方案,使问题一开始就不存在

我现在有能力托管这些服务,并在每个服务上使用StructureMap整洁地维护IoC,而不存在任何冲突问题


如果您发现自己处于SOA接管(SOATO?)的类似位置,那么退一步是一个好的开始;)

6 WCF服务?哇!我希望您正在使用基于消息的通信与那些WCF服务(如所解释的),否则它可能会非常痛苦!谢谢分享,我们当然可以用这样一个更整洁的架构。它也可能是我所需要的东西的使能器…将让它仔细看看重新架构的解决方案是什么?