Любой из них будет работать, поскольку в большинстве случаев клиент будет получать представление WSDL / MEX, а не ваш тип напрямую.В любом случае, не забудьте использовать явные атрибуты [DataContract]
/ [DataMember]
, чтобы они действительно основывались на контракте , а не смотреть на поля.
(примечание: не наследует DTO от вашего типа домена; DTO должен быть отдельным, если вы идете по этому пути)
Лично я предпочитаю отдельный DTO, но я знаю, что люди успешно раскрывают модель доменанапрямую (например, как работает LINQ-to-Data-Services).