我如何在MVC中托管多个ioc驱动的WCF服务

本文关键字:ioc 服务 WCF MVC | 更新日期: 2023-09-27 18:04:06

我有大约6个WCF服务,我想在MVC应用程序中托管,将请求路由到/services/fooWcfFooService/services/barWcfBarService

我可以在服务中使用StructureMap完成IoC,并通过使用Jimmy Bogard在这里写的例子注入构造函数依赖:

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);
    }
}

WCF服务——将MVC请求路由到一个特定的url通过 上面所示的StructureMapServiceHostFactory作品出色——但是,如果(例如)我创建StructureMapServiceHostFactory2 /services/bar电话,允许不同的注册表使用,当MVC应用旋转起来,似乎每个工厂依次调用它贯穿RouteConfig.cs并添加路线,所以最终我没有得到第一ServiceHostFactory应该提供的配置实例。

如果我调用Initialize();或试图获取Container属性并在其上调用Configure,也没有区别。

我是不是什么都没做?需要注册表隔离的主要原因是由于不同的NHibernate配置,但是我可以为NHibernate配置SessionFactory和Session的Named实例,然后使用单个注册表来解决这个问题。在我看来,我希望WCF服务和mvc托管能够独立地使用它们自己的IoC容器,这就是为什么我选择了这条路线。

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

我如何在MVC中托管多个ioc驱动的WCF服务

好吧,看来唯一能够回答这个问题的人就是我了,通过重新思考和"重新构建"解决方案,所以问题从一开始就不存在了。

我现在有了一个很好的方法来托管这些服务,并使用StructureMap整齐地维护每个服务的IoC,而没有任何冲突的问题。

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