1

私は新しいプロジェクト(非企業)を始めていますが、今日どのように素晴らしいアーキテクチャになるのか知りたいです。

私が今計画しているのは、以下を使用することです。

  • ASP.NET MVC 4.0
  • SQLServer2008または2012
  • .NET4.5でのEF5.0、Dapperを使用
  • リポジトリパターンの実装(これはhttp://code.google.com/p/ef4prs/
  • Autofacを使用したDI
  • オートマッパー
  • WCFサービスレイヤー(将来のモバイル実装用)

フローの確認(何か問題がある場合は修正してください):コントローラーApplicationServiceを呼び出し、BusinessLayerを呼び出し、UnitWork / Repositoryを使用してDALを呼び出し、 EFまたはDapperを介してクエリを実行します(リポジトリの特定のメソッドからDapperをクエリするのは正しいですか? )、結果は自動的にDTOにマップされ、コントローラーに返されます。コントローラーは、必要なものをViewModelにコピーし、ビューを返します。

ここでの問題は、私が言ったように、サイトはトラフィックが多いように計画されているパフォーマンスです。この場合、上記の項目のいずれかがパフォーマンスを低下させる可能性がありますか?または、この組み合わせはさらに何かをリークしますか?EFを破棄し、Dapperだけを使用する必要がありますか?トラフィックが原因で、サービスレイヤーのパフォーマンスが低下する可能性があります。

そして最後に、このアーキテクチャが不要なのか、それとも単に貧弱なのかはわかりません。

これは多くの質問ですが、焦点は、中規模のWebサイト向けの「過度に設計された」ソリューションではなく優れたソリューションを知ることです。

英語でごめんなさい

4

1 に答える 1

3

すべてうまく機能する可能性のある構成が多数あるため、あなたの質問はかなり主観的です。しかし、私はあなたにいくつかの推奨事項を与えることができます。

EFとDapperを組み合わせて組み合わせるのは、ちょっとした地雷原になる可能性があります。Attach理論的には、Dapperを使用してオブジェクトをフェッチしてから、にオブジェクトをフェッチしDbContextて更新できるはずです。しかし、私の経験では、それはしばしば機能しません。EFから始めて、クエリを高速化するためにゆっくりとDapperに移動し、更新/挿入にEFを引き続き使用できると考えましたが、最終的には独自の挿入/更新の追跡をロールバックしたため(驚くほど簡単)、徐々に段階的に廃止されています。 EFの使用。

後から考えると、1つを選んでそれを使い続けることをお勧めします。EFは、.NET4.5ではかなり高速である必要があります。ただし、Dapperほど高速ではないため、純粋なDapperルートを使用するのは悪いことではありません。

あなたが考えることができる他の技術:

  • ServiceStack(Webサービス)http://www.servicestack.net/。強くお勧めします。構成が少なく、高速で使いやすいです。
  • ASP.NET MVC Web-API(Webサービス)http://www.asp.net/web-api。私はそれを使った経験がありません。
  • ThisMember(マッパー、免責事項:自分のライブラリhttps://github.com/JulianR/ThisMember/wiki。AutoMapperよりもはるかに高速(10-100x)で、私の意見では使いやすいです。
于 2012-11-12T22:24:41.017 に答える