В настоящее время у меня хорошее сравнение, потому что я работаю над двумя проектами, использующими разные подходы. Я далек от того, что «это плохо, и это хорошо», потому что это написано в некоторых шаблонах. Я знаю шаблоны, мне нравятся образцы, но я никогда не слепо следовать за ними, чтобы быть прав. Я всегда использую то, что мне нужно в настоящее время для достижения текущих целей.
В первом приложении, использующем объекты домена, разработка выполняется очень быстро. Немногие изменения в нескольких местах, и у вас есть дополнительные свойства, формы ввода и т. Д. Вы не беспокоитесь о слоях, просто расширяете/меняете код и переходите к другой проблеме.
Во втором приложении, где всегда есть объект для использования здесь, где-то еще, есть десятки классов, которые выглядят одинаково, делая то же самое и тонну кода преобразования между различными версиями одних и тех же объектов. Еще хуже то, что некоторые разработчики делают некоторую логику в «этой версии» класса, а другая логика делается на «этой версии». Развитие очень болезненно и требует много испытаний после этого. Изменение простой вещи требует большого внимания, и необходимо изменить код. Мне действительно не нравится это приложение для этого, потому что я никогда еще не видел выгоды для бизнеса от этого подхода, по крайней мере в течение прошлого года (и мы находимся на стадии производства с года). Это приложение в три-четыре раза дороже для разработки и обслуживания, чем первое.
Итак, мой смешной ответ на вопрос: это зависит. Если вы работаете в команде 10-20 человек, вам нравится приходить на работу, пить немного кофе, разговаривать с другом, делать несколько простых вещей и идти домой, много промежуточных объектов и код конвертации будут вам полезны. Если ваша цель - быть быстрой и дешевой, если вы хотите сосредоточиться на бизнес-слое, новых функциях, быстрых изменениях и т. Д., Если вы касаетесь бизнеса программного обеспечения и хотите наживать свой проект (мы делаем все это, чтобы быть окончательно проданным, правильно?), второй подход, вероятно, был бы лучше.
+1, но как насчет простых объектов домена, таких как категория, которые имеют только идентификатор и метку? Для некоторых приложений с большим количеством из них может стать довольно раздражающим создание MyEntity {Id, Label} и MyDto {Id, Label}, где единственным отличием является имя. – mathieu
@mathieu - Очевидно, вы можете использовать свое усмотрение, когда дело доходит до таких примеров :). Объекты домена, такие как ваш пример, не будут содержать логики домена, и поэтому это будет приемлемо. – GenericTypeTea
ОК, вот что я думал. если у вас есть время, вы могли бы взглянуть на это: http://stackoverflow.com/questions/3539108/asp-net-mvc-model-inheritance? Я не очень-то новичок в техническом материале asp.net mvc, но для «философского» и дизайна я мог бы использовать некоторые указатели! – mathieu