2010-03-23 7 views
0

J'ai besoin de créer une liste d'email en envoyant à beaucoup d'email. quelle est la meilleure solution en mvc pour appeler le fonctionnement à long terme? mieux avec l'exempleasp.net mvc longue opération

+0

c'est un hébergement virtuel, j'ai besoin d'une solution exactement là-dessus, mais il permet seulement asp.net – kusanagi

Répondre

0

Je vous suggère d'enregistrer les messages que vous souhaitez envoyer dans un DB par exemple, ainsi que les bénéficiaires. Ensuite, vous pouvez utiliser un planificateur (comme Quartz.NEt) qui vérifie toutes les minutes (par exemple) s'il y a des emails à envoyer et dans le cas où il y en a, il envoie jusqu'à 10 mails à chaque fois.

-1

Si vous pouvez utiliser ASP.NET MVC2, j'utiliser la nouvelle Asynchronous Controller

+0

pourquoi a-t-il été rejeté? –

+0

Je n'ai pas voté en bas mais je peux voir pourquoi quelqu'un l'a fait: L'envoi de beaucoup de courriels dépasserait facilement la limite de temps avant l'expiration du navigateur, donc cela n'aide vraiment pas dans ce cas.Le contrôleur asynchrone permet d'utiliser les threads de manière plus efficace sur un site «stressé», mais n'aide pas si une demande prend plus de temps que le navigateur est prêt à attendre. –

1

Vous ne souhaitez pas exécuter de processus longs comme celui-ci sur votre serveur Web. Vous voulez une application "backoffice" pour gérer l'envoi de courriels et de réponses. Ecrivez une autre application qui s'exécute sur un autre ordinateur. Avoir lu les informations nécessaires de la base de données et envoyer les emails. Si vous envoyez des e-mails, vous devrez également gérer les réponses. Cette application de backoffice devrait gérer les deux.

0

probablement vous devrez effectuer les opérations suivantes: -

  1. Créer une file d'attente où vous pouvez mettre emplois pour exécuter
  2. Créer un service qui traite cette file d'attente
  3. signaler Peut-être que les progrès de la service retour à l'application du site Web
  4. Peut-être signaler le retour à l'utilisateur de l'application Web soit à la page r eFresh ou plus dynamiquement en utilisant Ajax

Quelques options pour chacun de ces éléments: -

1) Options pour la file d'attente comprennent une en file d'attente de mémoire de file d'attente <>, une file d'attente stockées dans une base de données, un MSMQ , une file d'attente distante comme la simple file d'attente de messages d'Amazon. Le choix que vous avez choisi dépendra de la tolérance à la panne que vous voulez que la solution soit, si vous voulez redémarrer après une panne, et si vous avez besoin de distribuer le travail à plusieurs serveurs.

2) Les options du service incluent un thread dans votre application Web ou un service NT. Encore une fois cela dépendra de vos besoins en matière de tolérance aux pannes et de redémarrage.

3) La manière dont vous rapporterez la progression dépendra du type de file d'attente que vous utiliserez. Pour MSMQ, vous pouvez avoir des messages 'corrélés' qui reviennent dans l'autre sens. Pour une file d'attente de base de données, vous pouvez marquer la progression dans la base de données. Vous pouvez également appeler un service Web sur l'application Web pour signaler les progrès.

4) Si vous souhaitez qu'une barre de progression dynamique (ou similaire) s'affiche à l'utilisateur pendant la progression du travail, vous pouvez implémenter un service Ajax qui transmet les informations de progression du serveur au navigateur. Pour l'envoi de messages électroniques, je recommande d'utiliser une base de données comme file d'attente car vous voudrez probablement les suivre sur une longue période et marquer les e-mails non distribuables, les e-mails lus, etc. dans votre base de données.

Questions connexes