Реализация отношения DDD/дочернего элемента/агрегата с помощью HTTP API в качестве персистентностиC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Реализация отношения DDD/дочернего элемента/агрегата с помощью HTTP API в качестве персистентности

Сообщение Anonymous »

Мы создаем веб-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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»