2012-02-28 13 views
3

サービスはオブジェクト指向ではありません。 OOADベースの設計があるとします。 翻訳レイヤーを使用して、それをDTO(何も振る舞わない)に変換することができます。しかし、これはコードの量が非常に大きくなる原因となります。 WCF(C#経由)のこれに対する代替案は何ですか?SOAのトランスレーション層の代替手段:WCF

SOAとOOADの間にこのような移行があることをお勧めしますか?私たちがSOAを持っているときやそのようなマッピング手法を使うときには、OOADを避けるべきでしょうか?

「動作を削除した後にドメインから直接DTOを作成するのではなく、「操作固有のDTO」を作成することをお勧めしますか? 「オペレーション固有のDTOアプローチ」のためのツールはありますか?

AutoMapperは「動作固有のDTO」または「動作のないドメインからのDTO」を生成しますか?

注:操作特定DTOのアプローチは、ビジネスエンティティとデータコントラクトの間で翻訳Service Layer Guidelines

デザイン変換オブジェクトから“Do not use Abstract Base class in Design; but in Modeling/Analysis”

エキスに答えで参照することができます。

REFERENCES

  1. How to restrict web service data contract properties based on user role
  2. SOA Question: Exposing Entities
  3. What is the best way of using DTOs in a SOA application?
  4. WCF Message & Data Contract, DTO, domain model, and shared assemblies
+0

何に変わりはありませんか?ここで解決しようとしている問題は何ですか? – Oded

+0

@Oded。 "翻訳レイヤ"のアプローチに相応して – Lijo

答えて

1

をご覧ください、これを同じタスクに使用しています。

+0

ありがとうございました。プロセスを自動化することになりますが、この専用のタスク、つまり翻訳のためのコードがあります。翻訳をしたり、OOADを完全に忘れるのは良い習慣ですか? – Lijo

+0

個人的に私は翻訳を「管理下に」保つのが好きです。サービスで公開する「エンティティ」は、サービスが消費するソースデータ型、つまり他のエンティティからオートマトンによって変換されます。コンパイル時の型チェックを維持しながら、出力の変換をきめ細かく制御できます。 –

+0

AutoMapperは「動作固有のDTO」または「動作のないドメインからのDTO」を生成しますか? – Lijo

4

ソフトウェア開発(特にアーキテクチャ)の他のすべてと同じように、これらの質問に対する単一の正解はありません。それは、アーキテクチャ上の目標と制約に依存します。

WCFはDTOで動作します。より基本的なレイヤーに落としてメッセージで直接作業することは可能ですが、実用上の懸念から、DTOはWCFの基本的な部分です。この場合、WCFはアーキテクチャ上の制約の1つと思われるため、DTOを回避する実際的な方法はありません。

質問は次のようになります:マッピングレイヤがあるかどうか?

別の質問に答えることができれば、その質問はかなり簡単に答えることができます。

すでにシステムがある場合は、既存のシステムとWCF境界の間で変換する必要があります。そのような場合、変換レイヤーが必要です。

完全に新しいシステムを構築する場合は、おそらく翻訳しない方が簡単でしょう。

+0

ありがとうございます。あなたの最後のコメントに基づいて質問が投稿されています。「まったく新しいシステムを構築しているなら、翻訳しないほうが簡単かもしれません。 http://stackoverflow.com/questions/9498962/contract-first-soa-designing-business-domain-wcfにお答えください。 – Lijo

+2

@Lijo:マークは、システムの目的がWCFを介して特定の情報を公開することであれば、データレイヤエンティティが渡すと予想される値を直接モデリングできるようにシステムを設計することができます。システムにはさまざまな責任がある場合は、そのデータの小さなサブセットをWCFサービス経由で公開したいだけです。 – StriplingWarrior