2017-07-02 10 views
-1

各テナントに異なるSMSプロバイダがあるとします(各テナントには、それぞれのプロバイダがSMSを送信する独自​​のSMSプロバイダを持っています)。ASPNetBoilerplateでこの状況をどうやって実装できますか?どのようにSMSアクションをインターフェイスに変換しますか?

+0

テナントごとに固有のインターフェイスを持つ1つのDLLを作成し、関連するデータベースに格納する必要があると思います。しかし、ASPNetBoilerplateテンプレートにこのDLLをロードして注入する場所はどこですか? –

答えて

0

各テナントに1つのSMSプロバイダしかない場合は、テナントクラスで複合型を作成できます。各テナントに複数のSMSプロバイダがある場合は、TenantSmsProviderエンティティを作成します。

DLLを作成する理由を理解できませんでした。

0

あなたは依存性注入を求めていると思います。 テナントID(例:GetProviderByTenantId(int tenantId)でSMSプロバイダ(例:ISmsProvider)を作成するファクトリ(たとえばISmsProviderFactory)を作成する必要があります。これは一般的なソフトウェアパターンです。次に、ISmsProviderFactoryを注入し、必要に応じてテナントに基づいてISmsProviderFactoryを得ることができます。

カスタムファクトリクラスを作成する代わりに、Castle WindsorのAPIを使用して、依存関係を工場で登録することができます。したがって、コードにISmsProviderを直接注入することができます。

今、問題はSmsProviderFactoryを実装する方法ですか?要件に応じて異なるアプローチがあります。しかし、この部分はABPの範囲外であり、ウェブ上で多くの記事を見つけることができます。

あなたがABPのプラグインシステムを利用したいのであれば、少し違うように設計することができます:すべてのプラグインDLLはISmsProviderをディクショナリ(辞書のキーがテナントID /名前です)工場は指定されたテナントに対して登録済みのプロバイダを選ぶことができます。

関連する問題