質問

を責任を持って誰が

<時間>

誰がMVCアーキテクチャで作業単位を開始し、終了する責任を持つ?

役に立ちましたか?

解決

それは SRP に違反し、コントローラの責任ではありません。コントローラは、まったくUOWについて知るべきではありません。ウェブでは、サーバーへのリクエストごとに1つのUOWが通常使用されています。この場合、UOWは、要求の端部に配置され、要求の開始後(理想的に怠惰でなければなりませんUOWの開始)どこかで起動する必要があります。これを行うには最高の場所は、Global.asaxの(またはあなたのHttpApplicationクラス)Application_EndRequestとApplication_BeginRequestハンドラを使用している。
これは、簡単に(私のお気に入りはウィンザーである)、 IOCフレームワークを用いて達成することができます実装の詳細についてます。

他のヒント

コントローラ。これは、コンテキストを取得しますので、あなたは、作業単位を開始し、終了することができます。例えば、要求ごとNHibernateはセッションは、あなたがあなたのリクエストを与えるために、コンテキストを必要とするので、要求が開始され、終了した時を知っているあなたが必要になります。

私は、疎結合アーキテクチャの信者です。私のコントローラは、リポジトリ、コンテキストまたはのUnitOfWorkについて何も知りません。私は、コントローラが呼び出す(わからないことが正しい用語である)サービス層を作成しました。このサービスは、すべてのデータを永続化するために、リポジトリ(DLL)で動作します。

zihotkiあなたはコントローラにこの責任を与える場合は、SRPを違反すると述べたよう。これは、データ操作指向のパターンであり、そのようにコントローラの懸念すべきではない...それはそれ2件の違反になるだろう:SoCの原理のためのSRPとanothrtための1つを

責任を持っている人については、それはあなたのアーキテクチャによって定義されるべきものです。開始要求/ EndRequestの提案が十分に固体ようです。

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