【问题标题】:Low speed network with high risk of disconnection低速网络,断线风险高
【发布时间】:2010-11-30 10:05:08
【问题描述】:

我在网络上有一些计算机,网络以某种方式是串行的,我的意思是计算机通过无线电发射器相互连接并排成一条线,如果无线电发射器发生故障或遇到其他计算机无法访问的问题。 架构将是这样的:
RT = 无线电发射器
Computer#1<-RT#1->Computer#2<-RT#2->Computer#3<-RT#3->....<-RT#(N-1)->Computer#N

计算机之间的距离约为 20 到 30 公里,网络速度在 0 到 10Kbps 之间变化。计算机正在运行 Windows XP 并且负载非常高的程序(2GB 内存,90% 的 CPU 使用率)总是在它们上面运行,所有计算机的 IP 地址都是已知的并且是静态的。

我将编写一个程序,该程序将在每台计算机上运行并获取命令或包以在该计算机上运行或安装和更新。由于网络速度低,计算机之间发送数据断开连接的高风险应该具有恢复能力。问题是我应该如何实施?使用 .NET 远程处理还是使用简单的网络套接字和 TCP?哪一个更好?随时解释您认为适合此解决方案的建议或方法。

【问题讨论】:

  • 机器是否在域中?服务器、工作站?

标签: .net tcp network-programming performance


【解决方案1】:

阅读 UUCP,历史上解决此问题和配置的方法。

【讨论】:

  • 如果我想使用 UUCP 之类的东西,我将使用 .NET 远程处理!
  • @HPT 我并不是说这是一项了不起的技术,但它肯定是一项经过验证的技术。
【解决方案2】:

添加一个充当服务器的新系统怎么样?该系统将托管一个服务(可能还有一个数据库),该服务将控制网络上的所有操作。 由于所有 IP 地址都是静态的,因此可以轻松跟踪它们,并在断开连接时重新跟踪它们。

对于大型传输,您可以压缩和拆分包并单独发送。如果发生故障,传输将从损坏的数据包重新开始。使用单独的服务器可以轻松维护所有这些统计数据,并可以相应地控制流量。

在 CPU 负载较低的情况下,客户端甚至可以 ping 服务器以获取待处理的命令/升级。

使用 WCF 可以进行双向/双工传输。

What You Need To Know About One-Way Calls, Callbacks, And Events

WCF Duplex Messaging

【讨论】:

    【解决方案3】:

    我曾经在一个糟糕的连接上进行开发。

    我有几个小时(3-6 小时 IIRC)后返回的数据包。

    感谢上帝,合同结束了:)

    玩得开心!我感觉到你的痛苦。

    【讨论】:

      【解决方案4】:

      您可以使用像 NServiceBus 这样基于消息传递的框架,然后从连接本身中抽象出您的程序。

      系统可以允许“重复直到成功”消息传递与沿线某处的缓冲区,您无需担心太多低级的东西。

      http://www.nservicebus.com/

      我不确定它是否允许大数据传输,但检查一下命令

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-07
        • 2010-10-12
        • 1970-01-01
        • 2011-07-15
        • 1970-01-01
        相关资源
        最近更新 更多