低速网络,断开风险高

时间:2010-11-30 10:05:09

标签: .net tcp network-programming performance

我在网络上有一些计算机,网络以某种方式串行,我的意思是计算机通过无线电发射器相互连接在一起,如果无线电发射器关闭或遇到其他计算机无法访问的某些问题。 建筑将是这样的:
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?哪一个更好?随意解释您认为适合此解决方案的建议或方法。

4 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

我曾经在一个糟糕的联系中发展。

我的包裹在几小时后(IIRC 3-6小时)返回。

非常感谢合同结束:)

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

答案 2 :(得分:1)

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

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

如果CPU负载较低,客户端甚至可以ping服务器以查找挂起的命令/升级。

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

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

WCF Duplex Messaging

答案 3 :(得分:0)

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

系统可以在线路的某个位置使用缓冲区进行“重复直到成功”消息传递,并且您不必担心过多的低级别内容。

http://www.nservicebus.com/

我不确定它是否允许大数据传输,但请查看命令