2009-05-27 14 views
5

非常に大きな垂直市場のWebアプリケーションを開発し、MVCのアプローチに傾いています。小さなインクリメンタルな部分に展開するための大規模なMVCアプリケーションを構築、パーティション化、および構築する方法は?

アプリケーションのすべてのビューに共通の1つのマスターページがあります。 マスターは、アプリケーション全体に対してナビゲーション/検索フレームワークを提供します。 は、ユーザーがエンティティを検索して選択し、実行する機能にナビゲートできるようにします。

データベースモデルのテーブル数は、700〜1000です。 アプリケーションには何百ものコントローラがあります。

コントローラとそのビューは、アプリケーション内の多数の(20〜50)サブシステムの1つにグループ化できます。 (私たちは、組織内の補佐官にアプローチする方法を検討しています)。

小さな機能部品で拡張機能やアップデートを提供したいと考えています。 これらは、エンドユーザーが別途購入した新しい機能、バグ修正、顧客依存の機能、またはオプションのモジュールかもしれません。

私たちはあまりにも多くの年を費やして開発/サポートし、1つの大きなwindows vbアプリexeを提供しました。 別のアプローチをとってみたいと思います。

管理者は大きなアプリケーションを1つ配信したくありません。彼らは 小さなインクリメンタルピースを必要に応じて配達できるようにしたい。

コントローラが1つで、ビューが2つしかなく、モデルの一部が含まれている成果物を作成したいことがあります。

配信するには、dllをbinフォルダにコピーし、Viewフォルダを作成して新しいビューにコピーします。できるだけシンプルに!

私はこれを研究するのに多くの時間を費やしてきましたが、進歩するための明確な道を見いだせませんでした。 (私が見つけたすべてのチュートリアルと記事は単一のプロジェクトを前提としていました)

これを達成するためにアプリケーションをどのように構築しますか?

これを行うには、アプリケーションを別々のプロジェクト/アセンブリに分割する方法を教えてください。

マスターページ、認証、グローバルルーティング を含む基本プロジェクトを作成し、それを各モジュールの他のプロジェクトの潜在的な何百ものそれぞれで参照できますか?

開発中の各サブプロジェクトは、ベースプロジェクト全体、または共有ビューフォルダ、グローバルルーティング、 およびweb.configと基本プロジェクトdllへの参照を含む必要がありますか?

このアプローチを説明する詳細なドキュメントはありますか?

開発/テストに関する問題はありますか?

すべての入力をいただきありがとうございます。すぐにこれを取得する必要があります。

更新:

がここlink text

それは偉大な出発点である例を追いました!

+0

私は今いくつかの宿題をやります。誰かが特定の論文、サンプル、チュートリアルを持っているなら、躊躇しないでください。ここ数週間、私はキーボードのM、V、Cを消しました。 –

+0

SY - あなたは何をやったのですか? –

+0

LuckyLindy - エリアを使用しています。現時点ではMVC 2 Betaで非常にうまく動作しています。私たちには1つのParentプロジェクトがあり、各アプリケーションは子プロジェクトです。各子アプリのdllは親のbinに配備され、子ビューは親の領域フォルダ構造に手動でコピーされます。 –

答えて

0

Google for MVC with MEF。あなたのニーズに正確に合うMEFチームの例があります。

+0

興味深い...私はそれを確認する必要があります。 URLは - http://blogs.msdn.com/hammett/archive/2009/04/23/mef-and-asp-net-mvc-sample.aspx – GuyIncognito

+0

です。私はiPhoneの上にいた、または私はあなたのためにそれをgoogledだろう。 – Burt

+0

これはあまりにも真実であるように思えます。私は間違いなくこれを見ていきます。これは本当に最大500個のプラグインを処理することを意図していますか?ありがとう! –

1

これは、DLRが役に立ちそうなケースだと思います。コントローラとビューは、データベースにスクリプトとして保存することができます。アプリケーションを一連の「小さな機能部品」として提供することは非常に簡単です。読書から始めることができますHaacked - Scripting ASP.NET MVC Views Stored In The Database

+0

ありがとう。これは見ているかもしれませんが、私は最初にプロジェクトをdllに分割する方法を見ています。 –

1

もちろん、あなたのコントローラを含むサブプロジェクト/モジュールにプロジェクトを分割してください。 Unity、Spring.Net、またはCastle WindsorのようなIoCコンテナを使用して、子プロジェクトの適切なコントローラを見つけることができます。

渡されたコントローラ名に基づいてIoCコンテナでコントローラルックアップを実行するために、独自のIControllerFactoryを実装します。あなたは場所でのようになりますIControllerFactory.CreateController方法を置くために探している:

public IController CreateController(RequestContext requestContext, string controllerName) 
{ 
    return (IController)IoCContainer.GetObjectByName(controllerName); 
} 

その後、あなたは、単に彼らが展開されているとして、あなたの新しいコントローラを定義するために、あなたのIoCの設定ファイルを変更することができるはずです。

+0

素晴らしい。 (私はMVCのコンセプト全体に圧倒されていたと思っていましたが、もっと深く掘り下げていくと...)もっと宿題をしますが、入力に感謝します。 –

+0

いいえ。これは圧倒される何かではありません。 MVCのすべては、置き換え可能で拡張性があります。大規模なMVC Webサイトを構築する場合は、フレームワークのコーナーを掘り下げて拡張ポイントを追加する必要があります。 –

+0

+1これは明らかに私たちの全体的なアプリケーションに行く方法です。最初のアイデアは、MEFが行うコントローラを追加する動的なアプローチでした。私たちは、コアアプリケーションのIoCコンテナ、およびMEFを超えて提供されるその他の多くの利点について評価していきます。入力いただきありがとうございます! –

関連する問題