2010-08-24 5 views
0

J'ai un service wcf hébergé dans iis. Le point de terminaison utilise wsHttpBinding.wcf et connexion instable

J'ai beaucoup de clients qui utilisent le service.
La connexion Internet est instable. Les clients utilisent le service pour insérer des données dans db.

Quelle est la meilleure pratique de gestion des exceptions dans le client.
Est-il judicieux d'utiliser l'attribut statemen et d'initialiser une nouvelle connexion chaque fois que le client a besoin d'insérer des données (appelez le service) ou de garder une référence ouverte et de réinitialiser chaque fois qu'il ne détecte aucune connexion?

Je n'aime pas lorsque le client appelle le service pour montrer une erreur à l'utilisateur qui dit de réessayer. Peut-il réessayer automatiquement?

Cordialement

Répondre

1

Tout d'abord ne pas utiliser à l'aide lorsqu'ils traitent avec proxy ou d'un canal WCF. Utilisez ce approach pour fermer le proxy ou le canal. L'utilisation du proxy dépend de votre application, de vos besoins et de votre configuration actuelle. Par défaut, WsHttpBinding utilise la sécurité des messages avec l'authentification Windows et l'établissement d'un contexte de sécurité. Cela signifie qu'au début de la communication, l'utilisateur est authentifié et le contexte de sécurité est créé. Le contexte de sécurité est similaire à la session de sécurité, de sorte que l'utilisateur n'a pas besoin d'être authentifié lors d'appels ultérieurs provenant du même proxy. L'utilisation du contexte de sécurité n'a de valeur que si vous prévoyez d'utiliser un proxy pour plusieurs appels, sinon c'est un surcoût. Mais la création d'un contexte de sécurité a également un effet secondaire: une instance de service unique gère tous les appels de ce proxy. La durée de vie du service est contrôlée par plusieurs délais. Le plus important est le délai d'attente de réception avec une valeur par défaut de 10 minutes. Si aucune requête du proxy n'arrive dans les 10 minutes, l'instance est libérée et le canal est fermé mais le proxy ne le sait pas. La prochaine fois que vous utiliserez le proxy, il déclenchera une exception. Le canal est également fermé par toute exception non gérée lors du traitement de la demande au service. Donc, si vous voulez réutiliser le proxy, vous devez gérer la complexité supplémentaire de la vérification de l'état du canal et recréer le proxy en cas de problème.

+0

Il vous manque probablement un lien dans le texte ("Use this [approach] [1]")? – darpet

+0

Désolé, j'ai ajouté un lien. –

Questions connexes