【发布时间】:2011-03-10 03:18:30
【问题描述】:
我正在使用 .NET 编写我的第一个客户端-服务器应用程序,我可以使用许多可能的协议和库:UDP、TCP、HTTP、序列化、.NET Remoting、WCF...我如何选择“对”一个(我的列表中是否缺少任何重要的技术)?
我的场景非常简单:客户端在地图上显示数百个对象的当前状态。有两种类型的对象,每种都有许多状态信息字段。在连接时,服务器会突发发送所有对象的状态,然后发送增量更新。客户端也可以请求历史数据。
【问题讨论】:
我正在使用 .NET 编写我的第一个客户端-服务器应用程序,我可以使用许多可能的协议和库:UDP、TCP、HTTP、序列化、.NET Remoting、WCF...我如何选择“对”一个(我的列表中是否缺少任何重要的技术)?
我的场景非常简单:客户端在地图上显示数百个对象的当前状态。有两种类型的对象,每种都有许多状态信息字段。在连接时,服务器会突发发送所有对象的状态,然后发送增量更新。客户端也可以请求历史数据。
【问题讨论】:
WCF 应该是您的默认选择,除非您在使用 WCF 时遇到特定问题。
例如,在某些环境中,WCF 可能不够快(值得怀疑)。只有在这种情况下,我才会选择其他任何东西。
远程处理已被弃用,取而代之的是 WCF。序列化将由 WCF 为您完成,它可以通过 HTTP 或原始 TCP/IP 进行通信。将您的服务从一种协议更改为另一种协议几乎不需要(如果有的话)。
【讨论】:
有很多方法可以做到这一点:您实际上是在设计自己的应用程序协议,因此完全由您选择;没有“标准”方式让客户端和服务器进行通信。
您想对客户端和服务器交换的内容进行完全的低级控制吗?然后使用原始 TCP(UDP 在这里没有用,因为它是无连接的并且不能保证传送);但是您必须自己编码和传输对象数据,或者将它们序列化并通过原始 TCP 流传输。
WCF 让事情变得更容易,为您封装了所有这些;如果客户端和服务器都是在最新框架上运行的 .NET 应用程序,那么这应该是您的首选。
【讨论】: