コントローラーのベストプラクティス
1. AccountControllerを削除します
決して使用することはありません。アプリケーションにデモコードを残すことは非常に悪い習慣です。
2.外界からコントローラーを隠す
HttpContext、データアクセスクラス、構成、ロギング、クロックなどに応じて、テスト(またはまったくテストしない)、さらに開発および変更を行う際に、アプリケーションに問題が生じます。
3. IoCコンテナーを使用する
ルール2を順守するには、IoCコンテナーを使用してすべての外部依存関係を管理します。 私は Ninject v2 を使用していますが、多くのコンテナがあり、さらに、独自のコンテナを簡単に構築できます。
4.魔法のラインにノーと言う
ViewData ["key"]を使用することはありませんが、常に各ビューに対してViewModelを作成し、厳密に型指定されたViewPageビューを使用してください。
マジックストリングは、それが認められても文法的なエラーについては教えてくれないので悪です。そのため、プレゼンテーションが機能しないため、代わりに厳密に型指定されたモデルを使用すると、コンパイル段階でも問題の原因を特定できます。 また、ボーナスとして、IntelliSenseを入手できます。
5.独自の契約を構築する
ASP.NET MVCをあなたの(またはあなたの会社の)アーキテクチャの基盤として使用します。 デフォルトのクラスを使用する代わりに、クラスが継承される基本的なコントローラーまたはビューで独自の規則を作成します。
6.クエリタイプ(動詞)に注意する
RESTモデル(RESTfullのみ)を使用していない場合でも、アクションごとに特定のHttp要求タイプを使用します。 PRG (Post-Redirect-Get) パターンを受け入れます :GETリクエストでデータを表示し、POSTリクエストでデータを変更します。
ベストプラクティスモデル
7.ドメインモデル!= ViewModel
ドメインモデルはドメインを表しますが、ViewModelはプレゼンテーションのニーズを満たしていると想定し、これら2つの世界は異なります(通常は異なります)。 さらに、ドメインモデルはデータと動作の組み合わせであり、複雑な型に基づいて構築された階層ですが、ViewModelは単なるDTO(データ転送オブジェクト)であり、フラットな行ベースのモデルです。 AutoMapperを使用して、退屈でエラーが発生しやすいオブジェクトマッピングコードを回避できます。 また、 ASP.NET MVC View Model Patternsという良いレビューを読むことをお勧めします。
8.共有データにActionFiltersを使用します。
これは、ASP.NET MVCの最高のコンポーネントモデルのための私のソリューションであり、今後、このトピックに関する記事をさらにいくつか書く必要があります。 異なるビュー間で共有されるデータを受信するためにコントローラーは必要ありません。 私の解決策は、アクションフィルターを使用して必要なデータを取得し、ビュー間で共有することです。 また、部分ビューを使用して表示します。
パフォーマンスのベストプラクティス
9.コードビハインドを使用しない
絶対に。
10.機会があるたびにHTMLを書く
Web開発者にとってHTML(CSSとJavaScriptの両方)を書くのは便利だと思います。 したがって、HTMLを非表示にするためだけにHtmlHelpersを使用しないでください(たとえば、Html.SubmitまたはHtml.Buttonの形式で)。 繰り返しますが、このトピックは将来の記事のためのものです。
11. if write HtmlHelperがある場合
ビューは馬鹿げている必要があります(そしてコントローラーは細く、モデルは厚くなければなりません)。 ビューで突然「if」と書いていることに気付いたら、HtmlHelperを作成して条件式を非表示にすることを検討してください。
12.ビューエンジンの選択に注意してください
デフォルトでは、ASP.NET MVCはWebFormViewEngineを使用しますが、私の意見では、これは最良の選択ではありません。 このツールはMVCにより適していると思われるため、 Spark View Engine を使用することを好みます。 私が気に入っているのは、ストリームがHTMLとforeachループで構築され、ifステートメントがHTML属性を介して定義されていることです。
ダウンロード
スライドとデモコードの両方をダウンロードできます。 または、 オンラインでスライドを見ることができます 。