Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# “设计”;可扩展多线程套接字推送服务器“;在.Net中_C#_.net_Sockets_Network Programming_Serversocket - Fatal编程技术网

C# “设计”;可扩展多线程套接字推送服务器“;在.Net中

C# “设计”;可扩展多线程套接字推送服务器“;在.Net中,c#,.net,sockets,network-programming,serversocket,C#,.net,Sockets,Network Programming,Serversocket,我们刚刚开始在.Net中设计可伸缩的多线程套接字推送服务器,该服务器最初将为每个节点处理10K客户端。由于设计这可能是非常复杂的,它将真的帮助我,如果你们所有的专家可以提供任何指导,资源,最佳做法等 由于我对socket编程了解不多,如果有人能向我推荐一个开源项目,我会非常高兴。。。我用谷歌搜索了一下,但找不到任何好的解决办法 这也将有助于其他人谁想要设计这样的服务器 [供您参考,我们计划将.Net 4.0用于此服务器] 我已经阅读了大量关于异步套接字及其应用程序的信息。这个问题在.NET4.0

我们刚刚开始在.Net中设计可伸缩的多线程套接字推送服务器,该服务器最初将为每个节点处理10K客户端。由于设计这可能是非常复杂的,它将真的帮助我,如果你们所有的专家可以提供任何指导,资源,最佳做法等

由于我对socket编程了解不多,如果有人能向我推荐一个开源项目,我会非常高兴。。。我用谷歌搜索了一下,但找不到任何好的解决办法

这也将有助于其他人谁想要设计这样的服务器

[供您参考,我们计划将.Net 4.0用于此服务器]

我已经阅读了大量关于异步套接字及其应用程序的信息。这个问题在.NET4.0中仍然存在吗


感谢高级…

有些人可能会说“可伸缩”和“多线程”是相互矛盾的。在做出这样的决定之前,你需要探索设计空间。如果您需要可伸缩性,可以只使用一个线程,但这取决于您提供的服务。

可伸缩性是您的首要任务之一,我还将假设稳定性,我发现Erlang非常适合。它具有容错性和高度可扩展性。如果你有时间调查不同的选择,我建议至少调查一下

10k并发连接在合理的硬件上使用.Net应该不会有太大问题,但是,一如既往,它将取决于您在服务器中实际执行的操作以及每个连接彼此之间的隔离程度。毕竟,如果不定义每个节点的硬件需求、每个连接上进出的数据量以及每个连接可能需要多少CPU来完成其工作,那么说“每个节点处理10k客户端”是毫无意义的。我在这里讨论这些模糊的、摇摆不定的可伸缩性问题:

然而:

首先,您应该了解异步套接字API,并忽略线程问题。Net的异步套接字将为您处理线程,并使用I/O完成端口(一个非常可伸缩的内核对象)为您管理线程

另外,请记住,如果您使用的是异步发送,那么如果TCP流控制生效,这些发送可能需要很长时间才能完成,请参阅

而且


其次,您应该从第0天开始测试您的可伸缩性,并在整个开发过程中一直进行测试-我在这里介绍了原因:

不要错误地认为这一点,但考虑到您没有多少套接字编程经验,因此,我们正在设计“可伸缩的.Net多线程套接字推送服务器,它最初将为每个节点处理10K个客户端”适合吗?我几乎没有套接字经验,但我相信我是一个非常好的开发人员。而且在开始这个项目之前,我有一些时间来研究这个问题,所以这很公平……我也相信会有很多像我这样的人收到这个问题。这个问题的答案将帮助他们所有人…尽管我对Erlang一点也不了解,但我肯定也会考虑这个选项。谢谢。正如其他答案中所建议的,我将使用异步套接字连接,所以.Net将负责线程处理工作。。。