Ne WCF Rappels de Délai d'attente
J'ai écrit un système qui utilise un Duplex NetTcp Canal avec un rappel de la fonction de publication/abonnement serveur.
Dois-je avoir à vous soucier de rappel calendrier si pas de connexion est envoyé après un certain temps, ou le rappel de tuyaux être maintenu indéfiniment?
Vous devez vous connecter pour publier un commentaire.
Le rappel de ne pas être maintenue indéfiniment, Il va chercher les valeurs de délai d'attente que vous avez mis dans votre config. Si vous activez fiable sessions puis vous pouvez définir les délais d'inactivité de vos clients. Vous pouvez configurer les délais d'attente comme ceci:
Lorsque ces valeurs sont atteintes et il n'y a toujours pas de réponse, votre canal de communication devient impeccable et vous avez besoin de re-créer un proxy client pour utiliser le service. La valeur par défaut pour
receiveTimeout
est à 10 minutes de sorte que vous pouvez augmenter, mais assurez-vous d'augmenter votreinactivityTimeout
ainsi, votreinactivityTimeout
devrait être plus grand que votrereceiveTimeout
.EDIT:
Vous pouvez conserver modification de votre
receiveTimeout
par programmation basée sur les valeurs de votre client envoie au serveur, la clé est de maintenir le nouveau valeurs de délai d'expiration de même sur le service et le client.Vous allez à ce sujet sur le client (un exemple, je suis prise d'un service de chat, je suis en train de faire avec WCF et de consommer avec des clients de Silverlight):
Dans la configuration du client:
De sorte que vous pouvez définir plusieurs points de terminaison ou de liaisons dans la config de votre client ou de votre serveur, quel qu'en soit le
événement dans votre application, vous pouvez instancier _clientProxyX à consommer _serviceInstanceX qui seront différents de liaison/d'extrémité valeurs
mais le même contrat que votre précédente instance de service. Dans l'exemple ci-dessus la première liaison a un délai d'attente de 1 minute,
la deuxième liaison de 2 minutes. Un point important à considérer est que si vous souhaitez recréer de nouveaux clients procurations comme ceci, alors vous avez besoin pour le démontage de votre ancien client
proxy et créer une nouvelle, qui effectivement se déconnecte vos clients de service, au moins momentanément.
Aussi vous pouvez modifier ces valeurs (
openTimeout
,closeTimeout
etc.) par programme sur le serveur lors de l'instanciation d'un nouveau service d'accueil.Vous pouvez créer un nouvel hôte, basé sur l'une des configurations de liaison que vous avez défini dans votre configuration,
ou créer une nouvelle configuration, la programmation, quelque chose comme ceci:
Cela ressemble assez bordélique, je sais, mais le point est de la WCF vous donne beaucoup de flexibilité à être en mesure de modifier vous contraignant configs par programmation.
Assurez-vous de vérifier cette grande réponse sur la modification de votre WCF fichiers de configuration. Et vous pouvez aussi facilement créer un ensemble de configuration du service de programmtically.