Web 服务 - 如何确保我的 C#.net "webservice"始终在共享主机中运行



我有一个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.comserver2.example.com分别指向不同的服务器(理想情况下是在不同的数据中心)。我还会让这些服务器的DNS条目具有很低的TTL,所以如果它们开始出现故障,我可以将服务器换出到一个新的IP。

然后在你的客户端应用程序中,你可以在两个服务器之间轮询,或者你可以有一个主服务器,另一个只是作为备份。

说了这么多,很多人在设置这样的东西时忘记了一点,那就是测试。您需要测试一台服务器宕机,两台服务器宕机,切换DNS和您能想到的任何其他排列,以确保您的冗余解决方案有效,可扩展,并且不会引起其他问题。

最新更新