2010-11-22 15 views
3

かなり大きなアプリケーションを開発しています。大きなASP.net MVCアプリケーションでコントローラを共有/拡張する

それは私が現在持っていることは、このようなものである「バックオフィス」アプリが

「ウォーキンガム」と呼ばれる

...基本的に掲示板などのような他の「機能」を持つ電子商取引APP-です:
(私たちは木の名に命名規則拠点を持っている)

MyCompany.Honeysuckle
含まれているプロジェクトフォーラムのためのモデルとデータアクセス(IRepository等。)

MyCompany.Willow
モデルと製品のデータ・アクセス、製品検索など...

MyCompany.Poplar
モデル/データ受注

MyCompany.Juniper
お客様

のアクセス/サービスなど。

上記のすべては、ウォーキンガム(上記の管理バックエンドシステムは、)「公共」のWebでいくつかの機能を共有する共通/ binに/ dirの

にコンパイルクラスライブラリは、のために

をAPP-ありますたとえば、フォーラム(MyCompany.Honeysuckle) - パブリックアプリケーションに新しい質問を追加する機能があります。 この機能はWokinghamでも利用できます。

私の質問は、MVCアプリケーションのコントローラについてです。
があるでしょう(少なくとも)2 ASP.NET MVC応用 -
"ウォーキンガム" 用に別の1

は私がMyCompany.Honeysuckle.Controllersプロジェクトを持っているべきですか?パブリックUIプロジェクトとウォーキンハムシェアの両方

OR- はは、上記のMyCompany.Honeysuckle.Controllersがあるはずですが、その後.Wokinghamプロジェクトは、必要な追加機能を実行するためにコントローラを拡張しますか?

+0

+1これについていくつかの議論をしたいと思っています。 –

答えて

2

フロントエンド操作用と管理者側の2つのコントローラーを分けることにします。面倒な問題は、共有操作をどこに置くかです。

短い方法:管理者ユーザーが新しいフォーラム投稿を作成する場合は、新しいウィンドウをリダイレクトするか開くことができますか?これはあなたに多くの時間を節約し、一般的な習慣です。

長い道のり:同じことをやって、2つのページを持つことが必要であるならば、私は別のコントローラ操作やビューが、共有CRUDサービス(モデル層)となるだろう。作業は、主に異なるビューを作成することです。

一般に、コントローラの操作は、Web要求のエンドポイントにすぎないため、できるだけシンプルにしておきたいと考えています。そして、2つのわずかに異なるコントローラー操作の抽象的な類似性に悩まされることは、過度のものです。

編集:無関係な候補が削除されました。

+0

2つのMVCアプリケーション - セキュリティのために、 "公開"アプリケーションは1つのサーバー(農場) "ウォーキンハム"アプリは内部サーバーになります – Alex

+0

OK、無関係な提案を削除しました。しかし、それ以外の部分はまだ適用されます、私はそれがあなたにとって有用であることを願っています。 –

関連する問題