2

ASP.Net MVC に基づくマルチテナント アプリケーションを開発しています。ユーザーの設定に応じて、サイトはそのユーザーの別のモジュール/エリアにリダイレクトする必要があります。各エリアにはいくつかの共通のサービスが使用されていますが、サイトのルック アンド フィールとナビゲーションはエリア/モジュールごとに完全に異なります。モデルもベース ライブラリからオーバーライドされるため、モジュール (コントローラー、ビュー、モデルを含む) を開発するには別のチームが必要です。

Unity や Ninject などの依存性注入ツールも検討しています。問題は、メインの Web サイト内に完全なモジュール/エリアをどのように挿入するかです。コントローラーとモデルの部分はよく理解されています。明確でないのは、正しいビューが検索されて使用されるようにビューを開発する方法です。

アップデート
このアプリケーションは、さまざまなチームで開発する必要があります。各チームは、サブサイト/エリアごとにモジュールを開発します。共通のサービス、フレームワーク、およびワークフローを提供するビジネス層があります。MVC は主にプレゼンテーション層です。各チームは、その顧客に固有のブランディングを使用して、顧客ごとにサブサイトを開発します。顧客が増えるにつれて、さらにサイトを追加する必要があります。テーマなどを使用することもできました。ただし、顧客にはさまざまな画面があり、画面ごとにさまざまなフィールド セットがあります。これらのフィールドはすべて同様のデータをキャプチャしますが、エンド ユーザーはデータをキャプチャする役割が異なります。例 フロント オフィスの担当者は、さまざまな no をキャプチャします。顧客およびバックエンド担当者ごとのフィールドの数が残りを完了します。同様に、顧客の顧客 (訪問者) に直面しているユーザーが複数存在する可能性があります。訪問者の流れ、各オフィス セッションのフロント エンド デスクなどを管理するために使用される共通のコンポーネントがあります。問題は、MVC サブサイトを個別に開発し、依存性注入を使用して共通のサイトに配置する方法です。特にビュー。展開スクリプトは唯一のオプションですか?

4

1 に答える 1

1

私が理解していることから。

あなたの目標は、Ninject のようなもので依存性注入を使用して、アプリケーションで使用されている特定の領域にコントローラーに基づいてさまざまな実装を注入できるようにすることですか?

この場合、コントローラー コンストラクターに配置できる Ninject Named 属性を介して、インターフェイスまたは抽象クラスによって定義された特定のサービスの特定の実装をバインドする NinjectModules をセットアップできます。

たとえば、次のようなエリアで公開されている一般的な検索コントローラーがあるとします。

http://example.com/ users /home/search

Ninject Named Attribute を使用すると、そのコントローラーによって消費される ISearchService の実装を注入できます。これにより、パブリック ユーザーがプロパティを検索するための限られた量の機能が提供される場合があります。

ただし、サイトに独自のプロパティを投稿する管理者やユーザーなど、サイトの別の領域では、検索機能を通じてより多くのアクセスを取得できます。

http://example.com/テナント/home/search

この HomeController には、コンストラクターを介して渡される ISearchService の別の注入実装を含めることができます。

Global.asax にすべての NinjectModules をロードするようにしてください。

これは、こちらの Ninject Contextual Bindings ドキュメントの下にあります。

ここで提供された情報はほとんどありません。アーキテクチャ設計の考慮事項で直面している問題のコンテキスト/コード例をもう少し提供すると、より良い回答が得られる可能性があります。

于 2013-06-04T07:07:53.157 に答える