はIMOワンサイズ全ての答えはありません - あなたは、ワイヤの両端にわたって「コントロール」を持っている場合、それは
を依存(すなわち、独自の.NETクライアントは、WCFの唯一の消費者でありますサービス)の場合、共有タイプは理にかなっています(つまり、クライアントとサーバーで同じエンティティアセンブリを再利用する)。これを行うと、プロジェクト内のすべてのサービスで共通のエンティティを共有することで、結果コード、ページネーション情報、追加のカスタムコンテキスト情報などのホイールを再構築する時間を節約できます。また、生成されたサービス参照を使用することもできますし、クライアント内のClientBase <>を共有ServiceContractインターフェイスに対して直接使用することもできます。この場合、データの正確なシリアライズ/デシリアライズが行われている限り、データはワイヤ全体でどのように見えるかは気にしません。
ただし、WCFサーバーの他の非.NETコンシューマーが存在する場合は、その他の考慮事項があります。
DataContractSerializerは、各メソッド(通常はMethodおよびMethodResponse)に対して、メソッドシグネチャが両方(パラメータ変数名を含む)で公開された要求および応答スキーマを作成します。要求と応答の共通のエンティティが再利用可能なエンティティに「ロール」されるかどうか、または新しいエンティティが毎回作成されるかどうかについて、クライアントのWSDLマッピングテクノロジに依存します。
DCSでは、無関係なフィールド/パラメータを単一のクラスにラップすることはありません。メッセージの署名は
public DoSomethingResult DoSomething(int parameter1, SomeEntity parameter2, string parameter3);
MessageContractsとすることもできます。これにより、ワイヤを介してデータがどのように見えるかについて、より多くのことを考えるように強制され、要求と応答はラッパーエンティティに含まれます。 IMO MessageContractsは、EAIシナリオ(BizTalkコンシューマがある場合など)でうまく機能し、複数のサービス呼び出しで再利用できることを示唆するような共通の応答メッセージとして機能します。
HTH