关闭和处理WCF服务

15
ICommunicationObject上的Close方法可能会抛出两种类型的异常,如MSDN在此处所述。我理解Close方法为什么会引发这些异常,但我不明白为什么服务代理上的Dispose方法在其周围没有使用try调用Close方法。难道你不希望在Dispose方法中确保不会引发任何异常吗?
2个回答

10

这似乎是.NET代码中的常见设计模式。以下摘自《Framework设计指南》:

如果“close”在该领域中是标准术语,请考虑提供Close()方法,除了Dispose()之外。在这样做时,重要的是使Close实现与Dispose相同...

博客文章中,您可以找到解决System.ServiceModel.ClientBase设计问题的解决方法。


当我在VS 2008中添加服务引用时,使用WCF代理生成器的代码是不好的代码,因为它没有良好的处理(关闭)实践。 - Kiquenet

10

通常,Dispose 是你要确保不会抛出异常的地方之一。但是,根据这个 MSDN 论坛帖子,存在一些历史原因造成了这种行为。因此,推荐的模式是 try{Close}/catch{Abort} 范例。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接