Fermeture et suppression d'un service WCF
-
09-06-2019 - |
Question
Le Close
méthode sur un ICommunicationObject
peut lever deux types d'exceptions comme le souligne MSDN ici.Je comprends pourquoi le Close
méthode peut lever ces exceptions, mais ce que je ne comprends pas, c'est pourquoi le Dispose
La méthode sur un proxy de service appelle le Close
méthode sans try
autour de.N'est-ce pas votre Dispose
méthode le seul endroit où vous voulez vous assurer de ne lancer aucune exception ?
La solution
Cela semble être un modèle de conception courant dans le code .NET.Voici une citation de Lignes directrices pour la conception du cadre
Pensez à fournir la méthode Close(), en plus de Dispose(), si close est la terminologie standard dans le domaine.Ce faisant, il est important que vous rendiez l'implémentation Close identique à Dispose...
Voici une article de blog dans lequel vous pouvez trouver une solution de contournement à ce problème de conception System.ServiceModel.ClientBase
Autres conseils
Oui, Dispose est généralement l'un des endroits où vous souhaitez vous assurer que les exceptions ne sont pas levées.Cependant, sur la base de ce MSDN fil de discussion il y avait des raisons historiques à ce comportement.En tant que tel, le modèle recommandé est le paradigme try{Close}/catch{Abort}.