J'ai la situation suivante: J'ai une procédure stockée qui prend des données d'un tas de tables et crée un enregistrement dans une seule table. Après cela, l'utilisateur final peut obtenir des graphiques basés sur les données de la ligne dans la table résultante. Le problème est que la collecte de données à partir de plusieurs tables dans le résultat peut avoir une très longue période de fonctionnement. Je voudrais à partir de mon application Web donner la possibilité à l'utilisateur de commencer cette collecte de données, et quand c'est fait pour l'informer à ce sujet, afin qu'il puisse accéder au diagramme graphique basé sur les données collectées résultantes. Ma question est de savoir comment mettre en œuvre cela comme meilleure pratique.Collecte de données SQL avec retour à l'application Web asp.net
Répondre
Démarrez un thread d'arrière-plan sur le serveur pour effectuer le traitement. Vous pouvez stocker les résultats de traitement dans session state, la base de données ou un autre emplacement.
Sur le côté client, utilisez un UpdatePanel et un temporisateur pour interroger régulièrement le serveur afin d'obtenir des résultats. Lorsque les résultats sont là, désactivez la minuterie.
Je ferais quelque chose comme suggère Andomar, mais dans un service Windows au lieu d'un thread dans le processus asp.net.
D'abord je voudrais installer une table dans ma base de données qui serait utilisée comme une file d'attente de travail - peut-être votre table de résultats suffirait? Cette table contiendrait un identifiant unique de travail, une description de travail (utilisée par votre service pour déterminer ce qu'il faut faire) et un code de statut de travail (nouveau, fonctionnel, terminé).
Ensuite, je voudrais installer une application de service Windows qui permettrait d'interroger cette table régulièrement. Peut-être aussi souvent av toutes les 5-30 secondes en fonction de votre charge. Le service serait simple: s'il trouvait de nouveaux emplois, il marquerait le premier travail comme "fonctionnant" et ensuite lancerait le processus de collecte de données. Une fois le processus terminé, le service marquerait le travail comme terminé. Enfin, dans mon application asp.net, je voudrais configurer une page de commande où l'utilisateur pourrait demander de nouveaux travaux de collecte de données. La requête insère un nouvel enregistrement dans la table de file d'attente de travail avec le statut comme nouveau et la description du travail si nécessaire. Ensuite, la page redirige l'utilisateur vers une nouvelle page (ou utilise ajax) qui vérifie l'état du travail et recharge toutes les XX secondes pour vérifier si le travail est terminé. Lorsque le code d'état du travail est défini sur Terminé, nous affichons la page sur laquelle l'utilisateur peut afficher le rapport ou télécharger le fichier ou autre.
Ce que je suggère ici est une implémentation simple d'une file d'attente de travaux d'interrogation. Vous pourriez bien sûr faire une version plus sophistiquée en utilisant MSMQ ou quelque chose comme ça, mais cela devrait suffire pour de nombreuses situations, sinon la plupart.
- 1. Collecte de données - service web ou application web hébergée?
- 2. données retour de ASP.net à une grille ExtJS
- 3. Retour des données à partir de l'appel de service Web SQL Server Reporting
- 4. Retour Json à jQuery avec ASP.NET MVC
- 5. Collecte de données POST à partir de champs similaires
- 6. Collecte de données à partir de la réponse SOAP NDFD
- 7. Collecte de données: texte dynamique Boîtes
- 8. ASP.NET MVC - données De retour au format HTML ou XML
- 9. Retour de lignes à partir d'un service Web .NET
- 10. ASP.NET avec SQL
- 11. Retour fonctionnalité de bouton à la page Web avec formulaire et résultat de la recherche + Ajax (ASP.NET)
- 12. Logiciels/langages pour la collecte de données structurées en ligne à partir de clients (humains)
- 13. ASP.NET MVC - Retour de deux dépôts à la vue
- 14. Htmlnode collecte et analyse
- 15. Retour au service Web XML
- 16. Jquery AJAX avec ASP.NET WebMethod Retour de la page entière
- 17. Retour des données des contrôleurs aux vues dans asp.net mvc
- 18. Asp.net mvc: Affichage de retour à partir de la vue
- 19. Routage ASP.NET avec Web Forms
- 20. Service Web REST avec asp.net
- 21. asp.net: qui collecte des données devraient être utilisées pour retourner une table
- 22. Convertir tableau POST Retour à POST des données de chaîne
- 23. Base de données SQL avec Phorum
- 24. Précompilation de l'application Web ASP.NET avec MSBuild
- 25. Comportement de collecte de place avec des références cycliques isolées?
- 26. Intégration de Livelink avec l'application web asp.net
- 27. FluentNHibernate hasMany pas la collecte de remplissage
- 28. Asp.Net liant des données SQL à un répéteur?
- 29. asp.net outil d'administration web base de données personnalisée
- 30. Retour d'un tableau de JS à C# avec COM-Interop