Delphi服务器套接字组件
我们有一个完全用Delphi编写的C/S应用程序(客户机和服务器或中间件,如果您需要) 对于客户部分,我们使用Indy。 对于服务器,我们使用DXSock 由于DXSock已经死了一段时间,我们正在研究服务器部分的替代方案 我想听听关于Delphi的最佳服务器套接字替代组件的一些评论。Delphi服务器套接字组件,delphi,sockets,Delphi,Sockets,我们有一个完全用Delphi编写的C/S应用程序(客户机和服务器或中间件,如果您需要) 对于客户部分,我们使用Indy。 对于服务器,我们使用DXSock 由于DXSock已经死了一段时间,我们正在研究服务器部分的替代方案 我想听听关于Delphi的最佳服务器套接字替代组件的一些评论。 当前系统通常有几十个永久连接,每个连接在自己的线程上工作,但将来可能会非常困难(如果可能,这应该改进为线程池)我使用Indy组件进行商业服务器端工作,组件集非常稳定(9或10)。我的服务器每天有数百万个连接,没有
当前系统通常有几十个永久连接,每个连接在自己的线程上工作,但将来可能会非常困难(如果可能,这应该改进为线程池)我使用Indy组件进行商业服务器端工作,组件集非常稳定(9或10)。我的服务器每天有数百万个连接,没有任何问题 很多月前我用过DXSock。他总是在优化,但似乎从未完成。他似乎有另一个版本
如果您想要商业支持,那么我建议您使用nSoftware的IPWorks。如果您想要获得尽可能好的性能,您必须在非阻塞模式下使用套接字,或者使用。IPWorks也是这样实现的。据我所知,印地或不实施这些措施(至少是正式实施) 我们在我们的开源单元中使用了完成端口和线程池,在我们的应用程序中使用 下面是这个解决方案的一些基准测试,从Delphi6到DelphiXE。我不认为这是“最好的组件”,但它是一个有效且快速的组件(每个请求大约有4KB的JSON数据):
- Http客户端保持活动状态(即在请求期间一个Http/1.1客户端连接保持活动状态): 先用7.87毫秒,后用153.37毫秒,即6520/s,平均153us
- Http客户端多连接(即,为每个请求创建一个新的Http/1.0客户端连接-此连接使用完成端口和线程池): 第一个在151us中,在305.98ms中完成,即3268/s,平均305us
- 命名管道访问: 78.67毫秒中的第一个,在187.15毫秒中完成,即5343/s,平均187us
- 本地窗口消息: 在148us中第一次,在112.90ms中完成,即8857/s,平均112us
- 直接进程内访问: 在44us中排名第一,在41.69ms中完成,即23981/s,平均41us
考虑使用专用的优化服务器而不是Delphi服务器,比如在Linux下使用FastCGI通过免费的Pascal(或CrossKylix)应用程序处理请求。我想这将是可能的最佳性能。Indy将工作100秒,可能1000秒的并发连接,这取决于连接的活跃程度,特别是在多核机器上。只有当你需要更多的并发连接时,我才会考虑其他选择。我真的希望有更多的选择。我接受这个答案,因为我指向iocp。非常感谢你!我已经为我们的http/1.1服务器添加了http.sys支持。这是HTTP服务器的非常快速的内核级支持。看见