服务器架构

本文关键字:服务器 | 更新日期: 2023-09-27 18:01:43

希望有两个关于创建服务器应用程序的简单问题:

  • 是否存在可以同时打开的套接字数量的理论/实践限制?忽略数据到达后处理所需的资源!如果它的相关性,我的目标是。net框架
  • 每个连接应该在一个永久分配给它的单独线程中运行,还是应该使用线程池?专用线程方法似乎更简单,但是让100多个线程同时运行它似乎有些奇怪。这种做法可以接受吗?

任何建议都非常感谢Venatu

服务器架构

您可能会发现下面的答案很有用。它演示了如何使用。net线程池和异步套接字方法(BeginAccept/EndAccept和BeginReceive/EndReceive)编写可扩展的TCP服务器。

也就是说,当您可以使用众多WCF绑定之一(甚至编写自定义绑定)并从WCF基础设施的全部功能中受益时,编写自己的服务器很少是一个好主意。它可能比任何自定义编写的服务器可伸缩性更好。

是有实际限制的。但是,您很可能在到达负载之前就耗尽了处理负载的资源。

CPU,或内存更容易耗尽之前的连接数。

为了获得最大的可伸缩性,您不希望每个连接都有单独的线程,而是使用异步模型,该模型仅在服务活动(如接收或发送数据)连接时使用线程。

正如我记得的那样(很久以前做过套接字),实现它们的最好方法是使用ReceiveAsync(。. NET 3.5)/BeginReceive方法使用异步回调,这将利用线程池。不要为每个连接打开一个线程,这是浪费资源。