MVC アプリケーションでホストしたい約 6 つのWCF サービスがあり、要求を相互にルーティングします。/services/foo
WcfFooService
/services/bar
WcfBarService
サービス内で StructureMap を使用してIoCを実現し、Jimmy Bogard がここでブログに書いた例を使用して、コンストラクターの依存関係を注入できます。
ジミーの記事は素晴らしいですが、同じ 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 コンテナーを分離して使用できるようにしたかったため、このルートをたどりました。
これを達成する方法はありますか?