Мы создаем веб-API REST на C#. У нас есть некая форма чистой/луковой архитектуры с уровнями приложений, доменов и инфраструктуры. Я хотел бы внедрить в проект некоторые идеи DDD, чтобы модель предметной области фактически представляла структуру предметной области.
Однако наша сохраняемость/инфраструктура не имеет прямого доступа к базе данных с использованием Entity Framework, как многие примеры показывают. Вместо этого мы запрашиваем другие API, и у нас есть репозитории для типов, которые я бы не рассматривал в качестве совокупных корней.
Вопрос 1
Допустим, у нас есть совокупная корневая модель System, которую можно идентифицировать. SystemRepository запрашивает API 1 через HTTP и может вернуть System. Проблема, с которой я столкнулся, заключается в том, что мне нужен метод GenerateReport() в системе для создания отчета для этой системы.
Отчет не является сущностью и может быть создан путем запроса API 2. Я хотел бы сохранить HTTP-вызовы к API 2 на уровне инфраструктуры, другие уровни не должны заботиться о том, является ли хранилищем данных HTTP или базой данных.
Я мог бы создать интерфейс IReportService и реализовать его в инфраструктуре, внедрить его в контроллер и передать в System.GenerateReport(), но это легко ошибочно интерпретировать как услугу BLL. В идеале я бы не хотел видеть использование IReportService на уровне приложения или домена.
Каким образом можно было бы решить эту проблему?
Вопрос 2
Другая проблема заключается в том, что с конечной точки моего контроллера я хочу вернуть отчет. Чтобы использовать способ DDD, мне нужно сначала получить Систему, что означает вызовы API 1. Но клиент уже знает личность Системы при запросе отчета, поэтому я бы хотелось бы обойти вызовы API 1 и просто перейти к API 2 и получить отчет. Здесь я думаю, что мне понадобится реализация кэша, я так думаю?
Подробнее здесь: https://stackoverflow.com/questions/790 ... ersistence
Реализация отношения DDD/дочернего элемента/агрегата с помощью HTTP API в качестве персистентности ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Ошибка ленивого сеанса Hibernate при вставке дочернего элемента для отношения OneToMany
Anonymous » » в форуме JAVA - 0 Ответы
- 40 Просмотры
-
Последнее сообщение Anonymous
-