Если приложения небольшие с коротким сроком службы, то не стоит тратить время на абстрагирование проблем в слоях. В больших, долгоживущих приложениях ваши логические / бизнес-правила не должны быть связаны с доступом к данным. Это создает кошмар обслуживания по мере роста приложения.
Перемещение проблем на общий слой или также известный как Разделение проблем , существует уже некоторое время:
Wikipedia
Термин разделение интересов был
вероятно, придумал Эдсгер В. Дейкстра
в своей работе 1974 года "О роли
научная мысль " 1 .
Для Архитектуры Приложений хорошей книгой для начала является Проектирование, управляемое доменом . Эрик Эванс подробно разбирает различные слои приложения. Он также обсуждает импеданс базы данных и то, что он называет «ограниченным контекстом»
Ограниченный контекст
Блог - это система, которая отображает сообщения от самых новых до самых старых, чтобы люди могли оставлять комментарии. Некоторые рассматривают это как одну систему или один «ограниченный контекст». Если вы подписываетесь на DDD, можно сказать, что в блоге есть две или две «ограниченные контексты»: система комментирования и система публикации. DDD утверждает, что каждая система является независимой (конечно, между ними будет взаимодействие) и должна быть смоделирована как таковая. DDD дает конкретные рекомендации о том, как разделить проблемы на соответствующие уровни.
Другие ресурсы, которые могут вас заинтересовать:
Пока у меня не было возможности испытать Большой шарик грязи или Код спагетти Мне было трудно понять, почему архитектура приложений так важна ...
Правильный способ работы всегда будет зависеть от размера, требований к доступности и срока службы вашего приложения. Использовать хранимые процедуры или не использовать хранимые процедуры ... Такие инструменты, как nHibrnate и Linq to SQL, отлично подходят для небольших и средних проектов. Чтобы прояснить ситуацию, я никогда не использовал nHibranate или Linq To Sql в больших приложениях, но мне кажется, что приложение достигнет такого размера, когда на сервере базы данных потребуется выполнить оптимизацию с помощью представлений, хранимых процедур и т.д. поддерживать приложение в рабочем состоянии. Для этой работы понадобятся разработчики, обладающие навыками разработки и баз данных.