什么是全球聊天应用程序的正确编程模型?

时间:2014-01-22 13:25:31

标签: c# network-programming

我正在尝试在c#中构建一个可以在wan网络中运行的聊天应用程序。 应用程序中有2个方面。服务器端和客户端。 在我看来,我认为从客户端到客户端的每条消息都需要传递给服务器,服务器会将它转发给正确的客户端。客户之间的沟通不会直接。 这是正确的型号吗? 如果是,服务器是否需要一个可以监听所有客户端的套接字? (因为每个客户端都将其消息发送到服务器上的同一端口)。 服务器是否可以处理同一端口上数百万条消息的管理?

2 个答案:

答案 0 :(得分:0)

看看SignalR和使用SignalR实现的聊天系统,Jabbr:

http://signalr.net/

http://about.jabbr.net/

答案 1 :(得分:0)

我认为这取决于你想要完成的事情,每个选择都有自己的优点和缺点 例如:

使用集中式服务器可以跟踪用户在线等消息...但您必须管理每个连接的端口(有关详细信息,请参阅答案末尾的说明)。

使用P2P模型,您将无法获得集中式服务器所需的瓶颈和管理,但再次管理非集中式系统可能更麻烦(取决于您想要实现的目标)。

如果您要进行集中式设计,通常情况下,您将拥有一个可以监听请求的端口的服务器 一旦用户想要连接,服务器将为客户端启动一个新线程,并为他分配一个端口(该线程通常来自线程池和来自特定端口范围的端口)。
这将允许用户以非阻塞方式与服务器通话,并允许多个用户同时使用该服务。