6

我想在MVC 应用程序中托管大约 6 个WCF 服务,将请求路由到和/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 服务 -通过上面显示的 StructureMapServiceHostFactory将 MVC 请求路由到特定 url效果很好 - 但是 - 如果(例如)我StructureMapServiceHostFactory2/services/bar调用创建一个,以允许在 MVC 应用程序旋转时使用不同的注册表起来,它似乎依次调用每个工厂,因为它通过 RouteConfig.cs 运行并添加路由,所以最终我没有得到第一个 ServiceHostFactory 应该提供的配置实例。

Initialize();如果我打电话或试图抢夺Container财产并打电话给它,也没有什么区别Configure

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

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

4

1 回答 1

0

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

我现在有一种有效的方式来托管这些服务并使用 StructureMap 维护 IoC,而无需任何冲突的问题。

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

于 2013-05-13T15:28:37.050 回答