Я читал несколько вещей об ASP.NET MVC, SOLID и т.д., и я пытаюсь выяснить простой "рецепт" для небольших приложений ASP.NET MVC, которые бы поставили эти понятия вместе; проблема, с которой меня больше всего беспокоит, заканчивается контроллерами, которые являются слишком сложными и похожими на файлы с кодом в веб-формах, причем в них используется вся бизнес-логика.
Я рассматриваю следующую архитектуру для небольшого приложения, управляемого данными:
- Контроллеры: обрабатывать запросы, вызывать соответствующую службу и возвращать результат действия в представление;
- Модели: POCO, обрабатывают всю бизнес-логику, авторизацию и т.д. Зависит от репозиториев, полностью не осведомленных о инфраструктуре сохранения.
- Хранилища: реализуем
IRepository<T>
, используйте инъекцию зависимостей и где мой db-код будет находиться; только получает и возвращает POCO.
Я рассматриваю возможность предоставления услуг между контроллерами и моделями, но если они будут просто передавать вызовы методов, я не уверен, насколько это было бы полезно.
Наконец, должны быть модульные тесты, охватывающие код модели, и тесты с модулем + интеграции, охватывающие код репозитория (по возможности "красно-зеленая" практика, если это возможно)
Мысли?