Как я должен создать простой ASP.NET MVC-приложение?

Я читал несколько вещей об ASP.NET MVC, SOLID и т.д., и я пытаюсь выяснить простой "рецепт" для небольших приложений ASP.NET MVC, которые бы поставили эти понятия вместе; проблема, с которой меня больше всего беспокоит, заканчивается контроллерами, которые являются слишком сложными и похожими на файлы с кодом в веб-формах, причем в них используется вся бизнес-логика.

Я рассматриваю следующую архитектуру для небольшого приложения, управляемого данными:

  • Контроллеры: обрабатывать запросы, вызывать соответствующую службу и возвращать результат действия в представление;
  • Модели: POCO, обрабатывают всю бизнес-логику, авторизацию и т.д. Зависит от репозиториев, полностью не осведомленных о инфраструктуре сохранения.
  • Хранилища: реализуем IRepository<T>, используйте инъекцию зависимостей и где мой db-код будет находиться; только получает и возвращает POCO.

Я рассматриваю возможность предоставления услуг между контроллерами и моделями, но если они будут просто передавать вызовы методов, я не уверен, насколько это было бы полезно.

Наконец, должны быть модульные тесты, охватывающие код модели, и тесты с модулем + интеграции, охватывающие код репозитория (по возможности "красно-зеленая" практика, если это возможно)

Мысли?

Ответ 1

В последнее время у Иана Купера была хорошая статья:

Fat Controller

Ответ 2

Простой рецепт: (представление) Уровень представления с использованием ASP.NET, ( контроллер) Код Behings или AJAX Services Layer, ( модель) Уровни приложений, уровень бизнес-модели и уровень доступа к данным Persistance/Data.

Конечно, вы можете нарезать и нарезать множество способов справиться со сложностями, чтобы создать четко читаемое и понятное приложение.

Для недавнего дискурса по этому вопросу, который я нашел очень хорошим, ознакомьтесь с этой недавно опубликованной книгой: Microsoft.NET: приложения для архивирования для Enterprise.