ASP.NET MVC3のデザインパターンと適切なコーディングテクニック

私は最近、いくつかのASP.NET MVC3プロジェクトをやっていましたが、私はMVC3の内部動作とベストプラクティスについて比較的新しいソフトウェアバックグラウンドから来ていました。

この間、私は幾人かの同僚のコーディングスタイルと私のページを設計する方法を、今日まで守っています。このすべてを念頭に置いて、私の主な質問は誰でも教材を薦めるものです。本/ビデオ/チュートリアル。私はこれらのリソースのいずれかから学ぶことができ、私が正しくコーディングしていることを知りたいです。

私は自分のベルトの下にいくつかのプロジェクトを持っており、RazorとASP.NETを使用してコード化した大規模なビジネスソリューションを多数持っていますが、私がやっていることは非常にハッキーなものか、プロジェクトが大きくなればなるほど、これにより新しい機能を追加することが難しくなります。

私はこれがコーディングでの経験の欠如だと思っていますが、同時にこれを克服したいと思います。MVC3の大量の経験で、私はより簡単なスタイルやデザインパターンに適応することができます。私のコードを最適化するが、はるかに優れたWeb開発者になる。誰かが本やトレーニングサイトなどの提案があれば、私がもっと良くなることを願って、私に知らせてください。

私の靴の中にあって、何かを推薦することを喜んでまたは可能な人に、事前に感謝します!

3
これは非常に主観的です。私は具体的なサンプルがスティーブ・サンダースのMVC3の本の外で必要になるかもしれないと言います。多くのサイトでは、サンプルの中にナッディッドディナープロジェクトのコード臭があります。私はあなたが何をしているのかについて具体的な質問をここに掲示し、それから私たちは具体的に助けることができます。
追加された 著者 Adam Tuliper - MSFT,
私はそれをもっと見ると、正しいコードを書く能力について時々混乱していると思います。コントローラ/モデルを貼り、人が見るためのビューを貼り付けない限り、例を表示する方法は本当にわかりませんが、もっと実用的でしょうか? SOAやその他のデザインパターンなど、より基本的に構造化された方法で開発を進めるようにするより優れた方法があると感じています。
追加された 著者 jhartzell,

2 答え

私は同じ問題を扱っていて、マインドマップを作ることが有用であることを発見しました。あなたに完全な理解を与えることは不可能ですが、私はいくつかの基本的なアイデアをもって正しい方向に向けることができます。

ダウンロード/表示( http://www.xmind.net/share/highroad/ mvc3-design-pattern/

あなたはデザインパターンに精通していますか?さて、彼らはMVCアプリケーションでも存在します:)

話し合いをしたいと思っていて、自分自身を含む人々が何を話しているのかを理解するには、エンタープライズレベルのアプリケーションと呼ばれるものを構築する際に必要となる典型的なデザインパターンを知る必要があります。これらのデザインパターンは、概念を理解し始める唯一の真の方法です。

これらのパターンは、開発者が直面しているデザインに対する試行錯誤したソリューション(設計パターン)となった方法で、複雑なビジネスロジックを構成します。

図の通知には3つの主要な層があります:

  1. プレゼンテーションレイヤ
  2. ビジネスロジック層
  3. データアクセスレイヤー

ASP.NETでModel View Controllerを扱う際によく使用されるデザインパターンには、次のものがあります。

ビジネスロジックレイヤデザインパターン:

  • アクティブレコード。モデルは軽量フレームワークのようなデータベースに正確に関連しています。 ruby on Rails)があります。 ASP.NETで新しいMVC3アプリケーションを作成し、ビューとコントローラをスキャフォールディングするときに、これが設定されます。あまり複雑でないアプリケーションに最適です。なぜRuby on Railsだけを使用しないのですか?私は
  • ドメインロジック層。非常に小さなコードを含むコントローラーでMVCを使用し、複雑なロジックを実行できる余分なモデルをたくさん作成するMVCはプレゼンテーションのためだけです。多くの場合、このスタイルのレイヤーでは、サービスレイヤーと呼ばれる軽量レイヤーを使用して、ドメインレイヤーのすべての機能をコントローラーから呼び出すことができます。つまり、コントローラーは、ドメインレイヤーを呼び出すサービスレイヤークラスのメソッドを呼び出します。このデザインパターンは、オブジェクト指向プログラミングを楽しむ人々に非常に人気があるようです。ドメイン階層を使って設計された私の(かなり基本的な)プロジェクトへのリンクをご覧ください。

  • トランザクションスクリプト - アクションごとに多くのロジック作業を行うためにコントローラを使用します。問題は多くのアクションが同じことを行う必要があるため、

データアクセス層の場合:

  • 必要なSQLクエリを実行できるリポジトリと組み合わせたエンティティフレームワークモデルのようなもの。
  • このレイヤのすべてのパターンには含まれませんが、データマッパー
  • 単純なアプリケーションでは、実際のデータアクセスレイヤは存在しません。ビジネスレイヤでドメインレイヤを使用する場合にのみ必要になります(通常はそうです)。

アプリケーションがどのような構造をとっているかによって、あなたのモデルは非常に異なることを意味します。一般に、データベースにリンクされたモデルではありません(新しいアプリケーションを作成するときのデフォルトでは、このようになります)。代わりに、各ビューに必要なデータを保持する役割を果たすViewModelになります。

私はあなたがここで見ることができるssampleアプリケーションを作成しました。

https://github.com/testbrian/enterpriseframeworksB

2
追加された

これがエンタープライズソリューションの例かどうかはわかりませんが、 RaccoonBlog をご覧ください。私はLayout.cshtmlや他のかみそりファイルがRenderActionを使ってビューをモジュール化するのが好きです。

このプロジェクトはRavenDbを使用したMVC3の例ですが、実稼働環境で実際に使用されて以来私が見てきた最高の実世界アプリケーションの1つです。

お役に立てれば。

1
追加された