ASP.NET MVC でクエリ責任分離 (CQRS) をコマンドするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/2400967

質問

について読んできました コマンドクエリ責任分離 (CQRS). 。これが ASP.NET MVC でどのように機能するのか気になります。CQRS のアイデアは、概念的には素晴らしく聞こえますが、「通常/一般的な」アプローチと比較して、確かにいくつかの複雑さ (イベントとメッセージング パターン) を導入します。また、CQRS の考え方は、ある意味で ORM の使用に反対しています。今後のプロジェクトでこのパターンをどのように使用できるかを考えているので、CQRS を ASP.NET MVC および NHibernate と組み合わせた経験のある人がいたら、CQRS をより深く理解し、ASP.NET MVC で使用するのに役立つ具体的な例をいくつか挙げてください。ありがとう!

更新しました:Mark のサンプルコードを調べてみました。CQRS を学習している場合は必読です。

http://github.com/MarkNijhof/Fohjin

http://cre8ivethought.com/blog/2009/11/12/cqrs--la-greg-young/

http://cre8ivethought.com/blog/2009/11/28/cqrs-trying-to-make-it-re-usable/

役に立ちましたか?

解決

Cqrsは、Webプロジェクトがはるかに容易になります。 GETサイトでは、すべてのクエリは次のようになります "*選択テーブルからここID = @id")。これらの単純なクエリの場合、あなたはNHiberanteのようなORMを必要としません。あなたは、SQLデータベースを使用する必要はありません、あなたは、あなたがデータベーステーブルに、あなたのオブジェクトをシリアル化、または命名規則を使用することができますとき。あなたはまだNHibernateのが、読み出したデータベースを照会することができますが、すべてのクエリが同じになりますので、あなたが、そこから任意の利点を得ることはありません。

public class Controller
{
  public ActionResult Get(Guid id)
  {
     var viewModel = reportingDatabase.Get(id);
     return View(viewmodel);
  }
}

コマンド側では、コントローラは、次のようになります。

public class Controller
{
  public ActionResult Post(SomeForm form)
  {
    // do validation
    var command = new SomeCommand(form.Property1, form.Property2);
    bus.Send(command);
    return redirecto(something else);
  }
}

コントローラは、単にメッセージを送信し、メッセージがに行くとどのようなメッセージの結果がどこにあるか、それは知りません。このMVCの部分は、プログラムに非常に簡単です。 Cqrsは、アプリケーションのウェブ部分は非常に退屈な書き込みを行いますが、ユーザーが決定を(必要に応じて、AJAXによって使用されるJSONを返す)ために役立ついくつかのコードを追加することによって、それがより楽しく作ることができます。

他のヒント

私のを見てください DDDサンプル.ネット CodePlex 上のプロジェクト。GUI は ASP.NET MVC を使用して実装されますが、DDD を使用するビジネス ロジックは 4 つの異なるバリエーションで実行されます。

  • クラシック (CQRS なし)
  • 2 つの NHIbernate リレーショナル データ ストアを使用した CQRS
  • レポート側での LINQ to SQL を使用した CQRS
  • コマンド側でイベント ソーシングを使用した CQRS

そしてこれはASPで、 http://agrcqrs.codeplex.comするで私の試みを見てみましょう.NET MVC + NHibernateは

これが私が書いた完全な例です 私の CQRS ライブラリ Scritchy:

を使用して CQRS アプリを作成する Scritchy nuget パッケージ とても簡単で、 数分で起動して実行できるようになります

以下の記事では、あなたが面白いのリソースを見つけることができます:はどのように適応します

プロジェクトにCQRS

私が特に興味深い見つかったものはhref="http://msdn.microsoft.com/en-us/library/jj554200.aspx" rel="nofollow noreferrer"> CQRSジャーニーの

のコードがクリーンである(これは、マイクロソフトのパターンとプラクティスからみんなからです)。あなたは、Entity Frameworkのともっとたくさんで読み取りモデル(並列スレッドとSQL ServerとADO.NET、と)(Unityと)依存性の注入、シンプルだが効果的なエンタープライズ・サービス・バスを使用する方法の良い例があります。私はCQRSとイベントソーシングを行うにはどのようにそれから学んだ...覚えている:そのすべてについてのイベントを

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top