Meilleure approche pour le feu Discussion / processus sous IIS / WCF, dans un hébergement mutualisé

StackOverflow https://stackoverflow.com/questions/673402

Question

Scénario:. Un service WCF reçoit un XDocument des clients, des processus et insère une ligne dans un tableau MS SQL

Plusieurs clients pourraient être appeler le service WCF en même temps. L'appel ne prend généralement pas longtemps (quelques secondes).

Maintenant, je dois quelque chose pour interroger le tableau SQL et exécuter un autre ensemble de processus de manière asynchrone. Le 2ème processus n'a pas à quoi que ce soit, ni callback est lié à la WCF de quelque façon. Il a juste besoin de lire la table et d'effectuer une série de méthodes et peut-être un appel de service Web (s'il y a des enregistrements bien sûr), mais c'est tout. Les clients du service WCF qui consomment le service mentionné ci-dessus ont aucune idée de cela et ne se soucient pas.

Je l'ai lu sur cette question StackOverflow et je sais aussi qu'un service Windows serait idéal, mais ce service WCF sera hébergé sur un hébergement mutualisé (DiscountASP ou similaire) et, par conséquent, l'installation d'un service Windows ne sera pas une option (comme autant que je sache).

Étant donné que l'architecture est fixe (IE: Je ne peux pas changer la table, il vient d'un format hérité, ni changer le mécanisme du service WCF)?, Quelle serait votre suggestion au sondage / processus ce tableau

Je dirais que je besoin de vérifier toutes les 10 minutes. Il n'a pas besoin d'être instantanée.

Merci.

Était-ce utile?

La solution

Cheat. Exposer ce processus comme un autre service WCF et le feu d'une commande go d'une boîte sous votre contrôle à une heure programmée.

Alors que vous pouvez lancer les discussions de fond dans WCF, ou l'expiration du cache en tant que planificateur d'un pauvre homme les arrêtera quand votre piscine app réutilise jusqu'à ce que le prochain coup sur votre site Web et la piscine app pirouettes à nouveau. Au moins tirer la demande d'une machine signifie que vous savez que vous contrôlez la piscine app va revenir toutes les 10 minutes ou parce que vous avez envoyé une demande dans sa direction.

Autres conseils

Une application web ne convient pas du tout être en cours d'exécution quelque chose à un intervalle fixe. S'il n'y a pas de demandes arrivent, il n'y a pas de code en cours d'exécution dans l'application, et si l'application est inactif pendant un certain temps l'IIS peut décider de le fermer complètement jusqu'à ce que la demande suivante entre en jeu.

Pour certaines applications, il est pas du tout important que quelque chose fonctionne à un intervalle spécifique, mais seulement qu'il a été exécuté récemment. Si tel est le cas pour votre application, vous pouvez simplement garder une trace quand la table a été interrogé pour la dernière, et pour chaque vérification de la demande si le temps est passé pour la table à interroger à nouveau.

Si vous avez accès à administrer la base de données, il y a un planificateur dans SQL Server. Il peut exécuter des requêtes, procédures stockées, et même lancer des processus si vous avez la permission (ce qui est très peu probable sur un hébergement mutualisé, cependant).

Si vous avez besoin du code sur un intervalle spécifique, et vous ne pouvez pas accéder au serveur pour planifier ou exécuter en tant que service, ou ne peut pas utiliser le planificateur SQL Server, il est tout simplement pas faisable.

Assurez-vous pool d'applications « toujours active » et faire tout ce que vous voulez avec vos fils.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top