2

プレゼンテーション層で nHibernate の依存関係を切り離す方法についてアドバイスが必要です。現在、次のレイヤーで構成される (簡略化された) 3 層の C# winforms アプリケーションがあります。

  • ユーザー インターフェイス (UI)
  • ビジネスロジック (BAL)
  • データ アクセス ロジック (DAL)

このアプリケーションを ORM (nHibernate) に移行しており、理想的には nHibernate を参照する DAL のみを使用したいと考えています。また、nHibernate に含まれる「Unit of Work」機能を採用し、「Session per conversation」方式を採用したいと考えています。

これを実現するには、UI でセッションを作成して開き、セッションを BAL 経由で DAL に渡す必要がありますが、BAL と DAL の両方で nHibernate への依存関係を作成しないと、これを実現できません。

アドバイスをいただければ幸いです。UI と BAL で nHibernate への参照を避けるには、アーキテクチャをどのように構築する必要がありますか。何か案は?

また、UI に DAL への参照を持たせたくないことも付け加えておく必要があります。

UI => BAL => DAL

4

4 に答える 4

2

UnitOfWork パターンは NHibernate の Session オブジェクトによって実装されているため、そのようにすることは不可能です。ただし、DAL からは NHibernate のみを参照する必要があります。DAL はアプリケーションのコンテキストについて何も知らないため、これはまったく役に立ちません。このコンテキストは、UnitOfWork を使用するために必要です。

于 2010-12-13T11:55:05.953 に答える
1

たとえば、ここで説明する「GuyWire」パターンを使用して、別のクラス ライブラリで IoC コンテナーを構成します。

http://nhforge.org/blogs/nhibernate/archive/2009/11/07/nhibernate-and-wpf-the-guywire.aspx

于 2010-12-13T11:51:20.430 に答える
1

NHibernate 3.0 Cookbookを見てください。NHibernateを理解するのに非常に役立ちます。

エンティティを抽出し、POCO (Plain Old CLR Objects) を作成する必要があります。UI には NHibernate の知識は必要ありません。データを操作するためのメソッドをデータレイヤーに作成します。

于 2010-12-13T00:26:18.247 に答える
0

私は最近、asp.net mvc アプリケーションで nhibernate を使用して分離アーキテクチャの例を作成しました。リポジトリ パターンと個別の作業単位を使用します。これらの概念のほとんどは、シック クライアントでも再利用できるはずです。これは私のブログの検索リンクで、興味深いかもしれない投稿があります。

http://blog.bobcravens.com/?s=Nhibernate

これで始められることを願っています。ご不明な点がございましたら、お知らせください。

ボブ

于 2010-12-13T00:32:25.427 に答える