【问题标题】:C# Sockets vs NodeJS Socket.IOC# Sockets 与 NodeJS Socket.IO
【发布时间】:2014-03-19 13:11:00
【问题描述】:

我必须为游戏开发一个使用 TCP 套接字的服务器应用程序。在 SO 的帮助下,我一直在做一些研究,看看哪种技术最适合我的需求。

目前我有两个选择。即在 C# 中使用 SocketAsyncEventArgs 或使用 NodeJS 和 Socket.IO 创建服务器应用程序。

我会选择 NodeJS,因为我想他们已经完成了所有艰苦的工作并优化了他们的套接字库。所以我所要做的就是简单地使用它,也许稍微调整一下。

但我的主要问题是,NodeJS 是否足够好?

服务器需要是高性能的套接字应用程序。我知道当我使用 C# 时我可以得到很好的结果。但是 C# Socket 类或 NodeJs Socket.IO 之间真的有很大区别吗?我应该对 NodeJS 期望更少吗?

我找不到有关 Winsock 与 NodeJS/Socket.IO 的任何信息。所以我希望这里的任何人都对这两个有任何了解。当你比较它们时,我可以从这两者中得到什么。


有关服务器将要做什么的一些附加信息。

服务器基本上会将数据从一个客户端传递到另一个客户端。问题是一个客户端每秒会向服务器发送3040 的小数据包(~300 字节)。服务器会将每个请求发送给另一个客户端。但与此同时,其他客户端每秒将发送相同数量的数据。

服务器只是两个客户端之间的某种中介。同时,服务器可以连接大约 500 对客户端。都是通过服务器互相发送数据。这就是为什么我需要一个性能良好的套接字应用程序。我认为 CPU 在我的情况下不会有问题,因为它不会进行任何繁重的计算。

【问题讨论】:

    标签: c# node.js sockets socket.io


    【解决方案1】:

    但我的主要问题是,NodeJS 是否足够好?

    让我重新表述一下:

    但我的主要问题是,技术 X 和技术 Y 哪个更快?

    对此只有一个答案:选项和基准测试中的原型。

    您没有提供有关服务器性质的信息,因此我建议选择套接字库是选择主要实现堆栈的一个非常糟糕的基础。除非事情很奇怪,否则您将受到 CPU 限制(要执行的大量业务逻辑/计算)或网络或本地存储(移动大量信息)上的 IO 限制,除非您有非常大的管道,否则前者更有可能。

    选择最适合您和您的团队的技术堆栈:综合考虑(预期)要求和团队的技能组合。如果您有足够的资源(时间、人员)并且风险足够低,那么学习一种新方法可能是可以的。

    【讨论】:

    • 我在我的帖子中添加了一些关于服务器将要做什么的附加信息。我们还计划做我们自己的基准测试。我只是希望那里已经有一些信息,因为看到其他人尝试了什么以及他们从中获得了什么样的结果总是很好。
    • 我怀疑如果写得好,任何一种方法都会足够快(即一切都是异步的)。最后,.NET 和 Node 都是 JIT 编译的,使用异步 API 进行垃圾收集。
    猜你喜欢
    • 1970-01-01
    • 2015-12-24
    • 2021-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-30
    • 1970-01-01
    • 2012-07-16
    相关资源
    最近更新 更多