2009-07-10 10 views
1

私は3層のアプリケーションを用意しており、ユーザーの要求に応じてデータをフィルタリングする必要があります。私はfluentnhibernateで自分のエンティティを管理しています。インフラストラクチャをフィルタリングして3層以上のアプリケーションに適用する

私の質問は、クライアントからサーバーに(wcf経由で)フィルタを渡す方法です。

fnのフィルタクラスは直列化できません。

どのような解決策ですか?

+0

質問として削除されたWPFタグは、その技術と関係がありません。 –

答えて

1

要約:フィルタ仕様を含む直列化可能なオブジェクトを作成します。単純なフィルタの場合、列挙はうまくいくはずです。次に、WCFサービスで、このフィルタ仕様から、アプリケーションの下位層が理解できるものにマップします。

NHibernate(および他のオブジェクトリレーショナルマッパー)は、データベースの取得に結びついています。クライアントのUIがパーシステンスシステムと密接に結びついているのは実際には意味がありません。また、NHibernateフィルタオブジェクトを使用しようとすると、それらのオブジェクトは設計されていないものに使用されます。

私が見たアプリケーションの中には、UI用のもの、UI上の検証ロジック用のもの、クライアントとサービス間のデータ転送用のもの、サーバーではドメイン、永続性ではドメインです。これは極端に見えるかもしれませんが、これはオブジェクトがそれぞれの特定の懸念のニーズを適切に反映できることを意味します。

たとえば、サービスの境界を越えてオブジェクトをシリアル化するには、データ型を妥協する必要があります。 UIやビジネスロジックレイヤーで使用されているオブジェクトとは異なるオブジェクトを使用すると、醜さが隠されます。

+0

あなたはnhibernateのabstarvct restictionを使う方が良いと思いませんか? –

+1

Chen - NHibernateからの制限、または任意のクラスを使用して表示される問題は、NHibernate名前空間をプッシュしてクライアントに参照することです。多くの人々は、NHibernateをサービス層の背後に抽象化しておくことを好みます。この場合、独自の基準オブジェクトを作成し、そのオブジェクトをNHibernate基準にマッピングする必要があります。 –

+0

私はそれをすることを怠惰に思っています... 何もダウンロードできません??????? /// –

関連する問題