2 votes

Application blazor côté client, envoyant une notification à une application sur un ordinateur lorsqu'un bouton est pressé

J'ai une application blazor côté client qui affiche des données provenant d'une base de données, et l'utilisateur peut sélectionner un élément, entrer du texte et appuyer sur un bouton pour indiquer que le message a été acquitté. Mon application c# .net sur un ordinateur écrit des données dans la même base de données via des api rest, des enregistrements horodatés. Comment puis-je obtenir une notification vers l'application source indiquant que le message a été consulté avec le texte saisi ?

La seule façon de le faire est d'interroger la base de données pour obtenir un enregistrement mis à jour, ou dois-je chercher une sorte d'abonnement qui peut notifier l'application sur l'ordinateur ?

3voto

Rich Bryant Points 400

La méthode la plus simple est le polling, mais elle est inefficace, laide, désagréable pour votre réseau et consomme de la mémoire dans le navigateur, ce qui n'est pas souhaitable.

Vous n'avez pas mentionné quelle base de données. Postgres peut effectuer des notifications en mode natif, Oracle peut probablement le faire pour tout l'argent du monde connu et certaines des bases de données NoSQL l'intègrent, y compris Firebase de Google et une base de données .NET open source appelée Sapphire. Sql Server peut le faire via SqlDependency (qui fait partie de l'espace de noms System.Data), mais l'utilisateur de votre base de données devra avoir la permission de créer des files d'attente Service Broker, ce qui, bien sûr, doit être activé.

Une fois que votre WebAPI a reçu la notification, quelle que soit la manière dont vous l'avez obtenue, vous pouvez l'envoyer à un assemblage Web Blazor de différentes manières. L'API Server Push est bien conçue, unidirectionnelle (parfaite pour vous), mais elle n'est pas universellement supportée et nécessitera une interopérabilité Javascript. Un service worker pourrait utiliser l'API Notifications mais cela nécessite également de l'interopérabilité et les utilisateurs ont tendance à bloquer les notifications du site web par instinct. C'est certainement mon cas.

Enfin, il y a les WebSockets, qui sont maintenant pris en charge de manière native dans Blazor, ou SignalR, qui est également pris en charge de manière native. Ces deux solutions sont duplex et donc surdimensionnées par rapport à vos besoins, mais elles sont probablement les plus faciles à mettre en œuvre et à déboguer, voire à sécuriser ou à mettre à l'échelle.

Vous pouvez aussi utiliser gRPC, mais c'est encore plus exagéré.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X