.net 通过TCP/IP控制多个机器人

.net 通过TCP/IP控制多个机器人,.net,wcf,sockets,compact-framework,embedded,.net,Wcf,Sockets,Compact Framework,Embedded,我正在从事一个项目,该项目涉及通过TCP/IP在单个网络中控制多轮机器人(运行.NET Compact Framework) 控制可以从网络外部进行 起初我选择了套接字,但后来WCF似乎是一个更好的选择 网络架构包括一台托管WCF服务的服务器和网络中每个设备的控制队列。客户端应用程序从网络内部/外部连接到服务器,找到合适的设备并启动控制 一旦设备初始化,它将继续轮询WCF服务以检查其队列中的新命令,同时客户端应用程序将命令发送到相应的队列中 我想知道,对于最小延迟,这个解决方案有多好?有没有方法

我正在从事一个项目,该项目涉及通过TCP/IP在单个网络中控制多轮机器人(运行.NET Compact Framework)

控制可以从网络外部进行

起初我选择了套接字,但后来WCF似乎是一个更好的选择

网络架构包括一台托管WCF服务的服务器和网络中每个设备的控制队列。客户端应用程序从网络内部/外部连接到服务器,找到合适的设备并启动控制

一旦设备初始化,它将继续轮询WCF服务以检查其队列中的新命令,同时客户端应用程序将命令发送到相应的队列中

我想知道,对于最小延迟,这个解决方案有多好?有没有方法可以删除轮询,并强制服务器向新命令发送的设备发送中断


我可以做哪些改进来减少延迟?

WCF支持全双工通信。。。因此,您肯定希望删除“轮询”架构,只需让服务器在用户按下按钮(或任何控件)时向客户端发送命令即可

有很多关于WCF的好教程。。。这是我几年前写的一篇文章,但它非常简单,可能是一个好的开始:


编辑:那篇文章比较了用“套接字”的方式做事,以及WCF是如何让事情变得更简单的。另外,我忘了提及您的延迟问题的答案-如果您使用“net.tcp”绑定(在本文中使用),它将执行得非常快。

我不知道CF,但是如果您可以运行WCF服务器(而不是像您现在这样的客户端),那应该正是您所需要的。CF不能运行服务,只能运行客户端。这就是问题所在。谢谢Timothy,我将尝试在net.tcp中挖掘更多内容