質問

私はコミュニティがこの主題に感じているかを知るために興味があります。私は最近、NHibernateは/ WCFのシナリオと質問に来た(実体は、サービス層で持続)と私はここで間違った方向に行くことも実現します。

(このシナリオではWCF)Webサービスの後ろに永続オブジェクトのグラフ(SQLにNHibernateは、LINQなど)を使用した場合、

私の質問にははっきりで、ワイヤ上でこれらのエンティティを送信するためにあなたが好きですか?それともは全体の軽量化DTOの(サンセリフ循環参照)のセットを作成するのでしょうか?

役に立ちましたか?

解決

のDTO。オブジェクト間のマッピングのためのAutoMapperを使用してください。

他のヒント

私は複数回の前に、このシナリオにしてきたし、両側の経験から話すことができます。もともと私はちょうど私のエンティティをシリアル化しているとして、それらを送っていました。これは、機能的観点からうまく働いたが、より多くの私はもっと私は私が必要以上のデータを送っていたと私はどちらかの側に実装を変化させる能力を失っていたことに気づき、それに見えました。その後のサービスアプリケーションでは、私は、その唯一の目的にして、Webサービスからデータを取得することで作成されたのDTOに撮影しました。

任意の相互運用の外では、ワイヤ上で送信されているすべてのフィールドを考えるように持つことは、私は必要か悪化していないデータを送信していないよ確認するために、(私には)非常に便利です、降りるべきではありませんクライアントへ。

他の人が述べたように、 AutoMapper のDTOへのマッピングエンティティのための素晴らしいツールです。

私はほとんどの場合、ワイヤーの上に転送し、私のサーバーとクライアント上のリヒターエンティティを使用するDTOSを作成しました。サーバー上で、彼らはビジネスロジックを持っているでしょうしながら、クライアント彼らはいくつかの一般的なプレゼンテーションロジックを持っています。 DTOSとエンティティ間のマッピングは、ダムすることができますが、それが起こる必要があります。 AutoMapperのようなツールはあなたを助けるます。

あなたが求めているならば、私は外の世界に、Webサービスからのシリアル化されたエンティティを送っていますか?そして、答えは間違いありません、あなたはそれを行う場合は、最小限の相互運用性を取得するつもりだれます。 DTOを使用すると、C#、Java(登録商標)は、JavaScriptか何かを使っているかどうかを任意の言語でインスタンス化することができる「オブジェクト」のセットを定義することによってこの問題を解決するのに役立ちます。

私はいつもワイヤ上NHibernateはオブジェクトを送信する問題がありました。特に、あなたはActiveRecordのモデルを使用している場合。および/またはあなたのオブジェクトがセッション(不潔)につながりを持っている場合。別の厄介な結果は、NHibernateはを試してみても、おそらく問題を引き起こす可能性があります(あなたはそれを得ることができる前に)メソッドのエントリでオブジェクトをロードすることである。

だから... ...ここにメッセージを取得?問題、問題の問題... DTOのすべての道

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