2012-05-04 12 views
0

現在、私は中規模のアプリケーションを開発中です。アプリケーションは、異なるプレゼンテーション層を持つn層構造を持ちます。 1つの部分はWebアプリケーションになりますが、センサ通信(この段階でどのように開発されるかは明確ではありません)などの他の部分が処理される可能性があります。BusinessLogicのHibernateセッション(遅延ロードあり)

ビジネスロジック層でNHibernateを直接使用することができ、ビジネスロジックがレイジーローディング時に要求されたデータを上部および水平のレイヤ/パーツに提供できるようにするのが私の質問です。

ビジネスレイヤでセッションを初期化することはできますが、遅延読み込みはまだありますか?その場合、セッションはどのように処理されますか?要求されたデータをセッションと共にラップして、オブジェクトが生存している限りセッションが生き残ることが可能ですか?

よろしくお願いいたします。

答えて

0

私はあなたの質問を完全に理解していますが、私が収集したことから、あなたのクライアントがWebクライアント以外のときに遅延読み込みを使用できるかどうかを尋ねています。
答えはyesです。あなたのSessionがどのように、どこで初期化されたかは関係ありません。

ビジネス層でnHibを直接使用することは、自分自身を含め、一部の人にとってベストプラクティスと見なされます。セッションが生きているように、オブジェクトがalive'-
である限り、一緒にセッションで要求されたデータをラップ」に関するご質問については

私はあなたが何を意味するかわからないんだけど、あなたがあなたのモデルを送る意味場合あなたのクライアントが遅く自分のプロパティを読み込むことができるようにセッションと一緒にクラスを作成します - 私はそこに行かないことを強くお勧めします。
クライアントは、にはしか持たないことを伝えてください。
(これに関するAyende elaborates
この理由から、私はDTOを使用してクライアントと常にコミュニケーションをとるべきだと思います。
クライアントがserver => serverからデータを要求すると、オブジェクトはロードされますが(遅延ロードされたプロパティは初期化されません)、DTOが生成されてクライアントに返されます。

クライアントは遅延ロードされたプロパティ=>サーバがオブジェクトをロードする(nHibの第2レベルcache、またはその他のキャッシング機構を使用して)要求されたプロパティをロードし、クライアントにDTOを返します。

関連する問題