Я багато років розробляю корпоративні додатки, використовуючи .Net. У моїх програмах зазвичай є модель домену, що містить сутності, що відображають таблиці SQL DB. Я використовую шаблон сховища, введення залежностей та сервісний рівень.
Нещодавно ми почали працювати над проектами MVC 3, і ми обговорили, куди подіти яку логіку. Я зіткнувся з тонкою архітектурою Controller / FAT Model і мені було цікаво, як укладеться рівень обслуговування
Варіант 1 - Модельні розмови зі службами
Контролер тонкий, викликає методи на моделях. Моделі "знають", як завантажувати себе з БД і спілкуватися зі сховищами чи службами. Наприклад, customerModel має метод Load (id) і завантажує клієнта та деякі дочірні об'єкти, такі як GetContracts ().
Варіант 2 - Контролер звертається до служб
Контролер просить Служби отримати об'єкти моделі. Логіка завантаження / зберігання тощо знаходиться в сервісному рівні. Модель є чисто суттєвою моделлю лише з даними.
Чому варіант 1 був би кращим вибором, особливо коли ми говоримо про корпоративні додатки, мій досвід підказує мені відокремлювати проблеми, тримати моделі І Контролери якомога тонкішими та мати спеціалізовані служби, що роблять бізнес-логіку (в т.ч. взаємодія з БД)
Дякуємо за всі поради та посилання на хороші ресурси.