构建调用web服务的代码的最佳方式
本文关键字:代码 方式 最佳 服务 调用 web 构建 | 更新日期: 2023-09-27 18:21:59
我通过httpwebrequest调用web服务,并得到响应。该web服务旨在全天候运行。
在检查服务是否"可用"的情况下,构建此代码的最佳方式是什么?
我所拥有的:
if (NetworkIsAvailable())
{
// Call web service
// Handle exceptions within here.
}
else
{
// to throw a relevant exception that there is no network
}
抛出异常明智吗,还是只返回false?svc永远不应该关闭
根据您收到的数据类型、检查频率等,我会使用通用解决方案,在失败时多次尝试连接,然后在失败时对"异常"进行分类(根据我的经验,没有两个异常是相同的)。
例如:
var failCount = 0;
var succeeded = false;
while ((failCount < 3) && (!succceeded)) {
try {
//call service....
succeeded = true;
} catch(WebException wex) {
//handle wex, for instance look for timeout and retry
} catch(...) {
//Handle other exceptions differently...
LogError("BOOOM: " + excep);
throw;
} catch(Exception ex) {
//handle a general exception
failCount++;
}
}
if (failCount >= 4) {
//Unspecified error multiple times, react appropriately...
}
显然,如果这是一个昂贵的呼叫,你不想多次尝试,我认为这是一种"心跳"检查,并不太昂贵。"failCount"可以根据您期望连接的"湍流"程度进行调整。