Что такое DTO и BO?В чем разница? - PullRequest
11 голосов
/ 09 января 2011

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

Ответы [ 2 ]

15 голосов
/ 09 января 2011

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

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

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

1 голос
/ 30 декабря 2014

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

...