2010-07-31 5 views
1

J'ai une question de conception générale:

J'ai un serveur de messagerie, écrit en C#.
Ensuite, j'ai un logiciel de forum web, écrit pour ASP.NET en C#.

Maintenant, je voudrais intégrer le serveur de messagerie dans l'application de forum ASP.NET. Par exemple, je voudrais que l'on puisse créer une mailinglist à partir du forum, et donner aux utilisateurs l'opportunité de s'ajouter aux membres de la liste de diffusion sur le forum, puis ajouter les nouveaux membres à la mailinglist respective sur le serveur.Intégrer un serveur de messagerie dans ASP.NET

Étant donné que le serveur est une application console/winforms/service séparée, j'ai d'abord pensé que je ferais mieux d'utiliser .NET remoting pour cela.

Mais ma deuxième pensée était, que certains utilisateurs pourraient héberger leur forum sur un hôte où
(a) ils ne disposent pas d'une machine virtuelle où ils peuvent faire ce qu'ils veulent
(b) l'administrateur du hôte pourrait ne pas vouloir installer un serveur de messagerie supplémentaire ou payer un supplément pour ce
(c) l'utilisateur peut avoir un plan de service qui permet seulement d'ajouter une application web, pas de programmes externes (très probable)


maintenant, Je voulais demander:
Est-il possible d'intégrer complètement un serveur mail dans une application ASP.NET n en quelque sorte? (J'ai la source complète de l'application serveur + ASP.NET)

Eh bien, ce ne sera probablement pas une page ou un gestionnaire ashx, mais quelque chose comme un module http? Ou quelle est la manière générale d'intégrer les applications TCP/IP dans asp.net? (Bien sûr, je suppose que les ports respecive sont disponibles/transférés - et je vais également pouvoir l'exécuter avec le serveur de messagerie en tant qu'application externe)

Répondre

1

Dans le cas idéal, je ferais ce qui suit:

installer sur votre propre serveur (s) et d'exposer un service WCF/Web que votre application web/peut interagir avec.

Si vous ne pouvez pas ou ne voulez pas vous permettre de le faire fonctionner seul, vous pouvez alors facturer des frais d'abonnement.

+0

En fait, c'est une très bonne idée. Je charge pour le forum. Ensuite, je charge de nouveau pour la liste de diffusion. Ou j'ajoute ajoute à la mailinglist-mails. –

0

Ce n'est probablement pas une très bonne idée, mais vous pouvez démarrer un thread dans Global.asax et effectuer un traitement en arrière-plan pendant que le pool d'applications est en cours d'exécution/l'application Web n'est pas rechargée. Donc, vous pouvez démarrer votre serveur là-bas, mais vous n'avez aucun contrôle sur sa durée de vie

0

Ajout au commentaire de chris166 ... vous n'auriez pas le contrôle sur le démarrage de l'application. [Puisque l'application ne sera pas chargée jusqu'à ce qu'une page soit demandée ...] C'est probablement une meilleure idée de mettre en place une sorte d'intégration entre l'application web et l'application console/service.

J'aurais probablement tendance à mettre en place une intégration en quasi temps réel où le serveur de mails interroge l'application du forum pour les changements demandés.

+0

Eh bien, je devrais juste demander une page moi-même après chaque redémarrage. Bien, vrai, si je ne suis pas l'administrateur, alors je n'ai aucun contrôle sur cela, ni - puisque je ne saurais pas quand, si, et combien de fois le serveur sera redémarré. Mais pourquoi polling? L'application de forum enverrait des modifications au serveur immédiatement via .NET remoting. Pas besoin d'interroger. Mais la meilleure question serait combien de temps le serveur resterait-il en fonctionnement.C'est-à-dire que la webapp sera récupérée après un certain temps. –

+0

En partie c'est ma préférence ... Je pars du principe que vous avez peu de contrôle sur l'environnement dans lequel l'application Web est déployée. Dans ce cas, une API de service Web semble être la façon la plus fiable/la plus simple de mettre en œuvre l'intégration. Si je me souviens bien IIS peut héberger des applications à distance, mais je pencherais probablement vers des services Web ... –

Questions connexes