0

私は開発中の.netコアMVCアプリケーションにマルチテナントを追加する予定です。.Net Core - マルチテナントコントローラオーバーライド

私の目的は、コントローラ、ビュー、資産などを含む基本機能を含むコア・プロジェクトを持つことですその後

私はコアプロジェクトからデフォルト値を上書きすることができますテナントごとに別々のプロジェクトを持っていると思います。現時点では、私はコントローラのレベルを上げるだけでなく、コントローラ内の個々のアクションをオーバーライドする能力に加えて、コントローラをオーバーライドするという課題に取り組もうとしています。

これを行うにはどうすればいいですか、私はIControllerFactoryについて考えていましたが、これが.netコアの正しい場所であるかどうかはわかりませんでしたか?

私はIoCでこれを達成するために離れているかもしれないが、正しい方向を指し示す必要があると仮定しています。

誰もがこれについて考えていますか?

答えて

1

これは自分の現在のプロジェクトで設計した方法ですが、私の要件は多人数だがテナントは複数の国で動作しますが、機能はテナントごとに同じですが国ごとに異なります。下記のデザインはあなたのお手伝いをするためのいくつかのアイデアをお届けします。

私はコントローラーをナビゲーションの仕組み以上のものとして扱い、薄く軽いものにします。私は、国ごとの面積を有するベースコントローラは非常に軽いです。各エリアのコントローラは単にベースコントローラ

enter image description here

を参照

enter image description here

(あなたのシナリオでは、これはテナントあたりの面積することができます) DIコンテナを使用して国ごとにカスタムロジックを実装できるようにするためです。許可の編集シナリオを実行します。

enter image description here インテリセンスまで遊んビューが赤になりはずの:)

編集許可がIEditPermitManagerが私たちのコントローラーに注入型である_editPermitManagerを呼び出します。ニュージーランド向けのシステムでは、特別なケースと他のすべての国が使用するため、ニュージーランド向けに2つの実装があります(ただし、国ごとに実装することは簡単です)。

enter image description here

enter image description here

Iは流れがユーザであるninject enter image description here

と、この注射を管理/何とかに移動/ニュージーランド/許可/編集/ 4クリックが、これは、コントローラを許可するように指示される送信ニュージーランドでは、ニュージーランド編集マネージャーが挿入されています。これは編集フローで呼び出されます。また、INavigationService(_navigationService.Route)を挿入して、国ごとに異なるビューを表示することもできますシス。

うまくいけば、それはあなたに出発点を与えるでしょう。