2009-06-03 29 views
2

重複の可能性: - おそらく
unit-of-work-pattern-in-net
rhinocommons-unitofwork-question-with-asp-net-mvcUnit of Workパターンの.netリファレンス実装は何ですか?

Unit of Workパターンは、ドメイン上のすべてのアクションを追跡し、ときに一度にすべてを適用するには、コンテキストに保つための方法です - 複雑な論理が行われる。

ORM(たとえばNHibernate)と一緒に使用する場合、基礎となるdbへのすべてのアクションに使用される共有ISession(またはLinq 2 SQLのDataContext)を使用して作業単位を実装することをお勧めします。

特にASP.Net MVCやASP.Net Webformsを中心とするサーバーアプリケーションを扱う場合は、実装が難しい場合があります。

私はRhino.Commons(NHibernate向け)の実装を手放しましたが、私はいくつかの他のものを知っていますが、それらの不都合な点や悪影響については十分に理解していません。

ASP.Net MVC(またはWebFormsが主にMVCに興味があります)でシームレスに統合する方法は何ですか?

+0

Cheeso、この質問は引用された2つの質問の欺瞞ではありません。最初のものは、UOWとは何かを説明します。私はそれが何であるか知っています。もう1つはもう少し関連性がありますが、RhinoCommonsについて語ります。私は、さまざまな既存の実装と、それらを使用する方法について尋ねています。 –

答えて

3

更新:応答後にこれがわかりました(unit-of-work-pattern-in-net)。

多分、System.Transactions.Transactionはあなたの後のものです。

作業単位は、もともとは、数年前にメインフレームベースのアプリケーションに適用されていた用語です。アプリは一連のステップを実行します。いずれかの手順が失敗した場合、データベースは以前の「同期点」にロールバックされます。アプリケーションは、作業単位内のすべてのステップを正常に完了した後に新しい同期点を記録します。ステップはユニットのように振る舞いました。

メタファは進化しているので、.NETではTransaction構造を使用しています。トランザクションの範囲内で回復可能なデータストアに対して実行される作業は、ACIDプロパティを使用して単位として実行されます。これらのデータストアの例としては、現代のRDBMS、MSMQなどのキューイングシステム、Windowsではファイルシステムまたはレジストリ(KTM経由)などがあります。トランザクションが解決すると、すべてのトランザクションストアのすべての操作をコミットまたはロールバックします。

私は、nHibernateまたはISession構造について知らない。しかし、あなたが伝統的な意味で「作業単位」という言葉を使用しているなら、あなたが望むのはトランザクションだと思います。

ASP.NET MVCへのトランザクションの統合に関しては、どういう意味だろうか。トランザクションは、UIモデルが何であるか、またはUIフロー制御をどのように設計したかは気にしません。データベースを更新する場合(「モデル」と仮定します)、その更新をトランザクションに含めることができます。単一のトランザクションの一部として複数の更新がある場合にのみ、実際には意味があります。一方、長期間トランザクションを開いたままにすることは望ましくありません。データベースのロックにより競合が発生し、その結果スループットが低下します。

+0

+1:方法については説明しています。 –

関連する問題