【问题标题】:how to Identify web service availability?如何识别 Web 服务可用性?
【发布时间】:2016-01-11 18:59:33
【问题描述】:

我有大约 500 个网络服务。我厌倦了使用 Ping,但它似乎并不准确。我已经测试了网络客户端并下载到字符串。使用秒表我计算了下载时间。它也不是那么准确。确定 Web 服务可用性的最佳方法是什么?

Stopwatch sw = new Stopwatch();
sw.Start();
pingable = a.IsAddressAvailable(nameOrAddress);
sw.Stop();

public bool IsAddressAvailable(string address)
{
    try
    {
        System.Net.WebClient client = new WebClient();
        client.DownloadData(address);
        return true;
    }
    catch
    {
        return false;
    }
}

【问题讨论】:

标签: c# web-services wcf web repository


【解决方案1】:

您可以创建一个返回服务状态的端点。您可以不时调用此特定的 Web 服务来检查可用性。如果服务器没有响应预定的重试次数)你可以认为它关闭。

它是一个用于检查服务器和服务状态的网络服务。

【讨论】:

    【解决方案2】:

    您需要考虑制定健康检查策略。

    取决于层,你要检查:

    网络可用性?只要 ICMP 数据包在其途中未被任何防火墙拒绝,Ping 就足够了。也许不是一个真正有意义的测试。

    套接字/应用服务器可用性?一个简单的重复套接字连接检查(例如,请参阅Java detect lost connection)是最有效的检查方法,如果有一个侦听器在您的应用程序服务器上启动并运行。但在某些情况下,如果您的 Web 服务的 http 服务器已启动并正在运行,但您的 Web 服务存在例如问题(例如数据库问题),则此测试还不够

    功能可用性?最可靠但也最复杂的策略。您将需要 a) 在您的 web 服务的肥皂层上实现一个 ping 服务或 b) 调用现有的 web 服务操作来检查它们的可用性。但是,调用写入服务时必须小心。要么以幂等方式设计它们(重试/重复请求不会改变任何内容),要么为写入服务准备一些功能性无害的无效请求,并针对响应在 healthcheck-client 上做出断言。

    【讨论】:

    • 如何检查 500 个服务的功能?我不知道输入。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-02
    • 2014-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多