Разница между объектом передачи данных (DTO) и тупым бизнес-объектом? - PullRequest
1 голос
/ 10 июля 2010

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

Ответы [ 3 ]

2 голосов
/ 14 июля 2010

Когда вы говорите «тупые» бизнес-объекты, вы фактически делаете эти объекты такими же, как DTO.Что делает бизнес-объект бизнес-объектом, так это добавление валидации и другой функциональной логики.Я не согласен с пользователем «нет», когда он говорит, что бизнес-объектам требуются методы установки и получения;они могут прекрасно использовать свойства, им просто нужно гораздо больше, чем любое из них.

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

Подход Rockford Lhotka к CSLA.NET заключается в использовании метода IsValid() для бизнес-объекта с наборомправил, которые были назначены самому объекту.Есть и другие способы решения этой проблемы, но ключ в том, что бизнес-объект выполняет проверку.Как вы подозреваете, «тупые» бизнес-объекты на самом деле являются просто DTO.

1 голос
/ 10 июля 2010

Может быть, немного избыточно, но я уже набрал его, эй;)

Чтобы упростить (много), бизнес-объекты должны иметь методы получения / установки, а DTO должен просто иметь свойства. Бизнес-объекты должны подчиняться вашим бизнес-правилам, но DTO предназначены только для передачи данных; им не нужно подчиняться никаким правилам, и они должны быть спроектированы так, чтобы как можно быстрее вводить и выводить данные.

В языке со слабой типизацией, таком как PHP, DTO не всегда необходимы, поскольку произвольные свойства могут быть переданы универсальным объектам на лету. Тем не менее, они могут быть полезны для документирования и строго типизированных параметров функций.

1 голос
/ 10 июля 2010

Я бы сказал, что единственное различие заключается в намерении, если ваши тупые бизнес-объекты находятся только в состоянии и без поведения.

В этом контексте:

  • DTO предназначеныпередача данных между уровнями приложения
  • Тупые бизнес-объекты являются частью модели вашего домена
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...