2008-11-18 8 views
1

J'ai une application Web qui doit déclencher une procédure SQL Server de longue durée (pour reconstruire une table) lorsque certains critères sont remplis. Quelle est la procédure recommandée pour cela? Je pensais que lorsque les critères seraient remplis, un enregistrement serait inséré dans la base de données et un travail de serveur SQL planifié vérifierait cette table à un intervalle spécifié et déclencherait la procédure. Cela semble un peu hackish cependant.ASP.NET Exécution longue SQL Server Procédure - Comment gérer? Messagerie?

Quelle est la meilleure façon de gérer cela? En tant que question connexe, quelle est la manière préférée de gérer les événements futurs (à savoir envoyer un e-mail 10 jours après l'inscription d'un utilisateur?)

Ce type de scénario correspond-il à la messagerie?

Répondre

1

Votre approche est définitivement viable et c'est une façon que j'ai vu. Par exemple, dans un site Web complexe contenant des gigaoctets de données d'inventaire, la société a implémenté essentiellement ce que vous avez décrit pour permettre une mise à jour partielle des données d'inventaire tout au long de la journée.

D'autres approches que j'ai vues impliquaient un service de planification assis sur le serveur d'applications qui appelait un morceau de code qui gérerait l'événement. (Comme la deuxième partie de votre question). Le fait de le faire dans le niveau Application vous permet d'étendre le traitement des événements et vous pouvez utiliser la base de données comme magasin de sauvegarde pour vous assurer de ne perdre aucun événement.

Votre utilisateur doit-il voir les résultats de l'action? Vous pouvez également lancer un appel asynchrone pour traiter les résultats, puis vous raccrocher à l'utilisateur et lui fournir des informations d'état. Si vous ne voulez pas vous accrocher à l'utilisateur, vous aurez besoin d'une table d'état qui stockera le résultat.

La dernière chose que je voudrais regarder est le courtier de services. Je ne l'ai pas encore utilisé et je ne suis pas sûr que ce soit approprié, mais je le considérerais comme une option. Nous avions commencé à le regarder comme un moyen de lancer des workflows déconnectés à long terme, mais j'ai quitté l'entreprise avant d'arriver à quelque chose.

0

Si vous n'avez pas à vous soucier des résultats après avoir lancé un appel pour exécuter la procédure stockée, il peut être utile de l'exécuter de manière asynchrone.

0

Je voudrais informer l'utilisateur qui a effectué les modifications qui nécessitaient la reconstruction (a) que la reconstruction allait avoir lieu et (b) que la reconstruction était terminée. Je voudrais le faire à la fois par un message dans l'interface utilisateur et un e-mail. Je préfère l'application (pas la DB gérer l'emailing). Je voudrais être en mesure de les notifier dans l'interface utilisateur longtemps après la fin de la transaction (s'ils se déconnectent, puis reconnectez-vous plus tard dans la journée). Quand vous parlez du service de planification sur le serveur d'applications, faites-vous référence à quelque chose comme un service Windows qui est seul responsable de la gestion de ce type de chose?

Questions connexes