我需要构建一个服务器+客户端lib来从我的TimeSeriesDb database请求数据,并且有许多不同的socket和websocket库可用于.NET,而且我可以自己实现。因此 - 可以真正使用如何继续的建议。
我找到了基于它的SuperSocket和WebSocket4net,XSockets和SignalR。 .NET 4.5还推出了Microsoft's WebSocket实现,可能会使其他人过时。
然而,WebSockets针对网络进行了优化。实时更新,而不是我需要的二进制请求响应,因为客户端也是不在浏览器中的.NET库。
详细说明:
db请求和响应都是二进制文件:
客户端:获取给定参数的数据(一块二进制数据)
服务器:开始发送数据流(作为二进制块),客户端可以随时停止传输。
我的目标是.NET 4,因此TPL Tasks可能会受益于异步功能。
很高兴:流复用,其中多个请求/响应可以通过同一连接(依次为每个响应一个块)。我不确定是否需要这样做,或者多个连接是否会更好。
答案 0 :(得分:2)
WebSockets使用基于官方文档RFC6455的操作码%x2的二进制数据类型。
WebSockets也会为它发送的每条数据消息实现框架。对于小数据包,这将是合理的流量开销。
如果没有计划将来支持从前端连接到您的数据库。然后我不明白你为什么要使用WebSockets。它比纯二进制通信更复杂,您必须为WebSockets实现或使用现成的解决方案。 我相信,对于使用具有二进制序列化的纯TCP套接字的数据包的内存和处理来说,它是非常有效的。我建议您查看Google Protocol Buffer,然后查看.Net implementation。
这将允许您以良好的方式打包您的消息数据,并且还将增加与将来实现此协议的其他应用程序通信的能力。 如果您正在将数据协议构建到数据库中,那么通过选择数据协议来创建握手会更好,然后服务器将使用客户端更喜欢通信的可用实现之一。
您可能也对使用.Net中的内置序列化功能感兴趣。