【问题标题】:How should two .NET components to communicate over a LAN?两个 .NET 组件应该如何通过 LAN 进行通信?
【发布时间】:2011-03-10 03:18:30
【问题描述】:

我正在使用 .NET 编写我的第一个客户端-服务器应用程序,我可以使用许多可能的协议和库:UDP、TCP、HTTP、序列化、.NET Remoting、WCF...我如何选择“对”一个(我的列表中是否缺少任何重要的技术)?

我的场景非常简单:客户端在地图上显示数百个对象的当前状态。有两种类型的对象,每种都有许多状态信息字段。在连接时,服务器会突发发送所有对象的状态,然后发送增量更新。客户端也可以请求历史数据。

【问题讨论】:

    标签: .net network-protocols


    【解决方案1】:

    WCF 应该是您的默认选择,除非您在使用 WCF 时遇到特定问题。

    例如,在某些环境中,WCF 可能不够快(值得怀疑)。只有在这种情况下,我才会选择其他任何东西。

    远程处理已被弃用,取而代之的是 WCF。序列化将由 WCF 为您完成,它可以通过 HTTP 或原始 TCP/IP 进行通信。将您的服务从一种协议更改为另一种协议几乎不需要(如果有的话)。

    【讨论】:

      【解决方案2】:

      很多方法可以做到这一点:您实际上是在设计自己的应用程序协议,因此完全由您选择;没有“标准”方式让客户端和服务器进行通信。

      您想对客户端和服务器交换的内容进行完全的低级控制吗?然后使用原始 TCP(UDP 在这里没有用,因为它是无连接的并且不能保证传送);但是您必须自己编码和传输对象数据,或者将它们序列化并通过原始 TCP 流传输。

      WCF 让事情变得更容易,为您封装了所有这些;如果客户端和服务器都是在最新框架上运行的 .NET 应用程序,那么这应该是您的首选。

      【讨论】:

      • 我相信即使对于许多 UDP 或“原始 TCP”应用程序,我也会选择 WCF。您需要创建自定义传输和消息编码器,但是一旦完成,WCF 会将通信从服务中抽象出来,这样服务的其余部分就不会关心正在使用什么传输。
      猜你喜欢
      • 1970-01-01
      • 2017-12-19
      • 1970-01-01
      • 1970-01-01
      • 2011-05-30
      • 2016-06-10
      • 2015-05-22
      • 2018-11-25
      • 1970-01-01
      相关资源
      最近更新 更多