2011-07-27 12 views
0

最近、ASP.Net MVCとそのさまざまな機能について学び始めました。MVC_3_MUSIC_STORE + CODEです。
非常に構造化されており、理解しやすいように見えます。ASP.Net MVCをN-Tierに変換する

Iは、エンタープライズ・アプリケーションについて読んでいたとどのようにIがNに上記MVC_3_MUSIC_STOREを別個行う(変換)する方法(学習用)思った


(論理/物理)異なるセクションで階層/積層されています問題の明確な分離を得るためには、すでに(実例がありますので)という3層アプリケーションを使用しています。 私はこれに多くの事前経験はありません。

どのような変更が必要ですか?

DTO(複数可)またはPOCO(複数可)は何が必要ですか? 上記の例では、コントローラからビューまでのPOCOエンティティを使用しています。 EFコードが最初に使用されていると仮定しても同じですか?

また、WCF Webサービスがデータアクセス層として導入された場合、どのような変更が必要かと思いました。すなわち、DALからデータを取り出す代わりに、クライアントはWCF Webサービスとの間でデータを要求する。クライアントは、WebアプリケーションまたはWinFormsまたはSliverlightアプリケーションにすることができます。
[DAL < - >WCF WS] < - >N CLIENTS

様々なアプローチについて知ることは興味深いものになるだろう。

例コードは参考になり、同じ例です。

編集1から
私が気づいたことの一つ私がモデルフォルダから「mymodelという」新しいプロジェクトにモデルクラスを移動したときに、私は再び参照を追加する必要がありますし、「System.ComponentModel.DataAnnotations」へとを追加しました新しいモデルプロジェクトの "System.Web.Mvc"?

これをどのように回避できますか?これらの検証はどのようにしてビジネス層に移行できますか?

References will be lost if moved to new project

編集2
必要とされる唯一の変更はリポジトリ(DAL層)の実装を提供することである。通常、この Advice For A Newbie About N-Tier Applications

答えて

2

に似たものを探していましたWFF Webサービスを呼び出して、一部のEF DataContextではなくデータベースから直接ドメインモデルを取得します。コントローラとビューに対して完全に透過的な変更。

+1

「それをN層にする」というわけではありません。サービス指向になっています(それ自体が過負荷状態です)。 UI層+ビジネス層+データ記憶層= 3層アーキテクチャ。 Webサービスを強制するものはありません。 –

+0

@ Eric J.、私は本当にその用語に精通していませんが、それは間違いなく私がそれをやる方法です。 –

+0

どの要件が設定されているかに基づいていますか? WCFはデータベースへの直接アクセスに比べて遅い(ネイティブHTTPハンドラと比較して遅い)。多くの場合、Webサービスを介して機能を公開する価値がありますが、コストもあります。問題を問わずにソリューションを適用すると、アーキテクチャの選択肢が悪くなります。私たちのソリューションは、1日に何十億ものリクエストを処理することができ、WCFを追加レイヤーとして導入すれば、ハードウェアはほぼ2倍になります。用語の定義については、http://en.wikipedia.org/wiki/Multitier_architectureを参照してください。 –

関連する問題