Entity Framework DDD с использованием частичного класса -persistance ignorance -testable - PullRequest
0 голосов
/ 16 ноября 2010

Я хочу использовать Entity Framework и автоматически сгенерированные классы в моем приложении.

Я не интересуюсь:

  • упорство невежества
  • тестирование

Меня волнует только одно:

  • держать приложение хорошо организованным
  • все упростить

Я читал о Domain Drive Design, и я заинтересован в нем, поскольку он претендует на упрощение сложных приложений. Но когда я читаю код из реального примера приложения, я поражаюсь сложности этого подхода.

Моя идея - использовать частичные классы для расширения классов, сгенерированных из EF. Есть ли кто-то, кто пробует этот подход и может дать мне совет?

Ответы [ 2 ]

3 голосов
/ 19 ноября 2010

Итак, если я вас правильно понимаю, вы надеетесь использовать инструмент доступа к данным, в частности Entity Framework, для реализации вашего приложения.

Похоже, вы не на самом деле заинтересован в создании доменно-управляемого проекта для этого проекта.

Я думаю, что это прекрасная позиция. DDD включает идеи, шаблоны и инструменты, которые полезны за пределами DDD.

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

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

Я буду удивлен, если я не буду опровергнут за это, но позвольте мнеобъяснить.

Вы можете взять ORM (EF), принять концепцию репозитория (хотя я предпочитаю называть его DAO - объект доступа к данным - чтобы избежать путаницы между ними) и реализовать свое приложение, используястандартная многоуровневая / луковая архитектура.Большая часть логики вашего приложения пойдет на службы, реализованные в стиле сценария транзакции с использованием классов данных, которые непосредственно отражают вашу базу данных.

Это проверенный временем способ создания приложения.Это не DDD.Эти две методологии лучше подходят для разных типов, имеют разные плюсы и минусы и т. Д.

Использование EF или аналогичного инструмента должно сделать реализацию больших частей вашего приложения простой и быстрой.Только не увязай, пытаясь сделать DDD, когда ты на самом деле не делаешь DDD.

1 голос
/ 16 ноября 2010

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

Любой, кто говорит, что он не заинтересован в тестировании, в дальнейшем будет ходить в гору проблем в будущем.

«Простота» DDD достигается ценой простоты, слоевабстракции.Прочитайте Эрик Эванс о дизайне, управляемом доменом, и тогда вы поймете, почему это приводит к улучшению дизайна.

Лично я думаю, что вы проиграете в этом уравнении.Вы - профессия, которую вы должны учитывать значение терминов «не рассматривайте тестирование».Что произойдет, если приложение сломается, если вы когда-нибудь получите его для клиентов?Кто будет босс обвинять?Самих себя?Будьте очень, очень осторожны.

...