IRC协议 - 持续的客户端连接好吗?

时间:2012-02-22 18:57:19

标签: c# wcf sockets irc

当我在尝试使用C#和WCF时,我一直在阅读的内容之一就是让客户端与服务器保持恒定连接是多么不可扩展。虽然WCF允许看起来推荐的最佳实践是使用“每次调用”而不是“每次会话”,例如管理,如果你想要任何类型的体面可扩展性。 (如果我错了,请纠正我)

然而,根据我的理解,IRC使用与服务器和IRC服务器(服务器网络)的持续客户端连接,在任何给定时间为数十万客户端提供服务。那么在这种情况下,保持与服务器的持续客户端连接实际上没有“坏”吗?

3 个答案:

答案 0 :(得分:3)

只要您不遵循每个连接一个线程的架构,服务器就可以支持相当多的并发TCP连接。

除TCP发送和接收窗口外,IRC对每种连接状态的要求不高。

答案 1 :(得分:1)

如果您需要实时双工通信(IRC是聊天协议),则保持TCP连接处于活动状态是一个相关选项。但是,TCP连接会带来网络开销,操作系统对并发打开的TCP连接数有实际限制。 WCF通常用于不需要双工通信的SOAP / HTTP / RPC上下文中,但它当然也为它提供了合适的绑定和通道。要回答您的问题,如果您的通信具有实时双工要求,则保持连接打开没有什么不妥。

答案 2 :(得分:0)

是的,这样的架构是可行的,但是...... "ping? pong!"事情的发明是出于某种原因 - 让双方都知道对方仍在那里。您实际上无法判断客户端是否处于空闲状态,因为它没有太多要说的,或者因为它实际上已断开连接并且您正在等待TCP超时。

UPD:只有因为服务器网络,才能在IRCnet上使用“数十万个客户端”。对于单台机器,C10K problem仍然是一个问题。