Je suis nouveau à angular et j'ai une question concernant la récupération de données d'un service Web lorsque les données de la base de données ont changé.
Il y a 2 "parties" au système que je travaille sur: une application Windows qui fonctionne Front Office (non angulaire) et une application angulaire qui fonctionne sur 6 comprimés dans les différents endroits du complexe. Le complexe est assez petit et tous les systèmes ont une bonne connectivité réseau constante. P>
L'application frontale (non angulaire) fonctionne dans le bureau principal. Il est utilisé pour mettre à jour une base de données SQL Server avec les noms des clients actuels lorsqu'ils "enregistrement" sur le complexe et pour "déplacer" le client de 1 emplacement dans le complexe à un autre et / ou "Découvrez" le client de le complexe.
Cette application est une application Windows qui accède à la base de données directe à la base de données à l'aide de procédures d'enregistrement ADO.NET et SQL Server. Ceci est une application héritée qui ne peut pas être modifiée à ce jour. P>
L'autre partie est une application angulaire 6 accessible à partir de 6 comprimés via une page Web. La fonction est de permettre aux utilisateurs de
1) Voir la liste des clients actuels et leur emplacement dans le complexe de
2) "Déplacer" un client de 1 emplacement à un autre
3) "Découvrez" le client du complexe. P>
Les actions sont effectuées par les services Web reposants (écrit en C # & .Net Core) pour l'action spécifique:
A) Obtenez la liste des clients actuels et de leur emplacement,
B) "Déplacer" un client à un emplacement différent de
C) "Découvrez" un client du complexe de
Les données sont stockées dans une base de données SQL Server.
L'interface utilisateur utilise divers composants primeng (dépose-annonces, onglets et une table). P>
de lire divers articles, blogs et postes, il me semble qu'il existe un moyen de déclencher le client à mettre à jour lorsque les données sont modifié sur le serveur depuis l'un des exemples principaux "Comment" "est une application" chat "qui met à jour dans l'application lorsque quelqu'un entre dans un nouveau message. P>
Ce que je ne peux pas déterminer, c'est comment Cause la mise à jour sur les tablettes lorsque le client est déplacé ou vérifié. J'ai pensé à utiliser une minuterie ou un rafraîchissement, mais cette méthode semblerait possibles problèmes de cause si le lieu de la clientèle est mis à jour sur la tablette lorsque l'actualisation s'est produite, causer beaucoup de trafic inutile si les données de la base de données n'étaient pas modifiées, Ou l'actualisation peut ne pas arriver au bon moment pour afficher les modifications du client (l'actualisation peut arriver avant que des mises à jour aient été effectuées, mais les mises à jour se produisent avant la mise à jour de la base de données suivante). P>
J'ai un bouton "Actualiser" Cela appelle les services Web pour obtenir les clients et les emplacements, mais qui oblige l'utilisateur à l'activer manuellement et qu'ils ne se souviennent peut-être pas de le faire et ont donc des données incorrectes. P>
Tous les pointeurs seraient appréciés. p>
L'application angulaire 6 est structurée comme suit:
1. Interfaces distinctes pour les informations client (nom, date, heure) et emplacement de
2. Un service "de données" qui appelle le service Web pour l'action spécifique de
3. Un service "local" contenant la logique pour appeler le service "Data", manipuler les données à venir de l'appel de service "Données".
4. Un composant "principal" qui gère les événements de l'interface utilisateur, affiche des messages d'erreur et des messages de toast de
5. La page HTML qui est l'interface utilisateur p>
main.component.ts: p> local.service.ts p> data.service.ts p>
3 Réponses :
Vous pouvez interroger toutes les x secondes et mettre à jour vos données sur chaque demande. Ou vous pouvez utiliser des sockets Web.
Pour la première méthode, reportez-vous à cette réponse https://stackoverflow.com/a/42920844/7179294
Vérifiez également cette réponse pour plus de détails https://stackoverflow.com/a/54629027/7179294 p>
Merci. Je veux vraiment éviter l'option de vote pour quelques raisons.
La deuxième réponse que je vous ai donné contient d'autres méthodes, elles sont évidemment un peu plus difficiles que de voter, mais les vérifier,
ALA, pour une raison quelconque, la partie restante de mon commentaire sur la recherche de sockets Web ou de Signalr a été laissée
Vous pouvez utiliser seinterval pour appeler API chaque intervalle comme celui-ci mais vous appelez API de cette façon n'est pas une bonne solution la même chose avec refus de service si l'utilisateur concomitable augmente. P > Je vous suggère de changer de socket Web pour mettre en œuvre un service si votre backend est Java. C'est une meilleure performance pour la demande en temps réel. P> package https: //www.npmjs. COM / Package / Websocket P> Si votre backend est ASP.NET Web API, vous pouvez utiliser SignalR Package https://www.npmjs.com/package/@aspnet/signalr p> Nous avions testé entre Si votre backend ne change pas toujours, vous pouvez utiliser Si vous utilisez SQL Server, vous pouvez utiliser SQL Dépendance pour notifier la dernière mise à jour à partir de SQL (Ajouter un nouveau client, Mettre à jour ou supprimer un client. )
Une référence sur l'utilisation https://techbrij.com/database-change-notiformations-asp-net-signalr-sqldependency P> P> Web API code> et signalr code> dans ce cas, si vous WebAPI, la CPU et la mémoire du navigateur augmentent assez rapidement et que nous sélectionnons SignalR comme solution. P> Cached Code> Dans Backend pour de meilleures performances sur Web Server. P> SQL dépendance code> et signalr code> p>
Merci. Le signal est semblable à la promesse. Je ne suis pas trop sûr de la dépendance SQL en raison de certaines des limitations et des exigences. Je regarde les sockets Web ou Signalr à ce moment-là.
Nous pouvons appuyer sur les données du serveur vers le navigateur, en utilisant généralement des squelettes. Dans ce cas, la source de données et la convief de données doivent communiquer avec le même serveur WebSocket, cela fonctionne comme un modèle de publication. Si vous ne pouvez pas modifier votre application frontale, votre question est davantage sur la manière de déclencher les événements de changement de données. SQL Server lui-même ne peut pas faire cela, je vois qu'il y a une discussion sur la manière de regarder le changement de données dans SQL Server, mais je n'ai aucune expérience. Je pense que vous avez besoin d'un composant pour regarder les données Changement de données et envoyer des données au serveur WebSocket sur le côté serveur. Si vous ne pouvez pas faire cela, il semble que l'interrogation du navigateur pour tirer des données sera votre seul choix. p>
Merci. Je suis penché vers les sockets Web ou Signalr à ce stade. L'ensemble de la notification de changement de SQL Server semble être le plus grand bloc routier, même en utilisant le courtier SQL et la dépendance SQL. Je peux envisager d'essayer d'utiliser des déclencheurs pour implémenter la notification SQL Server