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