2015-08-31 5 views
1

Je développe une solution client/serveur WCF dont j'ai besoin d'avoir un canal de communication disponible 24/7 car il y a un service Windows qui publie des données en continu - mon implémentation WF est un abonnement/Publier le service. J'ai mis quelques choses ensemble mais j'ai l'impression d'avoir des problèmes de connexion et d'autres problèmes néfastes. Alors que je lisais sur le site Web de Microsoft à propos de la vérification de l'objet de communication Vérification de la valeur de la propriété ICommunicationObject.State est une condition de concurrence et n'est pas recommandé de déterminer s'il faut réutiliser ou fermer un canal. Cependant, les exemples que j'ai vus utilisent tous cette technique! Microsoft fait cette notation mais ne donne aucune autre information ou conseil concernant la façon de le faire "CORRECTEMENT". Donc, je voudrais savoir quelle est la bonne façon de le faire - ceux qui ont de l'expérience à ce sujet s'il vous plaît chime et aide-moi comme je suis en train d'apprendre WCF - je peux utiliser de bons conseils de comment faire.Bonne façon de vérifier l'état du canal de communication WCF

Répondre

0

Je voudrais savoir quelle est la bonne façon de le faire

Eh bien, une condition de course est une condition de course - ils sont impossibles à attraper avant le fait parce qu'ils ont pas encore commencé. Donc, votre attente d'être capable de connaître l'état de la chaîne avant de l'appeler est déraisonnable. Cependant, nous savons que nous devrions toujours être en mesure de réutiliser un canal s'il n'est pas dans un état défectueux (ou fermé). Donc, nous pouvons juste envelopper notre appel à la chaîne dans un essai ... attraper puis gérer les exceptions comme appropriate.

Si le canal n'est pas réutilisable, il s'agit en fait d'une condition d'erreur qui doit être gérée après coup. Dans un flux de travail, vous pouvez généralement implémenter ceci comme un mécanisme compensation, peut-être en créant un autre canal, puis en l'appelant.