我想为应用程序创建一个远程Web服务,现在只能在本地使用。此应用程序控制连接在串行端口上的三个设备(每个设备单独控制)。问题是我不知道如何处理设备返回请求数据的信息。例如 - 我将移动命令发送到运动设备(这非常慢,可能需要一分钟或更长时间)。我可以在客户端(和服务器端)设置一个大的超时,如果操作完成则返回例如true / false,这是个坏主意吗?具有大超时的SOAP是否可以? 另一个问题是Linux上的Mono(Ubuntu 9.10,Mono 2.4)是否可以用于制作Web服务,还是应该选择Java或其他语言?
我愿意接受推荐。
感谢您的帮助!
答案 0 :(得分:2)
使用大超时不是一个好主意。它浪费了服务器和客户端上的资源,当服务器不可用时,例如在分配的超时到期之前,您将无法检测到“真正的”超时条件。
你真的有两种选择。首先是使用民意调查。立即从动作请求命令返回,确认命令的接收(而不是完成命令)。然后定期发送请求,询问命令是否完成。
另一种选择要求客户端能够注册回调端点,服务器将在动作完成时调用该端点。这使整个过程异步,但要求客户端能够以服务器模式运行。使用WCF非常容易 - 但我不知道Mono中是否提供此功能。
答案 1 :(得分:0)