ASP.NET MVCを使用してマルチテナントアプリケーションを開発しており、マルチテナントとSaaSに関する優れた調査を行った結果、データ層(データベース:スキーマによる分離、データベースによるまたは共有)を実装するために利用可能ですが、ビジネスとUIレイヤを実装するためには非常に限られたリソースしか利用できません。ASP.NET MVCでプラグインベースのアーキテクチャを使用したマルチテナントアプリケーションの開発
私は別のデータベースアプローチを採用しました。
本当にマルチテナントにするために、私はプラグインがテナントベースのモデル、ビュー、コントローラを備えたMVCアプリケーションであるプラグインベースのアーキテクチャ(umbracoやNopcommerceなど)を選択しました。ここで
は、私はそれを開発するつもりですかです:
コントローラの工場は、テナントに基づいて初期化されます(サブドメイン)
ビジネス層がテナントに基づいて(DIを使用して)に注入されます。
とUI(表示)は、プラグインに基づいて表示されます。
しかし、このようにすべてが冗長であり、共通の動作を共有できません。
誰でも共通の行動を共有できる方法を設計するのに役立つことができますか、それとももっと良いアプローチがありますか?
UI /コントローラで共通の動作をするような問題を定義してください。テナントに搭載され、テナントがこのワークスペースをセットアップするためのデプロイメントの更新を待たなければならないため、テナントごとに個別のUI /コントローラを維持することは容易ではありません。これは、純粋なマルチテナントレベルではありません。明示的な問題を共有して解決策を提案することができます。 – Saravanan
こんにちは@Seravanan、あなたのご意見ありがとうございます。あなたは、各テナントに対して、私は良いではないプラグインを追加する必要があることは間違いありません。しかし、私は登録ページ(ビュー)がすべての検証に共通し、フィールドのカップルは、テナントごとに異なる場合、どのように私は同じビューとコントローラを使用することができます検証ルールとフィールドが異なる場合(ただし、ランタイム)。 –
ビューページID、テナントID、正規表現を格納するカスタムテーブルを持つことができます。特定のテナントによってデータが転記されたときに正規表現を実行します。 – Saravanan