Архитектура C# .NET API, когда основным источником данных является служба, подключенная к другому API, а не БД.C#

Место общения программистов C#
Ответить
Anonymous
 Архитектура C# .NET API, когда основным источником данных является служба, подключенная к другому API, а не БД.

Сообщение Anonymous »


Обычно мои программы работают так: интерфейс angular -> серверная часть .NET API. Архитектура API обычно соответствует чему-то вроде.

Проект App.Business – содержит сервисы, бизнес-логику и т. д.

Проект App.Core – содержит интерфейсы для служб, позволяющие внедрить зависимости на уровне контроллера и ослабить зависимости.

Проект App.Domain – содержит модели для передачи в пользовательский интерфейс

App.Infrastructure – когда в нашем приложении есть база данных, это обычно конфигурации EF/EF Core для формирования базы данных

App.WebApi – содержит контроллеры для пользовательского интерфейса (обычно попробуйте оставить это как внедрение службы и вызвать ее, никакой бизнес-логики/манипулирования данными вообще)

В моем последнем случае приложение не имеет базы данных, которую оно вызывает в качестве источника данных, а вместо этого вызывает своего рода API-интерфейс слоя оболочки/промежуточного программного обеспечения, который находится между моим WebApi и сторонним API. Сторонний API написан очень грубо и требует большого количества манипуляций с данными, поэтому он необходим. API-оболочка также имеет множество потребителей, поэтому имеет смысл хранить там прямые вызовы стороннего API.

Обычно я использую инструмент под названием Nswag OpenApi, который по сути создает подключенную службу для генерации всех конечных точек API-интерфейса API-оболочки в моем WebApi, а также всех возвращаемых моделей (экономит огромное количество времени).< /п> Проблема заключается в том, что эта подключенная служба должна находиться в проекте App.WebApi, поскольку API-интерфейс оболочки использует токен от имени пользователя (пользователь IPrincipal), который должен поступать от контроллера. Это создает проблему циклической зависимости при попытке переместить дополнительную бизнес-логику, необходимую в отдельный проект, поскольку все модели/заранее написанные вызовы API находятся в проекте App.WebApi.

Возможно, вы не объяснили это как можно лучше, но если у вас есть опыт использования другого API в качестве основного источника данных, что вы сделали? Лучше всего сохранить вызовы API-оболочки в проекте WebApi, сопоставить результат с локальной моделью, а затем передать его на бизнес-уровень для дополнительной логики. Это потребует от меня переписать каждую модель возврата локально, но я думаю, что это выполнимо, если не найти лучшего варианта.
Ответить

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

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

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

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

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