2011-06-17 4 views
2

a-t-il une expérience avec des points de terminaison WCF asynchrones? J'essaie de comprendre si en utilisant les options de liaison MSMQ je pourrais avoir une configuration dans laquelle le client sait dans quelle file les messages doivent être mis et fonctionnerait de manière transparente si le service wcf (finalement hébergé dans IIS) est hors ligne ou ne répond pas. Je voudrais vraiment obtenir cette configuration parce que de cette façon, lorsque le serveur d'applications est de nouveau en ligne (l'un des nombreux serveurs d'applications que nous aurions pour notre application distribuée), il traiterait tous les messages entrants dans la file d'attente et élaborerait . Je pense plutôt aux opérations qui ont du sens, comme la gestion de la messagerie (envoyer des emails), la journalisation des services (écriture des entrées dans la base de données, journal des événements ou envoi par e-mail) et les processus backend similaires.Rendre le service WCF asynchrone à l'aide de liaisons MSMQ

Mon autre option serait d'utiliser des œuvres d'affaires TIBCO et ems mais en essayant de comprendre ce qui est mieux et si simple, WCF travaillerait synchronisation ou async changeant simplement la liaison de disons NetTcp à MSMQ ....

Merci!

Répondre

4

Vous devez faire la distinction entre asynchrone et en file d'attente.

Vous pouvez effectuer une messagerie asynchrone avec, disons, NetTcpBinding en utilisant l'invocation asynchrone basée sur le client, l'exécution du service asynchrone, la messagerie OneWay et le duplex ou simplement la messagerie OneWay. Cependant, comme vous le dites, les files d'attente apportent les avantages supplémentaires suivants: résilience, mise à niveau de la charge et, selon la version de MSMQ, évolutivité.

Les deux principaux problèmes que vous avez en utilisant les files d'attente sont les suivantes:

  1. Tous les messages doivent être OneWay si le client a besoin d'avoir un moyen de savoir si le traitement a réussi, vous devez concevoir dans votre solution
  2. La sémantique de l'échec de la file d'attente est très différente des échecs de service standard. les files d'attente des lettres mortes et les files d'attente de messages incohérents doivent être vérifiés pour les messages non transformés - encore une fois quelque chose que vous devez concevoir dans votre solution
1

Si vous voulez équivalent à Tibco EMS alors la seule fonctionnalité similaire hors de la boîte supportée par WCF est MSMQ. Si vous avez déjà l'infrastructure Tibco EMS mais que vous voulez toujours utiliser WCF, vous pouvez combiner ces deux parce que Tibco fournit une liaison EMS pour WCF (je ne l'ai jamais testé mais je l'ai vu sur la page de téléchargement du client).

+0

merci, je lisais aussi ceci: http://stackoverflow.com/questions/312612/tibco-ems-net-client-wcf-channel –

+0

Oui, mes collègues utilisent directement la bibliothèque Tibco EMS .NET. Il existe également un support pour Tibco EMS dans Spring.NET. –