Что такое DTO и BO? В чем разница?

Я знаю, что DTO-это объект передачи данных, а BO-бизнес-объект. Но что это на самом деле значит? Когда я должен выбрать одно из них? Из того, что я понимаю, DTO просто используется для передачи данных и не имеет бизнес-логики. Означает ли это, что DTO не имеет никаких свойств только метода(getter и setter)? Но, он все еще имеет свойства БО. Кто-нибудь может объяснить? Спасибо.

2 ответов


DTO используется для передачи данных между слоями/уровнями. Для этого ему не нужен никакой methos, а иногда он даже не должен иметь никаких методов - например, когда DTO подвергается веб-службе.

бизнес-объект-это умный объект, который содержит данные и методы, выполняющие операции (изменение данных) над этим объектом. Когда вы подвергаете BO верхнему слою, он может вызывать общедоступные методы вашего объекта. Иногда вы не хотите этого, и по этой причине вы создаете DTO, который только предлагает данные, но не методы.

DTO не должен транспортировать все данные BO. Когда вы следуете строгому подходу DTO, вы создаете определенные DTOs для каждой операции, представленной на вашем бизнес-уровне. Например, если ваш объект имеет данные аудита, такие как CreatedBy, ModifiedBy, CreatedDate и т. д. и вы создаете метод обновления, который ваш incomming DTO (с обновленным объектом) не должен иметь этих свойств, потому что верхний слой не может их изменить - только бизнес-логика может.


Как правило, DTO имеет относительные статические данные за этот момент до прибытия уровня, но BO может динамически сохранять значение флага состояния и потока; и BO также может быть автономным, чтобы иметь проверку или логическую реорганизацию или суждение для некоторой бизнес-логики; но изменение DTO зависит от изменения уровня данных, которые прошли... Но, изменения БО имеют более широкий диапазон, например, зависит от более динамического обновления с состоянием бизнес-потока, изменения флага, даже идентичность может быть измененные в реальном времени, они предполагают быть захвачены и действовали, чтобы отразить от БО, например, такие как баланс от $ 200 становится нулем, или баланс от $2000 до $5000, то сделка/торговая идентичность или статус изменится ... это большая разница между DTO и BO .