2011-03-23 3 views
0

Je développe un objet de journalisation générique qui sera utilisé dans toutes nos futures applications. Il soumettra un journal à MSMQ, qui l'enverra ensuite asynchrone à notre serveur qui enregistrera ce message dans une base de données.Communication asynchrone avec WCF

Actuellement, j'essaie de comprendre l'architecture de la façon dont cela va fonctionner. Du côté du client, une fois qu'un journal est soumis à MSMQ, MSMQ soumettra-t-il le journal à WCF pour l'envoyer au serveur (je suppose qu'un autre point de terminaison WCF recevra les messages)? Fondamentalement, je demande quel est l'ordre des services que le journal parcourra? J'ai lu à propos de netMsmqBinding pour WCF, est ce ce dont j'ai besoin pour envoyer un journal de MSMQ à WCF, puis je peux utiliser un basicHttpBinding pour l'envoyer de WCF à WCF sur le côté serveur?

Quelque chose comme:

[Application client] -> Logger -> MSMQ -> WCF ----------> [Serveur] WCF -> DB

Répondre

2

WCF a netMsmqBinding que peut gérer les messages client et serveur. Si vous l'utilisez, MSMQ sera presque invisible pour vous. Vous allez envoyer un message au service WCF, il sera mis à MSMQ et WCF côté serveur le choisira et invoquera la méthode comme avec toute autre liaison.

Si vous avez de l'expérience dans la création de service WCF, vous devez faire de même mais également créer une file d'attente MSMQ.

Voici les liens utiles: http://sukasom.wordpress.com/2008/08/18/wcf-and-msmq-part-1/, http://msdn.microsoft.com/en-us/library/ms752217.aspx

+0

dois-je configurer le point final NetMsmqBinding sur le côté client ou côté serveur? La façon dont je le vois en ce moment est que je n'ai pas du tout besoin de MSMQ côté serveur. Ou suis-je loin? Comment le client saura-t-il que le serveur a reçu le message afin que le message puisse être retiré de MSMQ sur le client? – jnevelson

+0

@jonathan MSMQ Service est un service autonome. Physiquement, il peut être exécuté n'importe où, sur le même PC que le serveur, le client ou sur un autre. Il doit avoir une adresse persistante ou un nom d'hôte, c'est tout. MSMQ est une communication à sens unique, vous ne pouvez pas vérifier que le message a été délivré par le client. En fait MSMQ est une messagerie sécurisée, la livraison des contrôles d'infrastructure. – Andrey

+0

@jonathan vous configurez le point de terminaison netMsmqBinding des deux côtés. – Andrey