我有一个c#.net wpf应用程序,它每天向web服务发送数据。我计划在共享主机上托管我的web服务。
我的问题是如何确保我的web服务总是启动和运行?例如,如果我的网络服务器宕机了几天,我需要注意什么?如果一台服务器宕机,我是否需要维护多台服务器?要实现这一点,我需要提到两个服务器的ip地址在wpf windows应用程序?
我搜索了谷歌,但找不到正确的答案。来自社区的任何链接将不胜感激。
我有两个建议:1. 调用web服务方法的一个方法并异常处理它。2. 从<applicationSettings>
部分获取动态URL,然后执行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秒的响应....
方案二示例:
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;
}
我认为这是检查webservice可用性的更好方法。
你在google上找不到答案的原因是没有正确的答案。根据应用程序的需要,每个人处理这些问题的方法都不同。对于你的一些问题,我只能提供一些一般性的建议,甚至那些只是我解决这个问题的方法:
我的问题是如何确保我的web服务总是启动和运行?
最大化正常运行时间很重要,需要仔细设计。您需要优雅地处理错误条件,并能够处理抛出的任何输入。需要注意的是,虽然正常运行时间很重要,但数据的准确性可能更重要。如果是这种情况,你的web服务可能会关闭,而不是看起来是正常的,但它会破坏数据。
如果我的网络服务器宕机几天,我需要注意什么?
您需要以这样一种方式编码您的客户端应用程序,它可以正确地将数据排队并在服务备份时发送数据。此外,您需要在服务中保持聪明(即不要假设上传数据==数据日期)。不要忘记客户端应用程序也可能一次宕机好几天(自然灾害、停电、维护停机、周末崩溃……)
如果一个服务器坏了,我需要维护多个服务器吗?
要实现这一点,我需要提到两个服务器的ip地址在wpf windows应用程序?'
这绝对是一个选择。冗余可以让您在服务器上执行维护或升级,同时最大限度地减少停机时间。有很多方法可以解决这个问题。我可能会使用多个fqdn。所以我会让server1.example.com
和server2.example.com
分别指向不同的服务器(理想情况下是在不同的数据中心)。我还会让这些服务器的DNS条目具有很低的TTL,所以如果它们开始出现故障,我可以将服务器换出到一个新的IP。
然后在你的客户端应用程序中,你可以在两个服务器之间轮询,或者你可以有一个主服务器,另一个只是作为备份。
说了这么多,很多人在设置这样的东西时忘记了一点,那就是测试。您需要测试一台服务器宕机,两台服务器宕机,切换DNS和您能想到的任何其他排列,以确保您的冗余解决方案有效,可扩展,并且不会引起其他问题。