假设我想开发一个Windows聊天应用程序,那么就需要开发聊天服务器和客户端。开发聊天服务器应用程序后,我们可以在一台机器上运行该应用程序,聊天客户端将运行另一台PC。如果那些电脑不在同一个网络中,假设聊天服务器在美国机器上运行,一个聊天客户端在德国机器上运行,另一个在英国机器中运行。在这种情况下,如何使用互联网进行沟通。所有的nachine都可以访问互联网,这样一个聊天客户端将如何登录聊天服务器以及两个聊天客户端如何相互通信。我只想知道数据如何通过聊天服务器从一个客户端传输到另一个客户端。请给我一个概念,或者如果有人给我一个基于聊天服务器和聊天客户端的任何好的.net聊天应用程序的参考会更好.........谢谢。
答案 0 :(得分:3)
通常?我不知道这与C#有什么关系,但客户端 - 服务器架构看起来像这样:
Client <-----> Server
对于像你在描述两个或更多客户之间相互沟通的事情,你只是在谈论添加多个客户:
Client A <----
|
----> Server
|
Client B <----
如果客户端A想要向客户端B发送消息,则客户端A将消息发送给服务器,其中包含某些信息,表明它是针对客户端B.服务器然后检查该消息,确定它是否适用于客户端B,然后通过其与客户端B的连接中继该消息。
这是客户端 - 服务器架构的基本定义。有更多高级架构将客户端 - 服务器与点对点(如Skype)混合在一起。在混合系统中,从客户端到服务器的连接通常仅携带控制消息(认证等)以及关于如何直接联系另一客户端的信息的请求。这种方法的优点是它不需要A和B之间的通信的所有流经服务器; A和B都连接到服务器,但他们然后询问服务器如何直接连接到彼此,然后使用该直接连接进行带宽密集型通信。
尽管如此,这一切都在一边。在开始开发应用程序之前,您应该阅读独立于任何特定语言或环境的客户端 - 服务器体系结构
。答案 1 :(得分:2)
WCF Web服务与客户端轮询服务(简单基本方案 - 易于实现,效率不高)
WCF双工Web服务,服务器在需要时更新客户端(稍微复杂一点)
基于TCP套接字的解决方案,最难实现,但允许更好的控制。马修麦当劳的书“Pro Silverlight 3”