Trixon
@Trixon
Суровый ASP.NET веб-разработчик

Какие есть архитектурные паттерны без ORM для ASP.NET MVC?

Здравствуйте, уважаемые разработчики!
Подскажите, пожалуйста, на какие архитектурные паттерны проектирования для веб приложений (ASP.NET MVC 5), без участия ORM, можно обратить внимание? Сейчас использую связку, которую можно обозвать как "Repository + Onion", а структура проекта следующая:

  1. Domain -- доменная модель;
  2. Data -- слой, ссылающийся на Domain, в котором определены классы репозиториев (в них - методы работы с БД), их интерфейсы (пока не разделял для удобства проектирования), а также "сущности", свойства которых совпадают с аттрибутами в таблицах БД;
  3. Infrastructure -- ссылается на Domain и Data, и содержит методы, которые взаимодействуют с интерфейсами репозиториев и кешируют результаты запросов от последних;
  4. Services -- слой, ссылающийся на Domain, Data и Infrastructure, выполняет роль фасада подсистем инфраструктуры (взаимодействуя с интерфейсами слоя Infrastructure);
  5. Util -- ссылается на Data, Infrastructure, Services и отвечает за разрешение зависимостей;
  6. WebApp -- ссылается на Domain, Util и Services -- веб-приложение ASP.NET MVC 5.


Общие требования:
  1. UoW не подходит;
  2. никакого EntityFramework, NHibernate и т.д., все SQL-запросы пишутся вручную;
  3. можно использовать "micro-orm" Dapper;
  4. максимальная изоляция слоёв друг от друга настолько, насколько это возможно;
  5. использование DI.


Огромнейшее спасибо и низкий поклон всем, кто назовёт хоть один паттерн или даст совет по теме!
  • Вопрос задан
  • 774 просмотра
Пригласить эксперта
Ответы на вопрос 1
Сложно посоветовать вам паттерн, т.к. вы в общем-то так и сказали в чем ваша проблема. Непонятно, для решения какой архитектурной задачи вы подбираете паттерн.

Вы указали, что уже используете Репозиторий. Раз так, то у вас и так должно быть все хорошо с абстрагированием от слоя получения данных - вы можете реализовать репозиторий так, как вам нужно, в том числе и SQL-запросами.

Даже если вы не хотите ORM целиком, вы возможно захотите часть из её функционала реализовать самостоятельно для удобства. Например, вы вероятно все-таки захотите иметь Identity Map, что ваши объекты (которые будет отдавать ваш Репозиторий, реализованный ручными SQL-запросами) действительно были объектами, а не записями. Или даже какой-нибудь Lazy Load.

В общем, сейчас создаётся ощущение, что вы не задачу решаете, а пытаетесь собрать рекордную коллекцию паттернов.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы