Как и все хорошие ответы на вопросы архитектуры и программирования, ответ «все зависит».
Это зависит от того, насколько уникальны ваши потребности в доступе к данным и дизайне объектов. Это также может зависеть от того, как вы планируете поддерживать ваше приложение в долгосрочной перспективе. Наконец, это сильно зависит от уровня квалификации ваших разработчиков.
Единого универсального ответа на этот вопрос не существует, но, как правило, если основное внимание уделяется созданию программного обеспечения, обеспечивающего некоторую ценность для бизнеса, выберите существующую среду и работайте с ней. Не тратьте свои циклы на создание чего-то, что не приведет к немедленному увеличению прибыли бизнеса (т. Е. Увеличивает доходы и / или снижает затраты).
Например, один из проектов моей организации является ключевым для деятельности компании, должен быть разработан и развернут как можно скорее, и будет иметь долгий срок службы. По этим причинам мы выбрали CSLA с некоторой помощью из Enterprise Library. Мы могли бы выбрать другие фреймворки, но важно то, что мы выбрали фреймворк, который, казалось, хорошо подходил бы нашему приложению и нашему набору навыков разработчика, и мы с ним работали.
Это дало нам хороший старт и сообщество, от которого мы можем получить поддержку. Мы сразу же начали с функциональности, обеспечивающей ценность для бизнеса и не стучащей головой о стену, пытаясь построить каркас.
Мы также находимся в положении, когда в будущем мы можем нанять людей, которые, скорее всего, имели отношение к нашей структуре, что дает им действительно хороший старт. Это должно сократить долгосрочные расходы на поддержку.
Есть ли вещи, которые мы не используем, и накладные расходы, которые нам могут не понадобиться? Может быть. Но я буду торговать этим весь день ради ранней и частой доставки бизнес-ценности в коде.