Chiusura ed eliminazione di un servizio WCF
-
09-06-2019 - |
Domanda
IL Close
metodo su un ICommunicationObject
può generare due tipi di eccezioni come delinea MSDN Qui.Capisco perché il Close
può generare tali eccezioni, ma quello che non capisco è il motivo per cui il metodo Dispose
su un proxy di servizio chiama il metodo Close
metodo senza a try
intorno ad esso.Non è tuo Dispose
metodo l'unico posto in cui vuoi assicurarti di non generare eccezioni?
Soluzione
Sembra essere un modello di progettazione comune nel codice .NET.Ecco una citazione da Linee guida per la progettazione del quadro
Considerare la possibilità di fornire il metodo Close(), oltre a Dispose(), se close è la terminologia standard nell'area.In tal caso, è importante rendere l'implementazione Close identica a Dispose...
Ecco un post sul blog in cui è possibile trovare una soluzione alternativa per questo problema di progettazione System.ServiceModel.ClientBase
Altri suggerimenti
Sì, in genere Dispose è uno dei luoghi in cui si desidera garantire che non vengano generate eccezioni.Tuttavia, sulla base di questo MSDN discussione del forum c'erano alcune ragioni storiche per questo comportamento.Pertanto, il modello consigliato è il paradigma try{Close}/catch{Abort}.