2009-01-10 3 views
4

Je vais essayer d'être bref. Quelle est la meilleure pratique pour appeler une routine à partir d'une application Web asp.net qui initie un long processus de «fond» qui doit être exécuté? Par exemple, je veux cliquer sur un bouton de ma page Web qui dit «Exécuter la conversion de données» (par exemple). Cette routine de conversion de données peut prendre de 20 à 40 minutes, donc il me semble que mettre tout ce code dans une page web asp.net n'est pas la bonne façon de procéder ... il n'est pas nécessaire d'exécuter ce processus de fond à travers le Serveur IIS. L'application Web et le processus en arrière-plan fonctionneront tous les deux sur mon serveur Win2003 dédié, donc j'ai beaucoup d'options - mais quelle est la meilleure?Architecture d'application ASP.NET: mise en pratique pour de longs processus d'arrière-plan?

Répondre

1

Il y a plusieurs options, en gros, il se résume à vous besoin de n'importe quel type de processus que vous pouvez communiquer avec. Les options que je peux penser au-dessus de ma tête sont; un service Web fonctionnant sous un autre pool d'applications; un service Windows; un processus de ligne de commande démarré par votre code ASP.NET.

La question suivante est de savoir comment communiquer avec l'autre processus. Si vous utilisez une base de données, vous pouvez configurer deux tables communes auxquelles les deux processus peuvent accéder. Le site Web placerait la demande de travail dans une table que le deuxième processus surveillerait. Une deuxième table pourrait ensuite être utilisée pour les résultats, que le site Web surveillerait. Une autre option serait d'utiliser quelque chose comme le Windows Communication Foundation (WCF) ou .NET Remoting pour envoyer des événements entre les processus.

4

Si vous contrôlez le serveur, je suggère de créer un service Windows - prendre la tâche de conversion de données en dehors d'ASP.NET complètement; vous ne voulez pas que ASP.NET redémarre à mi-chemin d'une routine de conversion de 40 minutes.