DTO и взаимодействие с бизнес-сущностями
От: Аноним  
Дата: 03.10.06 10:17
Оценка:
Реализуется трёхзвенное приложение. На СП создаются объекты ДТО, в них копируются данные из Рекордсета и передаются клиенту. Правильный ли это подход? И ещё вопрос. Предположим что часть полей считаны из БД а часть должны быть вичислены. Вычисления делать в ДТО или на клиенте в бизнес-объекте?
Re: DTO и взаимодействие с бизнес-сущностями
От: Аноним  
Дата: 03.10.06 13:21
Оценка: -1
Здравствуйте, Аноним, Вы писали:

А>Реализуется трёхзвенное приложение. На СП создаются объекты ДТО, в них копируются данные из Рекордсета и передаются клиенту. Правильный ли это подход? И ещё вопрос. Предположим что часть полей считаны из БД а часть должны быть вичислены. Вычисления делать в ДТО или на клиенте в бизнес-объекте?


Для ясности, я бы рекомендовал разделять DTO обьекты и бизнес обьекты (т.к. они относятся к разным слоям), иначе неприятности не заставят себя ждать.

Имхо лучший пример DTO — DataSet т.е. мапирование данных из таблиц DB 1:1 (позволит избежать путаницы при получении и обновлении данных). Кроме того DAC слой не имеет права знать о бизнес сущностях в которые DTO обьекты будут преобразованы. Т.е. DTO не ориентированы на предметную область, они ориентированы на табличное представление.

Бизнес обьекты получаются в результате преобразований обьектов DTO в слое бизнес логики.
И ориентированны на предметную область.
Re[2]: DTO и взаимодействие с бизнес-сущностями
От: Аноним  
Дата: 03.10.06 13:30
Оценка:
А>Для ясности, я бы рекомендовал разделять DTO обьекты и бизнес обьекты (т.к. они относятся к разным слоям), иначе неприятности не заставят себя ждать.

Так и есть. DTO создаются на СП и передаются в клиентское приложение, где находятся бизнес объекты.

А>Имхо лучший пример DTO — DataSet т.е. мапирование данных из таблиц DB 1:1 (позволит избежать путаницы при получении и обновлении данных). Кроме того DAC слой не имеет права знать о бизнес сущностях в которые DTO обьекты будут преобразованы.

Так и есть


А>Бизнес обьекты получаются в результате преобразований обьектов DTO в слое бизнес логики.

А>И ориентированны на предметную область.

Это у меня выполняется на клиенсткой стороне. Но вот какая ситуация. В ДТО есть информация, которая позволяет расчитать какие то недостоющие поля. Имеет смысл их расчитать сразу или сначало передать на клиента, скопировать в бизнес объекты и замет уж расчитать?
Re[3]: DTO и взаимодействие с бизнес-сущностями
От: Аноним  
Дата: 03.10.06 14:57
Оценка:
Здравствуйте, Аноним, Вы писали:

А>>Бизнес обьекты получаются в результате преобразований обьектов DTO в слое бизнес логики.

А>>И ориентированны на предметную область.

А>Это у меня выполняется на клиенсткой стороне. Но вот какая ситуация. В ДТО есть информация, которая позволяет расчитать какие то недостоющие поля. Имеет смысл их расчитать сразу или сначало передать на клиента, скопировать в бизнес объекты и замет уж расчитать?


Имхо зависит от обьема доп. данных, вероятности изменения алгоритма расчета или еще чего-то. Если доп. данные не востребованы за рамками ДТО вроде как ответ очевиден — нечего им делать в бизнес обьектах.
Re[4]: DTO и взаимодействие с бизнес-сущностями
От: Аноним  
Дата: 04.10.06 05:57
Оценка:
А>Имхо зависит от обьема доп. данных, вероятности изменения алгоритма расчета или еще чего-то. Если доп. данные не востребованы за рамками ДТО вроде как ответ очевиден — нечего им делать в бизнес обьектах.

Так ДТО не общий для всех бизнес сущностей. Они соответствуют бизнес-сущностям. Поэтому при изменении бизнес-процессов, скорее всего будет меняться и ДТО....
Re[3]: DTO и взаимодействие с бизнес-сущностями
От: снежок Россия  
Дата: 04.10.06 06:11
Оценка:
Интересно с чем был не согласен человек который поставил -1?

Едиственное с чем я бы поспорил, так это с тем что:
А>>Имхо лучший пример DTO — DataSet

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

и вот с этим:
А>>Кроме того DAC слой не имеет права знать о бизнес сущностях в которые DTO обьекты будут преобразованы.

В ряде случаев, когда бизнес-объекты достаточно просты по структуре можно отказаться DTO для них и оперировать непосредственно бизнес-объектами, в том числе и в DAL-слое. DTO в ощем случае опционален. Ну и естественно он не предназначен для использования в качестве контейнера какой-либо бизнес логики.

