Notifications 客户端blazor应用程序,按下按钮时向计算机上的应用程序发送通知

Notifications 客户端blazor应用程序,按下按钮时向计算机上的应用程序发送通知,notifications,client,blazor,Notifications,Client,Blazor,我有一个blazor客户端应用程序,显示数据库中的数据,用户可以选择一个项目,输入一些文本,然后按一个按钮表示消息已被确认。 我的c#.net应用程序在一台计算机上通过RESTAPI的时间戳记录将数据写入同一个数据库。如何向源应用程序发送通知,表明已使用输入的文本查看消息 我能看到这一点的唯一方法是通过轮询数据库以获取更新的记录,或者我正在寻找某种可以通知计算机上的应用程序的订阅?最简单的方法是轮询,但它在网络上效率低下、丑陋、令人讨厌,并且会消耗浏览器中的内存,这是您不想要的 你还没有提到哪个

我有一个blazor客户端应用程序,显示数据库中的数据,用户可以选择一个项目,输入一些文本,然后按一个按钮表示消息已被确认。 我的c#.net应用程序在一台计算机上通过RESTAPI的时间戳记录将数据写入同一个数据库。如何向源应用程序发送通知,表明已使用输入的文本查看消息


我能看到这一点的唯一方法是通过轮询数据库以获取更新的记录,或者我正在寻找某种可以通知计算机上的应用程序的订阅?

最简单的方法是轮询,但它在网络上效率低下、丑陋、令人讨厌,并且会消耗浏览器中的内存,这是您不想要的

你还没有提到哪个数据库。Postgres可以通过本机发送通知,Oracle可能可以用已知世界中所有的钱来发送通知,一些NoSQL数据库内置了通知,包括谷歌的Firebase和一个名为Sapphire的开源.NET数据库。SQLServer可以通过SqlDependency(System.Data命名空间的一部分)实现这一点,但是您的DB用户需要创建ServiceBroker队列的权限,当然,必须启用该权限

一旦WebAPI收到通知,不管您如何实现,您可以通过多种方式将其推送到Blazor Webassembly。服务器推送API简洁、单向(非常适合您),但不受普遍支持,需要Javascript互操作。服务人员可以运行通知API,但这同样需要互操作,用户往往会本能地阻止网站通知。我当然喜欢

最后,还有WebSocket,它现在在Blazor中本机支持,或者还有Signal,它也有本机支持。这两个都是双工的,因此对于您的需求来说是多余的,但是它们可能是最容易实现和调试的,如果不是为了安全或扩展的话


或者你可以使用gRPC,但这更像是过度杀戮。

有很多方法可以做到这一点。投票会像你建议的那样工作,但我可能不会这么做。您还可以在将数据保存到表中后,点击一个API,让源应用知道如何检查更改。你也可以使用类似Azure Logic应用程序的东西,让任何阅读该应用程序的人都可以使用它,而我仍在绞尽脑汁。