【问题标题】:High performance TCP Client in .net.net 中的高性能 TCP 客户端
【发布时间】:2015-12-25 08:55:45
【问题描述】:

在 SO 上看到的很多关于 .Net 套接字的好帖子都是关于编写可扩展的高性能服务器的。

High performance TCP server in C#

How to write a scalable Tcp/Ip based server

虽然这些帖子非常好,但在编写高性能 TCP 客户端 应用程序时需要重点关注哪些核心内容?

高性能客户端的场景是应用程序将请求流式传输到服务器并以非阻塞方式处理响应。

这样的客户端还应该有一个可靠的断开检测策略。

为了进一步澄清,我们无法控制服务器端。

我们只需连接一个服务器端点。

cmets 中提到的 zmqNet 是一个很棒的库,但我认为它最强大(或适用于情况)连接的两端都使用 zmq(真的?)。

【问题讨论】:

  • 你看过 ZeroMQ 吗? zeromq.org 它可以满足您的需求,并且可以加载更多内容,并具有多种语言的实现。
  • 我赞同@Nebula 的建议。您已经管理了zmq now 的实现
  • @Nebula 我很久以前就玩过它。我希望找到支持 .net 框架的东西,而不是外部库。不过还是谢谢。
  • @CharlesO 我也非常推荐 netMQ,它在过去几年里取得了长足的进步。它稳定,快速且易于使用(无论如何都是正常的设置)。框架中没有任何东西可以与 AFAIK 相媲美。

标签: c# vb.net sockets tcp client


【解决方案1】:

使用 netMQ (0MQ)。它以 NuGet 包的形式提供,因此应该易于维护。

我建议在服务器端使用客户端请求套接字和路由器/经销商结构。这里的文档提供者:http://zguide.zeromq.org/page:all 非常好。

【讨论】:

  • 注明。对于我无法控制服务器的情况,您会推荐什么。例如我在问题中描述的场景。
  • 另外,这里关于重新连接和断开连接检测的故事是什么?
  • 啊,情节变厚了,我假设您可以控制两者,因为您提到了高性能服务器线程。在那种情况下,我不确定 0MQ 是否符合您的要求,因为它遵循自己的协议。除了滚动您自己的库之外,我不知道有任何库可以满足您的要求,而无需了解更多您必须使用的协议。关于重新连接,0MQ 非常出色,连接顺序(服务器-客户端)无关紧要,甚至拔出插头并将其推回也能得到妥善处理。
  • 假设你在另一端有一个 TCP 服务器。您只是希望获得高性能、断开连接感知的客户端套接字的好处。你会怎么做?你会在那种情况下使用 ZMQNET 吗?
  • 我没有类似的经验,因为我一直可以控制服务器。话虽如此,您可能可以强制 0mq。但我可以想象,因为它允许您使用某些套接字创建自己的消息。鉴于其他人提出了类似的问题stackoverflow.com/questions/27182180/… 我怀疑有任何通用方法可以解决您的问题。重新连接通常与使用的协议密切相关。
猜你喜欢
  • 1970-01-01
  • 2017-01-26
  • 1970-01-01
  • 2011-09-05
  • 1970-01-01
  • 2012-01-25
  • 2012-09-09
  • 2012-01-16
  • 2015-03-26
相关资源
最近更新 更多