p/s/
В целом же ответ был позитивным и отчасти полезным, и не понимаю почему чел поставил -1, при этом не оставив никаких комментариев. Считаю такие оценки простым невежеством...
Re[5]: DTO и взаимодействие с бизнес-сущностями
От: Аноним  
Дата: 04.10.06 06:47
Оценка:
Здравствуйте, Аноним, Вы писали:

А>>Имхо зависит от обьема доп. данных, вероятности изменения алгоритма расчета или еще чего-то. Если доп. данные не востребованы за рамками ДТО вроде как ответ очевиден — нечего им делать в бизнес обьектах.


А>Так ДТО не общий для всех бизнес сущностей. Они соответствуют бизнес-сущностям. Поэтому при изменении бизнес-процессов, скорее всего будет меняться и ДТО....


Имхо совершенно неверно, ДТО вообще не должны зависеть от бизнес сущностей, они зависят только от структуры БД. От бизнес сущностей зависят бизнес обьекты (отвечающие за доменно-ориентированное представление данных).
Re[4]: DTO и взаимодействие с бизнес-сущностями
От: Аноним  
Дата: 04.10.06 06:54
Оценка:
Здравствуйте, снежок, Вы писали:

С>Интересно с чем был не согласен человек который поставил -1?


Он наверно не согласен "в принципе".

С>Едиственное с чем я бы поспорил, так это с тем что:

А>>>Имхо лучший пример DTO — DataSet

Лучший пример как лучшее пояснение, а ни в коем случае не реализация. Хотя ручная реализация ДТО имхо для новичков самая верная техника для того, чтобы испортить представление о ДТО обьектах. У новичков ДТО быстренько сливаются в кучу с бизнес обьектами (а особенно если разработчика подгоняют) и в результате получает ацкий "спагетти-код" из двух слепленных вместе слоев DAC + BL.

С>Он скорее не лучший, а в ряде случаев более удобный так как легко сериализуется и имеет нативный формат хранения — xml.

С>DTO — же это объект переноса данных основная цель которого гонять только те данные которые действительно необходимы

С>и вот с этим:

А>>>Кроме того DAC слой не имеет права знать о бизнес сущностях в которые DTO обьекты будут преобразованы.

С>В ряде случаев, когда бизнес-объекты достаточно просты по структуре можно отказаться DTO для них и оперировать непосредственно бизнес-объектами, в том числе и в DAL-слое. DTO в ощем случае опционален. Ну и естественно он не предназначен для использования в качестве контейнера какой-либо бизнес логики.


Согласен с подходом, не согласен с формулировкой, ДТО никогда не должны рассматриваться как бизнес обьекты. Хотя иногда бизнес обьекты могут быть получены преобразованием 1:1 из ДТО обьектов, и тут БО конечно бессмысленны (до того момента как преобразование 1:1 изменится). Ну и есть еще особенная область — отчеты, где часто БО обьекты тоже не нужны.
Re[6]: DTO и взаимодействие с бизнес-сущностями
От: снежок Россия  
Дата: 04.10.06 07:04
Оценка: +1
Здравствуйте, Аноним, Вы писали:


А>>Так ДТО не общий для всех бизнес сущностей. Они соответствуют бизнес-сущностям. Поэтому при изменении бизнес-процессов, скорее всего будет меняться и ДТО....


А>Имхо совершенно неверно, ДТО вообще не должны зависеть от бизнес сущностей, они зависят только от структуры БД. От бизнес сущностей зависят бизнес обьекты (отвечающие за доменно-ориентированное представление данных).


DTO не зависит ни от BO, ни от структуры БД. Пержде всего это только объект переноса данных. И каких данных — это дело каждого спроектированного вызова. Как DTO мапиться на таблицы БД, а может, кстати, он мапиться не на таблицы, а на параметры хп, а — это дело маппера. Так что в общем случае DTO еще, поюс ко всему, выступает и в роли посредника обеспечивающего слабое связывание м/у BO-layer и DAL.

p.s.
То что DTO "зависят" от BO — я не увидел этого слова.
"Соответствуют" — могут соответствовать! А могут и не соответствовать! Ничего предосудительного в обоих вариантах нет и выбираются в зависимости от ситуации.
Re[2]: DTO и взаимодействие с бизнес-сущностями
От: Lloyd Россия  
Дата: 04.10.06 08:07
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Для ясности, я бы рекомендовал разделять DTO обьекты и бизнес обьекты (т.к. они относятся к разным слоям), иначе неприятности не заставят себя ждать.


А я для простоты порекомендовал бы не приумножать сущности сверх необходимости и следовать существующим, хорошо себя зарекомендовавшим архитектурам, например, от MS. А в ней деление на BizEntity и DTO нет.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[7]: DTO и взаимодействие с бизнес-сущностями
От: Аноним  
Дата: 04.10.06 09:54
Оценка:
Здравствуйте, снежок, Вы писали:

