あなたはサービスの末端にいて、クライアントを知りません。
なぜあなたはどちらかを選ぶのですか?
経験則として。型を自分で設計する場合は、型が単一の値を表す場合を除き、クラスにする必要があります。単一の値を表す場合は、構造体にする必要があります。
フレドリックは正解です。クライアントがあなたのデータ コントラクトを見ることは決してないことに注意してください。これは XML スキーマに変換され、WSDL に含まれます。クライアント側では、Perl またはクラシック ASP クライアントである可能性があることを思い出してください。これは、値と参照のセマンティクスの概念を持たないものです。
したがって、値と参照はサービスにとってのみ重要であり、クライアントにとっては重要ではありません。
実際、ジョン・サンダースは完全に正しいわけではありません。実際、WCF によって生成された WSDLは、オブジェクトが値型か参照型かを示します。クライアント側に WCF がある場合は、これを利用できます。また、値と参照は、WSDL のさまざまな部分の isNullable 属性に影響を与え、セマンティクスを変更する可能性があります。
もちろん、非互換性の問題に陥らないようにする必要があります。一部のクライアント環境では、null 許容値型が参照型と必ずしも同じであるとは限りません (可能性さえあります)。