- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如果这几乎是一个“讨论”问题,请原谅我,但我真的会
感谢一个是/否的答案,并有适当的解释。
假设你必须为机器人设计和实现一个控制 API,比如说下一个
一代火星车。您是否根据 RESTful 架构此 API
原理,还是使用经典的 RPC,比如 XMLRPC?
我问这个是因为我必须做类似的事情,尽管“机器人”是虚拟机的集合。一位颇有说服力的工程师(一位著名的 REST 倡导者)敦促我让 API 成为 RESTful。我从来没有使用过 REST 原则,我正在努力了解它们如何适合设计低级进程间 API。 REST 似乎融入了与可修改的数据存储库交互的主题,通常距离很远。我正在尝试做的事情更像是在密切控制一个机器人。我可以看出人们怎么会争辩说,抽象地说,机器人只是一个数据存储库——“PUT 左转”、“PUT 行进 100 米”、“获取外部温度”。但这似乎是一个相当做作的模型。我当然不会从缓存或代理中获得任何好处(“你好,JPL?这是堪培拉的 Akamai co-lo。我们现在要接管 Rover,好吗?”)
那么,RESTful 架构在这里有用吗?它是否仍然优于 RPC
当交互如此狭窄时?
最佳答案
我认为 REST 比传统的 RPC 更有意义。甚至 Micorosft Robotics Studio runtime application model使用 REST。
机器人可以由 URI 标识的不同资源组成,包括一个用于每个传感器和执行器的资源或它们的复合抽象。
REST 强调保证某些方法的副作用是什么,并且它还促进了缓存,这两者对于控制和监视远程机器人之类的事情都很有用。仅仅因为你可以使用 REST 它不 必须是 HTTP 协议(protocol)。
不过,像 GET 这样的安全和 IDEMPOTENT 方法对于跟踪机器人的状态和轮询其传感器数据很有用。您可以使用 Last-Modified header 之类的内容来检索不经常更改的缓存传感器数据(例如,湿度或光照水平)。
对于长距离,您可以使用中继代理进行缓存。
对于移动机器人的命令,将使用 POST 之类的命令,其中每条此类消息都会改变机器人(例如,向右转)。可以返回一个状态代码,指示该命令是立即执行还是排队等待处理。
任何资源的绝对状态都可以使用诸如 PUT 之类的东西来设置,其中多条消息不会改变任何东西,而不仅仅是一条消息(例如,指向北极或将前灯调暗到 10% 亮度)。这允许在消息在途中丢失的情况下进行可靠的消息传递。
也可以通过类似 POST 的操作创建新资源,例如数据收集例程和一组参数。 POST 请求可以返回一个带有新资源 URI 的 CREATED 结果,当不再需要时可以使用该 URI 删除。
一组机器人也可以使用相同的基于 REST 的协议(protocol)相互交谈,并享受相同的好处。
诚然,对于像一个人控制一个孤立的本地机器人这样简单的事情,REST API 可能是矫枉过正。但是对于多用户和/或不可靠的通信 channel 和/或 Web 规模的网络,REST 是需要考虑的。
关于api - 您是否会将下一代火星探测器的控制 API 设计为 RESTful 而不是 RPC?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/185740/
我注意到 eclipse 有不同的版本控制系统。它有一个数字系统以及火星、月球等系统。 是一样的吗? Mars 和 Eclipse 7 一样吗? 最佳答案 Mars 和 Luna 是代号。版本不仅通过
所以基本上我正在尝试编写一个路径查找程序,该程序可以找到从 10*10 网格中的某个点到另一个点的路径,这很好。 我有一个类Path,它是一个GridSquare的ArrayList(它们只是美化的坐
请帮忙!我打开 Eclipse Mars 继续编码,但我的代码不见了!我不知道是什么原因造成的,但一切都消失了。有人知道我能做什么吗? 注意:我尝试右键单击 java 文件 -> 替换为 -> 本地历
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
在过去的几个小时里,我们一直在尝试寻找解决方案,但没有成功。 我们从来没有这样安装 Maven。直接下载eclipse Mars,自带Maven插件。但它不允许提供 Maven 存储库的位置。我们的理
使用 Eclipse Mars,我遇到了 Symbol 'unique_ptr' could not be resolved 错误。我尝试将 -std=c++11 添加到 CDT GCC 内置编译器设
我使用的是 Eclise Mars 版本 IDE。每次启动 Eclipse 时,然后 “更新错误报告数据库” 会来挂Eclipse。请给我一个解决这个问题的方法.. 最佳答案 此问题通常发生在代理后面
我有一个在 eclipse (mars) 中开发的独立 Java 应用程序。我可以通过右键单击主类并选择“运行方式”-“Java 应用程序”来运行该应用程序。也可以使用“Debug As”-“Java
我正在尝试在我的 Eclipse IDE (Mars) 上配置 tomcat 服务器。我找不到任何安装服务器的选项。 我提到的一些链接如下: http://help.eclipse.org/mars/
这个问题已经有答案了: Building two different versions a given war with maven profiles and filtering from eclip
当我输入局部变量名称的第一部分并按 Ctrl+Space 以显示内容助手时,它会显示全名变量并预选它。 在 Eclipse Luna 版本中,如果您在键盘上按 .,则全名会被插入,内容助手会显示该变量
我从 MarketPlace 安装了 Instasearch,并想对其进行一些配置。于是我开始寻找安装目录,但是没有找到。我已经搜索了所有的 eclipse 和系统目录,但仍然没有运气。那么一般来说,
Eclipse 版本:火星。 JDK 1.8。 我想创建一个 JAXB 项目。在JAXB Facet页面,出现如下错误: The configured runtime is insufficient
这个问题在这里已经有了答案: Rebuilding Maven indexes Stuck at 0% (2 个答案) 关闭 5 年前。 Eclipse Mars 无法重建索引 https://re
我在我的 windows 8.1 Pro 电脑上安装了 eclipse mars,它的更新站点如下所示 Mars http://download.eclipse.org/releases/mars T
我刚刚升级到 Eclipse Mars,突然我的 ANT 任务与 Lunar 一起工作时出现提示: The archive: C:/Program%20Files/eclipse_lunar/plug
我尝试在 Eclipse Mars 上安装 Vaadin 插件。我收到此错误.. An error occurred while collecting items to be installed se
我能够在以前版本的 Eclipse 中运行相同的 Struts 2 应用程序。 但是当我尝试在 Mars.1 中运行它时,出现以下异常: Nov 25, 2015 1:16:56 PM org.apa
确切的错误消息是... com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte
我是一名优秀的程序员,十分优秀!