С>Здравствуйте, Аноним, Вы писали:



А>>>Так ДТО не общий для всех бизнес сущностей. Они соответствуют бизнес-сущностям. Поэтому при изменении бизнес-процессов, скорее всего будет меняться и ДТО....


А>>Имхо совершенно неверно, ДТО вообще не должны зависеть от бизнес сущностей, они зависят только от структуры БД. От бизнес сущностей зависят бизнес обьекты (отвечающие за доменно-ориентированное представление данных).


С>DTO не зависит ни от BO, ни от структуры БД. Пержде всего это только объект переноса данных. И каких данных — это дело каждого спроектированного вызова. Как DTO мапиться на таблицы БД, а может, кстати, он мапиться не на таблицы, а на параметры хп, а — это дело маппера. Так что в общем случае DTO еще, поюс ко всему, выступает и в роли посредника обеспечивающего слабое связывание м/у BO-layer и DAL.


С>p.s.

С>То что DTO "зависят" от BO — я не увидел этого слова.
С>"Соответствуют" — могут соответствовать! А могут и не соответствовать! Ничего предосудительного в обоих вариантах нет и выбираются в зависимости от ситуации.

Согласен
Re[3]: DTO и взаимодействие с бизнес-сущностями
От: Аноним  
Дата: 04.10.06 09:55
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, <Аноним>, Вы писали:


А>>Для ясности, я бы рекомендовал разделять DTO обьекты и бизнес обьекты (т.к. они относятся к разным слоям), иначе неприятности не заставят себя ждать.


L>А я для простоты порекомендовал бы не приумножать сущности сверх необходимости и следовать существующим, хорошо себя зарекомендовавшим архитектурам, например, от MS. А в ней деление на BizEntity и DTO нет.


Имхо порочная практика, особенно для новичков.
Re[7]: DTO и взаимодействие с бизнес-сущностями
От: Аноним  
Дата: 04.10.06 09:56
Оценка:
А чем отличаются BO-layer и DAL. DAL это уровень, реализованный на сервере СУБД? т.е. запросы и ХП? А BO-layer это мои бизнес-объекты?
.
Re[4]: DTO и взаимодействие с бизнес-сущностями
От: Lloyd Россия  
Дата: 04.10.06 10:06
Оценка:
Здравствуйте, <Аноним>, Вы писали:

L>>А я для простоты порекомендовал бы не приумножать сущности сверх необходимости и следовать существующим, хорошо себя зарекомендовавшим архитектурам, например, от MS. А в ней деление на BizEntity и DTO нет.


А>Имхо порочная практика, особенно для новичков.


Что именно? Следование проверенным устоявшимся архитектурам?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: DTO и взаимодействие с бизнес-сущностями
От: dshe  
Дата: 04.10.06 10:18
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Имхо порочная практика, особенно для новичков.


А какой нужно иметь минимальный опыт работы в IT, для того чтобы этой практикой можно было воспользоваться, не опасаясь при этом за ее чрезмерную порочность?
--
Дмитро
Re[3]: DTO и взаимодействие с бизнес-сущностями
От: Аноним  
Дата: 04.10.06 10:31
Оценка:
А применительно к исходному вопросу, нужно возвращать бизнес-сущности сразу с СП?
Re[8]: DTO и взаимодействие с бизнес-сущностями
От: снежок Россия  
Дата: 04.10.06 10:53
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>А чем отличаются BO-layer и DAL. DAL это уровень, реализованный на сервере СУБД? т.е. запросы и ХП? А BO-layer это мои бизнес-объекты?


DAL — это уровень, который отвечает за обращение к БД или к-либо другому хранилищу и производит отражение DTO/BO на хп и запросы идущие к хранилищу.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: DTO и взаимодействие с бизнес-сущностями
От: снежок Россия  
Дата: 04.10.06 10:53
Оценка:
Здравствуйте, <Аноним>, Вы писали:
А> Ну и есть еще особенная область — отчеты, где часто БО обьекты тоже не нужны.
Это как посмотреть...
Никогда не встречалось понятие Report Data Object?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: DTO и взаимодействие с бизнес-сущностями
От: Lloyd Россия  
Дата: 04.10.06 11:11
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>А применительно к исходному вопросу, нужно возвращать бизнес-сущности сразу с СП?


А что в данном контексте значит сразу?

P.S. Для "сервера приложений" лучше использовать "апп-сервер", а то первая мысль, возникающая когда наталкиваешься на СП — это то что речь идет о хранимых процедурах (stored procedure).
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[9]: DTO и взаимодействие с бизнес-сущностями
От: Аноним  
Дата: 04.10.06 11:15
Оценка:
С>DAL — это уровень, который отвечает за обращение к БД или к-либо другому хранилищу и производит отражение DTO/BO на хп и запросы идущие к хранилищу.

То есть DataMappers? Они выполняют скл и результат из рекордсета перегоняют в объекты?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.