繁体   English   中英

如何确保我的C#.net“webservice”始终在共享主机中

[英]How to ensure my C#.net “webservice” is always up in shared hosting

我有一个#.net wpf应用程序,它每天都会将数据发送到Web服务。 我打算在共享主机上托管我的web服务。

我的问题是如何确保我的网络服务始终正常运行? 即如果我的网络服务器停机几天我需要注意什么? 我是否需要维护多台服务器,如果有另一台服务器可用? 为了实现这一点,我需要在wpf windows应用程序中提及服务器IP地址吗?

我搜索谷歌但无法找到正确的答案。 来自社区的任何链接将不胜感激。

你没有在谷歌找到答案的原因是没有正确的答案。 每个人都根据其应用需求以不同方式处理这些问题。 为了回答你的一些问题,我实际上只能提供一般性的建议,甚至那些只是解决这个问题的方法:

我的问题是如何确保我的网络服务始终正常运行?

最大化正常运行时间非常重要,可能需要仔细设计。 您需要优雅地处理错误条件并能够处理抛出的任何输入。 有一点需要注意的是,虽然正常运行时间非常重要,但数据的准确性可能更为重要。 如果是这种情况,那么您的Web服务可能会比关闭更好,而不是看起来好,但它会破坏数据。

如果我的网络服务器停机几天,我需要注意什么?

您需要对客户端应用程序进行编码,使其能够正确排队数据并在服务备份时发送数据。 此外,您需要在服务中保持智能(即不假设上传数据==数据日期)。 不要忘记,客户端应用程序也可能一次停机几天(自然灾害,停电,维护停机,周末崩溃......)

我是否需要维护多台服务器,如果有另一台服务器可用?

为了实现这一点,我需要在wpf windows应用程序中提及服务器IP地址吗?`

这绝对是一种选择。 冗余可以允许您在服务器上执行维护或升级,同时最大限度地减少停机时间。 有很多方法可以解决这个问题。 我可能会使用多个FQDN。 所以我会将server1.example.comserver2.example.com分别指向不同的服务器(理想情况下位于不同的数据中心)。 我也会让这些服务器的DNS条目的TTL非常低,所以如果它们开始关闭,我可以将服务器换成新的IP。

然后在您的客户端应用程序中,您可以在两个服务器之间进行循环,也可以使用主服务器,另一个只用作备份。

尽管如此,许多人在设置这样的东西时忘记的重点是测试。 您需要测试一台服务器停机,两台服务器都关闭,切换DNS以及您能想到的任何其他排列,以确保您的冗余解决方案正常工作,可扩展,并且不会导致其他问题。

我有两个建议: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秒的响应....

解决方案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服务可用性的更好方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM