C# Web服务与持久套接字
我计划自己围绕这个问题做一些基准测试。但我认为从“社区”那里得到一些初步反馈会很好。有没有人对这两种技术的利弊做过分析?我的想法:C# Web服务与持久套接字,c#,wcf,web-services,tcp,soa,C#,Wcf,Web Services,Tcp,Soa,我计划自己围绕这个问题做一些基准测试。但我认为从“社区”那里得到一些初步反馈会很好。有没有人对这两种技术的利弊做过分析?我的想法: 与持久连接相比,为web服务调用打开和关闭TCP/IP连接相对昂贵 处理间歇性连接错误和状态等。。。使用基于web服务的框架会更容易 你看不到魔兽世界使用web服务 一个我似乎在任何地方都找不到答案的问题(即使在这里)。。。是否限制了单个网卡可以支持的持久连接等?您将消息格式和传递方式结合在一起。如果您有这样一种消息,您可以节省比特数并重新排列片段,以便更快地使
- 与持久连接相比,为web服务调用打开和关闭TCP/IP连接相对昂贵
- 处理间歇性连接错误和状态等。。。使用基于web服务的框架会更容易
- 你看不到魔兽世界使用web服务
一个我似乎在任何地方都找不到答案的问题(即使在这里)。。。是否限制了单个网卡可以支持的持久连接等?您将消息格式和传递方式结合在一起。如果您有这样一种消息,您可以节省比特数并重新排列片段,以便更快地使用消息,那么Web服务可能不是您的正确选择。如果我假设您有相对较大的基于文本的消息,那么Web服务可能适合您的需要。下面我将回答你的想法:
- 打开/关闭TCP连接:是的,这相对比较昂贵。Web服务依靠HTTP(和TCP/IP)以以下方式提供帮助:
- 如果单个客户端必须发送大量消息,那么它们很可能会通过“保持活动”HTTP连接发送这些消息
- 您可以在web服务器前面放置一个负载平衡器,它将进一步优化TCP层。它将处理TCP/IP级别的连接混乱,并且只提供少数到web服务器的长期连接
- 处理断断续续的连接:HTTP是无状态的使这变得更容易
- WoW with WS:我不确定所涉及的消息类型,但WoW需要发送一系列非常短的消息,HTTP头本身可能会有太多开销,无法保证Web服务
-Raj这是一个非常普通的问题,是您明确提出的多个问题,以及您可能知道或不知道的更多相关问题 一个问题是HTTP与其他协议(准确地说是消息交换模式)的对比。HTTP是一种新的通信模式,许多通信模式不适合请求-响应模式。持久化连接允许更灵活的面向消息的协议,如典型的全双工聊天交换模式 既然你提到哇,他们使用的是UDP而不是TCP。TCP提供流保证语义,具有顺序保证和无重复。但要实现这一点,就延迟而言,要付出沉重的代价。像《魔兽世界》这样的游戏对延迟更感兴趣,而不关心订单保证:最新的数据包总是最好的,并取代以前的任何数据包信息 表面下还隐藏着更多的问题:
- 出站防火墙遍历(HTTP几乎总是允许的)
- 读取和理解HTTP头的入侵代理
- 入站NAT遍历问题
这个问题空间很大,每座桥下都有许多龙。感谢您的回复。关于端口耗尽的示例似乎更适用于耗尽可用于通信的“返回端口”数量的客户端计算机,而不是承载在单个端口上的服务器。接受套接字不同于侦听套接字。服务器会耗尽端口,而且速度很快。谢谢,拉杰。我认为,在评估这两种选择时,关于发送的消息数量和大小的重要性,您是对的。我还认为你说的对,从传输方法和协议的角度来看,这个问题是模糊的。