#c# #.net #angular #architecture
#c# #.net #угловой #архитектура
Вопрос:
У меня есть приложение angular, работающее против.Централизованный серверный сервер NET core По запросу от клиента angular этот серверный сервер должен извлекать информацию из сторонних баз данных (нескольких), расположенных в другой сети. Каждый клиент назначается определенной базе данных. База данных недоступна напрямую, и невозможно установить API, который будет возвращать соответствующую информацию из этой базы данных из-за сетевых ограничений. Однако возможно поместить агент рядом с каждой такой базой данных, которая сможет взаимодействовать с серверной частью (исходящее соединение).
Таким образом, одной из возможностей, очевидно, является синхронизация требуемой информации с центральной базой данных. Это проблематично по многим причинам, в основном из-за очень большого объема информации, из которой будет использоваться только небольшая часть.
Второй возможностью было бы заставить агента возвращать информацию по требованию — в режиме реального времени.
Идеальным был бы следующий сценарий:
- Угловой клиент вызывает конечную точку X на серверной части
- Серверная часть вызывает конечную точку X на «агенте» (не напрямую, а скорее заставляет агента отвечать информацией на серверную часть
- Информация возвращается клиенту
Я предполагаю, что серверная часть служит прокси-сервером между клиентом и агентом, но существует проблема с тем, что агент недоступен из серверной части.
Каков был бы наилучший подход для реализации чего-то подобного, без повторного изобретения колеса? Учитывая тот факт, что количество API-интерфейсов не очень мало, и ответ агента должен быть в режиме реального времени
Комментарии:
1. Превратить это в сетевую проблему, используя какую-либо форму VPN «точка-точка»?
2. Это невозможно, поскольку каждый такой агент отправляется другому клиенту и должен быть легким в установке, без необходимости настраивать какой-либо общедоступный ip или другую конфигурацию сети для работы. Должен работать как клиент в сетевом смысле, а не как сервер
3. Вам нужно выбрать протокол для извлечения данных. Если это http и json, то вам нужно будет прокси-запросы через что-то. Решите эту проблему, и вы сможете использовать любые инструменты, которые вам нравятся.
4. Да, я понимаю, что могу сделать это, используя необработанные сокеты tcp, если на то пошло, и составить свой собственный протокол для обмена данными между сервером и агентом и каким-то образом поставить запрос клиента в очередь, пока я не получу ответ от агента. Я просто ищу что-то похожее на это готовое, вместо того, чтобы писать все это с нуля