2010-09-29 3 views
6

Je cherche à identifier une meilleure pratique ou modèle de conception souvent utilisé pour la communication WCF permettre la communication à se produire et basculer vers un autre service ou service local d'information si le WCF (ou le service initial existe)Modèle de conception pour les fonctionnalités de commutation et de basculement du client WCF?

Je suis pas sûr que cela a beaucoup de sens alors laissez-moi donner un exemple. J'aimerais que cet agent puisse se connecter à un service wcf et (espérons-le) exposer les méthodes de contrat à l'appelant (UI/BO, etc) afin que cet objet puisse appeler ces méthodes, l'agent tente de contacter un service (WCF probable), s'il échoue se connecter à un service secondaire.

Idéalement, toute la logique de basculement et de reconnexion devrait être contenue dans l'agent.

Existe-t-il un modèle de conception qui encapsule un "client wcf avec basculement"?
Peut-être pas un motif de conception, quelqu'un recommande une approche décente?

Répondre

4

je le ferais comme ceci:

  • La configuration du client a une seule référence au service
  • Le client a une classe proxy pour communiquer avec le service
  • Dans la classe proxy il y a un hic try
  • Dans l'essayer de définir l'adresse à celle du service principal et appeler le service
  • Si elle vous n'entrerez dans le bloc catch, ici vous pouvez définir l'adresse à la ba service ckup et appelez-le.
3

Juval Lowy a un grand article sur le protocole de découverte WCF: http://msdn.microsoft.com/en-us/magazine/ee335779.aspx

En un mot, ce tire parti du mécanisme de diffusion de UDP à la découverte de l'emplacement des services qui mettent en œuvre une interface spécifiée. Ainsi, le schéma pourrait être que lorsqu'un client arrive en ligne, il va découvrir l'emplacement d'un service et pour la vie de ce client et le service, ils vont communiquer dans les deux sens. Dans le cas où le fournisseur de services deviendrait indisponible, le client peut revenir à la découverte d'un autre service, puis continuer.

Ce modèle permet à l'administrateur de configurer des services de sauvegarde sans fin avec une configuration minimale sur le client.

2

Je cours actuellement des choses comme Shiraz décrit. J'ai une classe ServiceCaller et une méthode d'appel qui encapsule un délégué qui est l'appel réel sur le service. Avant d'appeler le délégué, je peux faire d'autres choses ainsi que l'emballer dans une tentative d'attraper et de centraliser la gestion des erreurs.

http://www.lukepuplett.com/2010/07/adding-useragent-to-wcf-clients.html

À l'avenir, je prévois d'utiliser NLB ou MSMQ. Pourquoi? Eh bien, le basculement est très étroitement lié à l'équilibrage de charge, et donc je commencerais par NLB.

Essayez ces articles;

http://msdn.microsoft.com/en-us/library/ms730128.aspx

http://www.devproconnections.com/print/net-framework2/load-balancing-and-scaling-your-wcf-services.aspx

Bonne chance, laissez-nous savoir comment vous allez.

Luke

Questions connexes