servicestack,tcpclient,C#,Rest,Websocket,servicestack,Tcpclient" /> servicestack,tcpclient,C#,Rest,Websocket,servicestack,Tcpclient" />

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

C# C语言中服务器/客户端通信的最佳冗余方法#,c#,rest,websocket,servicestack,tcpclient,C#,Rest,Websocket,servicestack,Tcpclient,我有一个产品,是现场和工作在一个基本的水平。它对服务器上的数据库使用自托管ServiceStack和Redis。对于客户端,is还使用ServiceStack定期接收数据。客户端大约每小时连接一次服务器获取数据,但连接和传输需要在几秒钟内完成(通常不是问题)。数据只有大约100个json字符 我在客户端计算机上发现了问题。因为客户住在一家经纪公司,在市场开放时,当我需要客户接收我的少量数据时,我可能会被成千上万试图在开放时获取市场数据的其他系统拒之门外。因此,我现在让代理在打开后重新启动我的系统

我有一个产品,是现场和工作在一个基本的水平。它对服务器上的数据库使用自托管ServiceStack和Redis。对于客户端,is还使用ServiceStack定期接收数据。客户端大约每小时连接一次服务器获取数据,但连接和传输需要在几秒钟内完成(通常不是问题)。数据只有大约100个json字符

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

我的问题是,在这种恶劣的网络环境中,什么是最好的方法来创建一个健壮的系统

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


所以我想看看有什么进来,要么是REST数据,要么是websocket数据,然后使用任何可用的数据集。我想检查一下,看看其他人是否看到过这种情况和任何架构思想。

对于您的具体实现来说是一个很好的选择。但是,您应该记住,由于您表示担心连接的可靠性,在websockets中,客户端会启动连接,如果您的连接失败,服务器会检测到这一点,但由于您的浏览器不会,因此它不会得到任何更新。看看如何提高连接的可靠性。

我将此标记为答案,因为它包含一些非常好的背景链接。但实际上,我的客户机不是一个浏览器,而是另一个C#程序。我计划在WebSocket中使用炼金术。你也可以在c#客户端中使用信号器: