2009-09-23 12 views
8

WebアプリケーションのドメインレイヤークラスライブラリをWCFサービスアプリケーションに参照することをお勧めします。WCFサービスを使用したドメインモデルの共有

は、「私はドン、私はWCFサービス一方

で使用する類似したクラスを再定義する必要がないように、それは私に私のドメインモデル上の既存のクラスに簡単にアクセスできます行いますそれはアプリケーションとサービスの間に作成するカップリングのように私は長期的に私にとって困難を作成することができれば興味があります。

また、私のWCFアプリケーションの専用クラスは、サービスで使用されるメンバーのみを含むため、他のものは含まれないため、より効率的になると思います。私のドメイン層のクラスを使用すると、サービスで使用されないクラスに多くのフィールドがあり、不要なデータ転送が発生します。

あなたは私にあなたの経験

答えて

2

私は直接ドメインオブジェクトをWCF経由で直接渡すことに戸惑います。 Krzysztof氏によると、これは、データ通信のことで、ワイヤを通過するものの動作に関する契約ではありません。

私は通常、次の操作を行います。

  • は独自のアセンブリ
  • サービスは、アセンブリデータ契約や事業体アセンブリの両方への参照を持つデータコントラクトを定義します。
  • エンティティを対応するデータコントラクトまたはその逆にマッピングする拡張メソッドをサービス名前空間に作成します。

"データコントラクト"の概念の純粋さを忘れた場合エンティティを渡し始めると、共有エンティティがWCF境界の両側で異なるデザイン方向に引っ張られるように設定されます。必然的に、片方だけに属している、あるいはさらに悪いことになってしまう行動は、概念的には同じことをしますが、WCF境界の両側で異なる方法で公開する必要があります。それは潜在的に長期的に非常に乱雑になる可能性があります。まだ私のように、この記事全体でお越しの方のために

+1

これは完璧です。例があるとか、この実装例(リンク、ブログなど)を見たことがありますか?私がこの実装の小さな例を見た場合に答えることができる私のためのいくつかの質問があります。 – atconway

4

から自分の考えを与えることができれば私はそれがありません感謝します。エンティティはすべて行動に関するものです。 データ契約はすべてについて...データです。加えてあなたが言及したように、あなたはすぐに変化するように反応する能力を損なうので、それらを一緒に結合したくないでしょう。

4

....

チェックアウトこのsite。トピックに関する良い説明。

結論:あなたのアーキテクチャの境界を明確かつ清潔に保つ努力をしてください。あなたはある日信用できるでしょう;)

関連する問題