Question

Jeff a déjà blogué sur utiliser le cache pour effectuer un traitement « hors bande » sur ses sites Web, mais je me demandais quelles autres techniques les gens utilisent pour traiter ce genre de tâches ?

Était-ce utile?

La solution

Il y a des années, j'ai vu Rob Howard décrire une manière d'utiliser un HttpModule pour traiter des tâches en arrière-plan.Cela ne semble pas aussi simple que d'utiliser le cache, mais cela peut être préférable dans certaines circonstances.

Ce billet de blog contient les détails, et il y en a beaucoup d'autres qui capturent les mêmes informations si vous regardez autour de vous.

Autres conseils

Service Windows

Vous voudrez peut-être regarder comment DotNetNuke le fait.Je sais qu'il est écrit en VB.NET, mais j'ai modernisé le code en C#.Je parcourais la source et j'ai remarqué qu'ils avaient une fonctionnalité dans leur zone d'administration pour configurer les tâches planifiées.Ces tâches sont configurées via l'interface d'administration et stockées dans la base de données.Lorsque le site démarre, via le fichier Global.asax, ils ont soit créé un autre thread pour exécuter ce service, qui exécute ensuite les tâches planifiées à l'heure prévue.Je ne me souviens pas de la logique exacte, cela fait un moment, mais c'est certainement une bonne ressource sur la façon dont d'autres personnes ont effectué des processus hors bande pour les applications Asp.Net.Cette technique conserve toujours la logique au sein de l'application Asp.Net, mais elle manque de bande à mon avis.

s'il s'agit principalement de tâches de traitement de données et que vous utilisez MSSQL, qu'en est-il des tâches SSIS planifiées ?

Tâches planifiées ou tâches cron.

Le problème avec les tâches planifiées ou les tâches cron est qu'elles ne partagent pas d'espace mémoire avec le serveur Web.Vous pouvez configurer une tâche planifiée qui demande des pages au serveur Web, mais cela peut créer des problèmes avec les tâches de longue durée.Ce serait bien d'avoir des threads de faible priorité exécutés sur la pile d'applications ASP.Net réelle pour effectuer des tâches utilitaires simples telles que nettoyer les caches, surveiller les ressources et simplement gérer la maintenance générale.

Fichiers de file d’attente simples avec un agent distinct.Pour chaque type de processus hors bande, écrivez un agent .exe distinct qui surveille un répertoire pour les fichiers de file d'attente contenant toutes les données nécessaires pour exécuter le processus spécifié.

Cela peut sembler sale, mais dans le monde réel, je trouve que cela donne beaucoup de flexibilité, vous n'effectuez pas beaucoup de traitement dans l'espace de processus ASP.net et vous pouvez facilement adapter ce style pour exploiter le traitement sur des serveurs Linux bon marché exécutant le processus d'agent sur Mono lorsque vous commencez à avoir besoin de plus de RAM/CPU/disque.

Si vous êtes plus à l'aise avec les pages asp.net, vous pouvez écrire une petite application pour gérer votre travail, puis "pinger" l'application avec un service externe qui surveille votre site Web.Cela maintiendra l'application en vie.

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