Quels sont les avantages de l’utilisation de WCF sur des infrastructures telles que MassTransit ou un client MSMQ écrit à la main?

StackOverflow https://stackoverflow.com/questions/617859

Question

Je cherche à utiliser MSMQ comme solution permettant une exécution asynchrone dans mon projet à venir. Je souhaite connaître les différences entre l'utilisation de WCF et des structures telles que MassTransit ou même un client MSMQ écrit à la main pour placer / lire une tâche sur MSMQ.

Fondamentalement, l’application comportera plusieurs sites Web (internes via LAN ou externes via Internet) lisant / écrivant des données via une couche de service (qu’il s’agisse de la WCF ou du service Web normal). Ensuite, cette couche de service effectuera l'une des opérations suivantes: 1. écrire des données dans la base de données 2. et / ou déclencher le processus d'arrière-plan en plaçant un message dans la file d'attente. 3. évidemment, il peut également récupérer des données de la base de données. Le petit agent (un service Windows) situé de l'autre côté de la file d'attente surveillera la file d'attente et s'exécutera en fonction de la commande de tâche.

Cette architecture sera assez facile à mettre à l'échelle (ajouter plus de files d'attente et d'agents) et à mettre en œuvre par rapport à une exécution RPC ou distribuée ou autre. Et le traitement de l’agent n’a pas besoin d’être en temps réel. Et la couche agent et la couche service sont des applications distinctes, à la différence qu’elles partagent les objets du domaine commun, les référentiels, etc.

.

Qu'en penses-tu? Les suggestions d'architecture pour les exigences ci-dessus sont les bienvenues. Merci!

Était-ce utile?

La solution

WCF ajoute une abstraction sur MSMQ. En fait, une fois que vous avez défini les contrats compatibles (les opérations doivent être OneWay), vous pouvez désactiver MSMQ dans la configuration de manière transparente. (Par exemple, vous pouvez passer à HttpWS normal ou à une liaison NetTcp.)

Vous devez évaluer les autres avantages de la WCF, tels que la sécurité, etc., afin de déterminer en quoi ceux-ci répondent à vos besoins. Encore une fois, ils doivent être assez transparents sur le fait que vous utilisez MSMQ en dessous. Par exemple, l’ajout de la sécurité SOAP et autres devrait "tout simplement fonctionner" indépendamment de l’utilisation de MSMQ.

(Bien que, IIRC, vous devez toujours vous connecter au bureau sur chaque ordinateur qui utilise MSMQ, avec le compte de service qui utilisera MSMQ , pour générer le certificat dans le profil local de l'ordinateur. Et Ensuite, cela ne fonctionne pas très bien avec IIS6, car les profils utilisateur ne sont pas chargés. Une vraie douleur en général, mais rien à faire avec WCF en particulier.)

En dehors de cela:

Avez-vous examiné SQL Server Service Broker? Après avoir utilisé MSMQ + WCF et SSSB, je pense que SSSB est largement plus facile à configurer et à gérer. SSSB fonctionne avec les commandes T-SQL sur n’importe quel client SQL (je l’utilise depuis Mono, sous Linux, avec des transactions). Cela vous permettra également d’envoyer / recevoir des transactions, même à distance (je pense que MSMQ 4 le permet maintenant). Cela prend vraiment beaucoup de peine à la file d'attente des messages, et si vous utilisez déjà SQL Server ...

SSSB est souvent négligé car SQL Management Studio n'a pas de concepteurs d'interface graphique pour tout cela, mais ce n'est pas difficile et c'est une excellente option. L’inconvénient est que si vous souhaitez une capacité d’envoi local (message de file d’attente lorsque le réseau est en panne), vous devez exécuter une instance locale de SQL Express.

Autres conseils

Votre architecture semble saine et raisonnable. Cependant, vous devriez envisager d'utiliser le transport net MSFQ WCF sur des classes MSMQ codées à la main. WCF intègre cette fonctionnalité commune dans un modèle de programmation agréable. De plus, je pense que le protocole utilisé par wcf a été amélioré par rapport à System.Messaging de base

Découvrez la valeur ajoutée par rapport à MSMQ brut:

http://readthedocs.org/docs/masstransit/en/ last / overview / valueadd.html

En résumé, de nombreux concepts de messagerie sont clairement présentés dans l’API avec MassTransit; dans une mesure que vous n'auriez pas si vous codé à la main ou utilisé WCF.

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