ASP Core WebAPI для нескольких сайтов, сохранение данных в разных базах данных

#angular #entity-framework #asp.net-web-api

#angular #entity-framework #asp.net-web-api

Вопрос:

Я веб-разработчик в компании, которая создает веб-приложения для нескольких клиентов. Мне было интересно, возможно ли создать веб-API, который нацелен на n количество баз данных. Я имею в виду, что в основном все сайты будут иметь похожие поля, содержащие данные, плюс-минус пару полей.

Для интерфейса я использую Angular 5 и выше, принимая информацию о форме и отправляя данные в базу данных. Я использую ядро ASP для серверной обработки.

Если у меня есть три отдельных сайта, которым необходимо отправлять данные в три разные базы данных, могу ли я использовать один экземпляр ASP Core Web API для обработки и сохранения данных формы, используя разные строки подключения и Entity Framework. Из пользовательского интерфейса Angular я бы сделал запрос post с информацией о форме и заданным идентификатором и на основе идентификатора получил правильный DB_Context с правильной строкой подключения и обработал данные.

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

Комментарии:

1. Если бизнес-цель приложения одинакова, я не думаю, что будут значительные изменения с разными клиентами. Единый API будет в порядке, но вам необходимо поддерживать надлежащую документацию для API. Кроме того, необходимо определить поля, которые являются обязательными или необязательными, как идентифицировать запрос клиента и т. Д. Подобные вещи необходимо разбирать заранее, чтобы избежать проблем с обслуживанием позже.

2. Интерфейс должен быть «функциональным», чтобы вы могли включать / выключать для клиента.

Ответ №1:

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

На уровне доступа к данным вашего серверной части вам нужно будет создать несколько DbContext, по одному для каждой базы данных, которую вы хотели бы использовать. Эти DbContexts будут использоваться вашими репозиториями, эти репозитории будут использоваться вашими службами, и эти службы будут использоваться вашими контроллерами (например).

Вам просто нужно связать правильные конечные точки с правильными DbContexts, чтобы получить соответствующие данные.

Вот статья о том, как работать с несколькими DbContexts в одном приложении: https://hackingmonkeys.com/blog/2018-03-24/ef-core-multiple-db-contexts-schemas-and-projects

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