构建调用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永远不应该关闭

构建调用web服务的代码的最佳方式

根据您收到的数据类型、检查频率等,我会使用通用解决方案,在失败时多次尝试连接,然后在失败时对"异常"进行分类(根据我的经验,没有两个异常是相同的)。

例如:

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"可以根据您期望连接的"湍流"程度进行调整。