2012-01-19 21 views
3

EF 4.1または別のORMを使用してASP.NET MVC 3 Webサイトを設計するためのベストプラクティスを検索するのに多くの時間を費やしました。私はこれを見つけたtutorial on Implementing the Repository and Unit of Work Patterns in an ASP.NET MVC Application。それは良いチュートリアルだったし、何かを学んだ。だから、これは私に考えさせて、スタック上の人々から知りたかったのは、これがあなたが使うものでしょうか?どうしてあなたのウェブサイトをどのようにデザインしましたか?私は、物事を行う正しい方法を学び、一方の方法がもう一方の方法よりも優れている理由を理解したい。ASP.NET MVC 3ベストプラクティス/デザイン

+4

これらの抽象化はすべて、特定の一連の要件に対応するために行われます。そのような抽象化は、あなたの要求に適さないかもしれません。問題はあまりにも一般的です。あなたのドメイン、要件、制約などの詳細を提供してください – Eranga

+0

これは一般的な質問の詳細です。チュートリアルのようなアプローチをいつ、そしていつ、なぜ選択するのか、そしてそこに他のオプションがあるのか​​を本当に理解したいと思います。 – Cam

+0

コンテキストのない設計の選択については、無用です。 – Eranga

答えて

2

最初に、Entity Frameworkは、リポジトリパターンと作業パターンの単位を実装しています。

  • は、基礎となるORM
  • の可能性が根底ORM
  • に付加価値を提供していません狭くなる:エンティティフレームワークのような近代的なORMの上に作業パターンのリポジトリとユニットを実装する抽象化の追加の層であり、
  • はせいぜい無価値であるが、

ような実装の一つの目的は、リポジトリ内のクエリロジックをカプセル化することで、単一責任の原則(SRP)などのない1クエリは示唆している有害かもしれませんしかし、いくつかのクエリはSRPに違反しています。あなたができることは、あなたのORMに依存し、大規模なクエリロジックを単一のクエリクラスにカプセル化することです。

抽象レイヤーに抽象レイヤーを追加するなどして、「SOLID」のようなより一般的なデザインガイドラインを使用して問題を解決しようとすることをお勧めします。

Ayende Rahienは、アプリケーションに適用される、いわゆるベストプラクティスを扱うhis blogでブログの記事(herehereherehereherehereherehere)一連のノースウィンドスターターキットアプリケーションをレビュー。これは素晴らしい読書です!

+0

ありがとう私はブログをチェックします。ベストプラクティス/パターンを使用するタイミングとその理由を理解することが本当にあります。 – Cam

+0

-1 "modern ORM"と併用した場合、リポジトリパターンが "無価値"になる – BZink

+0

エンティティの上にRepositoryパターンとUnit of Workパターンを実装する文脈では、文句は「無駄ではあるが有害かもしれない。フレームワーク... – saintedlama