Клиентское приложение Blazor, отправка уведомлений в приложение на компьютере при нажатии кнопки - PullRequest
1 голос
/ 07 февраля 2020

У меня есть клиентское приложение Blazor, отображающее данные из базы данных, и пользователь может выбрать элемент, ввести текст и нажать кнопку, чтобы указать, что сообщение было подтверждено. Мое приложение c#. net на компьютере записывает данные в ту же базу данных через остальные API, с отметками времени. Как я могу получить уведомление в исходном приложении, указывающее, что сообщение было просмотрено с введенным текстом?

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

1 Ответ

2 голосов
/ 07 февраля 2020

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

Вы не упомянули, какая база данных. Postgres может делать уведомления изначально, Oracle, вероятно, может делать это за все деньги в известном мире, и некоторые из баз данных SQL имеют его встроенные, включая Google Firebase и открытый исходный код. NET db называется Сапфир. Sql Сервер может сделать это через SqlDependency (часть пространства имен System.Data), но вашему пользователю БД понадобятся разрешения для создания очередей Service Broker, которые, конечно, должны быть включены.

Как только ваш WebAPI имеет Уведомление, как бы вы этого не достигли, вы можете отправить его на веб-сборку Blazor различными способами. Server Pu sh API аккуратный, односторонний (идеально подходит для вас), но не поддерживается повсеместно и требует взаимодействия Javascript. Работник службы может запустить API уведомлений, но для этого снова требуется Interop, и пользователи склонны блокировать уведомления веб-сайта инстинктивно. Я, конечно, знаю.

Наконец, есть WebSockets, которые теперь изначально поддерживаются в Blazor, или есть SignalR, который также имеет встроенную поддержку. Оба они являются дуплексными и, следовательно, излишними для ваших нужд, но их, вероятно, проще всего реализовать и отладить, если не защищать или не масштабировать.

Или вы можете использовать gRP C, но это даже больше похоже на излишнее .

...