ASP.NET Core - как вызывать сообщения SignalR из внешнего приложения - PullRequest
0 голосов
/ 16 декабря 2018

Я планирую запустить приложение ASP.NET Core с SignalR.Будет другое внешнее приложение, работающее на другом хосте, но в той же внутренней сети, что и мое приложение.

Цель состоит в том, чтобы уведомлять клиентов (веб-браузеры), подключенных к моему приложению, когда данные в базе данных имеютбыл измененЯ собираюсь сделать это с помощью SignalR через WebSockets.

Проблема в том, что это внешнее приложение будет записывать эти изменения в базу данных в какой-то неизвестный момент времени.Мне нужен способ уведомить мое приложение о том, что внешнее приложение внесло изменения, чтобы мое приложение могло затем найти данные из базы данных и уведомить клиентов через SignalR.Этот процесс должен происходить в режиме реального времени, поэтому периодически проверять наличие изменений невозможно.

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

Подход 1. Отправка HTTP-запроса из внешнего приложения на выделенную конечную точку в моем приложении ASP.NET Core, когда произошло изменение.Проблема в том, что мне нужно каким-то образом ограничить доступ к этой конечной точке HTTP в моем приложении, либо с помощью какой-либо аутентификации, либо путем выставления конечной точки на другом порту, чтобы к нему мог обращаться только это одно внешнее приложение в моей сети.Я не знаю лучшего способа добиться такого рода ограничений.Можно ли даже разместить приложения ASP.NET Core на разных портах, используя один и тот же статический синглтон SignalR?Каков наилучший подход для защиты этой конечной точки?

Подход 2. Сокет-соединение между моим приложением и внешним приложением, чтобы внешнее приложение могло уведомить меня через это соединение.Я не знаю, возможно ли это даже в сочетании с ASP.NET Core SignalR или как реализовать такое соединение.Есть ли библиотеки, которые могли бы поддержать меня?

Есть ли другие, более подходящие подходы к этой проблеме?Какой из моих подходов будет более гибким?У вас есть идеи о проблемах, упомянутых в каждом подходе?

Спасибо за вашу помощь!

...