4

マルチテナント アプリを開発するために、次の例に従っています: ASP.NET MVC パート 2 でのマルチテナンシーへのシンプルなアプローチ

StructureMap を使用する代わりに、Ninject を使用しています。この例では、次のインターフェイスが使用されています。

IContainerResolver – 解決されたテナントの IoC コンテナーを取得します

しかし、Ninject での使用方法がわかりません。各テナントが適切なバインディングを持つように、ある種の NinjectModule はありますか?

が使用される理由と、Ninject でどのように使用する必要があるかを説明できますか?

4

1 に答える 1

2

まず第一に、IIS に任せることができるため、特定のシナリオではそのようなことはしません。別の App.config を使用してテナント用にアプリをデプロイするだけで、メモリを確実に分離できます。

しかし、本当にそのようにしたい場合は、テナント モジュールを 1 つの共有カーネルにロードするという非常に簡単な解決策があります。

public class TenantSpecificBindingsModule 
{
    TenantSpecificBindingsModule(string tenantUrl)
    {
    }

    public void Load()
    {
        this.Bind<ISomeTenantSpecifiComponent>.To<Impl>().When(GetCurrentUrl().StartsWith(tenantUrl));
    }
}

foreach tenant { kernel.Load(new TenantSpecificBindingsModule(tenant.Url));
于 2012-12-18T00:31:21.300 に答える