我有 ac#.net wpf 应用程序,它每天将数据发送到 web 服务。我计划在共享主机上托管我的网络服务。
我的问题是如何确保我的网络服务始终正常运行?即如果我的网络服务器关闭了几天,我应该注意什么?如果一台服务器出现故障,我是否需要维护多台服务器?为了实现这一点,我是否需要在 wpf windows 应用程序中提及两个服务器的 IP 地址?
我搜索了谷歌,但找不到正确的答案。来自社区的任何链接将不胜感激。
我有 ac#.net wpf 应用程序,它每天将数据发送到 web 服务。我计划在共享主机上托管我的网络服务。
我的问题是如何确保我的网络服务始终正常运行?即如果我的网络服务器关闭了几天,我应该注意什么?如果一台服务器出现故障,我是否需要维护多台服务器?为了实现这一点,我是否需要在 wpf windows 应用程序中提及两个服务器的 IP 地址?
我搜索了谷歌,但找不到正确的答案。来自社区的任何链接将不胜感激。
我有两个建议: 1.调用Web服务方法的方法并异常处理。2. 从部分获取动态 URL <applicationSettings>
,然后执行 httprequest 以检查 url 是否有效
解决方案1示例:
[WebMethod]
public DateTime GetCurrentServerTime()
{
return System.DateTime.UtcNow.ToString("yyyyMMddZHHmmss");
}
在你的应用程序中:
catch (System.Net.WebException ex)
{
messgabebox.show( "Your Web Service not available");
}
它会导致大约 10 秒的响应时间....
解决方案 2 示例:
HttpWebRequest objRequest = (System.Net.HttpWebRequest)HttpWebRequest.Create(strWebServiceUrl);
HttpWebResponse myHttpWebResponse = (HttpWebResponse)objRequest.GetResponse();
if (myHttpWebResponse.StatusCode != HttpStatusCode.OK)
{
DisplayMessage("Your Web Service not available" + "\r" + "Please try after some time");
return;
}
我认为这是检查网络服务可用性的更好方法..
你在谷歌上没有找到答案的原因是没有正确的答案。每个人都根据其应用程序的需求以不同的方式处理这些问题。为了回答你的一些问题,我真的只能提供一般性的建议,即使这些只是我解决这个问题的方法:
我的问题是如何确保我的网络服务始终正常运行?
最大化正常运行时间很重要,并且可能需要仔细设计。您需要优雅地处理错误条件并能够处理向您抛出的任何输入。对此的一个警告是,虽然正常运行时间很重要,但数据的准确性可能更重要。如果是这种情况,最好让您的 Web 服务关闭,而不是看似已启动,但它会破坏数据。
如果我的网络服务器关闭了几天,我需要注意什么?
您需要以这样一种方式对您的客户端应用程序进行编码,以便它可以正确地将数据排队并在服务备份时发送。此外,您需要在您的服务聪明(即不假设上传数据== 数据日期)。不要忘记客户端应用程序也可能一次关闭数天(自然灾害、停电、维护停机、周末崩溃……)
如果一台服务器出现故障,我是否需要维护多台服务器?
为了实现这一点,我需要在 wpf windows 应用程序中提及两个服务器的 IP 地址吗?
这绝对是一个选择。冗余可以让您对服务器执行维护或升级,同时最大限度地减少停机时间。有很多方法可以解决这个问题。我可能会使用多个 FQDN。所以我会拥有server1.example.com
并且server2.example.com
每个都指向不同的服务器(最好是在不同的数据中心)。我也会让这些服务器的 DNS 条目的 TTL 非常低,因此如果它们开始出现故障,我可以将服务器换成新的 IP。
然后在您的客户端应用程序中,您可以在两台服务器之间进行循环,也可以拥有一台主服务器,而另一台仅用作备份。
说了这么多,很多人在设置这样的东西时忘记的一点是测试。您需要测试一台服务器宕机、两台服务器宕机、切换 DNS 以及您能想到的任何其他排列,以确保您的冗余解决方案有效、可扩展且不会导致其他问题。