C#中服务器/客户端通信的最佳冗余方法

时间:2014-07-11 21:51:59

标签: c# rest websocket servicestack tcpclient

我有一个产品,已经部署并在基础工作。它使用自托管ServiceStack和Redis作为服务器上的数据库。对于客户端,也使用ServiceStack定期接收数据。客户端每小时连接到服务器一次数据,但连接和传输需要在几秒钟内(通常不是问题)。数据只有大约100个json字符。

我在客户端计算机上发现了问题。因为客户住在经纪公司,在市场开放时我需要客户接收少量数据,我可能会被成千上万的其他系统拒之门外,试图在公开场合获取市场数据。所以我现在让代理在打开后重新启动我的系统,因为它没有很好地恢复。

我的问题是,在这种糟糕的网络环境中建立健壮系统的最佳方法是什么?

我有一些想法是添加一个websocket连接,这样我就不会为每个轮询间隔建立一个新连接(使用REST API)。例如,我已经发现在这些市场激增期间DNS是一个问题,因此我计划进行一次查找,然后在内部保留IP地址以用于所有后续连接。

因此,我正在考虑查看任何内容,无论是REST数据还是websocket数据,只需使用可用的任何数据集即可。我想检查一下其他人是否看到过这种情况和任何建筑思想。

1 个答案:

答案 0 :(得分:1)

Websockets (SignalR)是您具体实施的绝佳选择。但是你应该记住,因为你表示担心连接的可靠性,在websockets中,客户端启动连接,如果连接失败,服务器将检测到这一点,但由于你的浏览器不会,它将不会得到任何连接更新。 Read here了解如何提高连接的可靠性。