Если приложения небольшие с коротким сроком службы, то не стоит тратить время на абстрагирование проблем в слоях. В более крупных, долговечных приложениях логические/бизнес-правила не должны быть связаны с доступом к данным. Это создает кошмар обслуживания, когда приложение растет.
Перемещение проблем с общим слоем или также известный как Separation of concerns, существует уже некоторое время:
Википедии
Термин разделение интересов был , вероятно, придуман Дейкстра в своей статье 1974 года «О роли научной мысли» 1.
Для архитектуры приложений отличная книга для начала - Domain Driven Design. Эрик Эванс подробно описывает различные слои приложения. Он также обсуждает базы данных импеданса и то, что он называет «Локальностью контекста»
Локальности Контекст
блог представляет собой систему, которая отображает сообщения от нового к старому, так что люди могут прокомментировать. Некоторые будут рассматривать это как одну систему или один «ограниченный контекст». Если вы подписаны на DDD, можно сказать, что в блоге есть две системы или два «ограниченных контекста»: система комментариев и система публикации. DDD утверждает, что каждая система независима (конечно, будет взаимодействие между ними) и должна быть смоделирована как таковая. DDD дает конкретные рекомендации о том, как разделить проблемы на соответствующие слои.
Другие ресурсы, которые могли бы вас заинтересовать:
До того, как у меня была возможность испытать The Big Ball of Mud или Spaghetti Code Мне было трудно понять, почему Application Architecture так важна ...
Правильный способ выполнения действий всегда зависит от размера, требований доступности и продолжительности вашего приложения. Использовать хранимые procs или не использовать хранимые procs ... Инструменты, такие как nHibrnate и Linq to SQL, отлично подходят для проектов малого и среднего размера. Чтобы я убедился, я никогда не использовал nHibranate или Linq To Sql для большого приложения, но мое чувство кишки - это приложение, которое достигнет размера, при котором оптимизации необходимо будет выполнять на сервере базы данных через представления, хранимые процедуры и т. Д. чтобы приложение было выполнено. Для выполнения этой работы необходимы разработчики с навыками разработки и базы данных.
хороший вопрос, который все мы должны знать. –