Я много лет занимаюсь разработкой корпоративных приложений с использованием .Net. Мои приложения обычно имеют модель предметной области, содержащую объекты, отображаемые в таблицы базы данных SQL. Я использую шаблон репозитория, внедрение зависимостей и уровень обслуживания.
Недавно мы начали работать над проектами MVC 3 и спорили, где какую логику поставить. Я познакомился с архитектурой тонкой модели контроллера / FAT и задавался вопросом, как уровень сервиса впишется в
Вариант 1 - Модель разговаривает со службами
Контроллер тонкий, вызывает методы на моделях. Модели «умеют» загружаться из БД и разговаривать с репозиториями или сервисами. Например, customerModel имеет метод Load (id) и загружает клиента и некоторые дочерние объекты, такие как GetContracts ().
Вариант 2 - Контроллер обращается к службам
Контроллер просит службы получить объекты модели. Логика загрузки / хранения и т.д. Находится в сервисном слое. Модель является чистой сущностной моделью только с данными.
Почему вариант 1 был бы лучшим выбором, особенно когда мы говорим о корпоративных приложениях, мой опыт подсказывает мне разделить проблемы, сделать модели И контроллеры как можно более тонкими и иметь специализированные службы, выполняющие бизнес-логику (включая взаимодействие с БД)
Спасибо за все советы и ссылки на хорошие ресурсы.