Типичный сценарий. Мы используем веб-службы XML старой школы для связи между фермой серверов и несколькими распределенными и локальными клиентами. Никаких третьих сторон, только наши приложения, используемые нами и нашими клиентами.
В настоящее время мы размышляем о переходе от XML WS к модели, основанной на WCF/объекте, и экспериментируем с различными подходами. Один из них предполагает передачу объектов/агрегатов домена непосредственно по проводнику, возможно, вызывая на них атрибуты DataContract.
Используя IExtensibleDataObject и DataContract, используя свойство Order в DataMembers, мы должны иметь возможность справляться с проблемами с управлением версиями (помните, мы управляем всеми клиентами и можем легко принудительно обновить их).
Я продолжаю слышать, что мы должны использовать специальные проводные объекты передачи данных (DTO) по кабелю.
Почему? Есть ли еще причина для этого? Мы используем ту же модель домена на стороне сервера и на стороне клиента, конечно, предварительно заполняя коллекции и т.д. Только тогда, когда это считается правильным и "необходимым". В свойствах коллекции используются принцип локализации сервисов и IoC для вызова либо "службы" на основе NHibernate, чтобы напрямую получать данные (на стороне сервера), так и клиента службы WCF на стороне клиента, чтобы поговорить с фермой серверов WCF.
Итак - зачем нам использовать DTO?