REST在分布式web应用程序中的用途是什么

REST在分布式web应用程序中的用途是什么,rest,distributed,Rest,Distributed,我正在学习RESTAPI,我无法理解REST是如何在分布式web应用程序中使用的? 这是我唯一见过的。但我仍然无法学习REST用于分布式计算。 提前谢谢。我不太清楚您的问题是什么,但一般来说,REST只是执行RMI(远程方法调用)或RPC(远程过程调用)的另一种方法。然而,尽管RMI只在Java中工作,REST使用HTTP协议来进行通信。由于HTTP是在我们今天使用的大多数技术/库/语言中实现的,因此它是连接这些技术/库/语言的一种简单方法 最初,SOAP()用于实现服务器间和客户机-服务器间的

我正在学习RESTAPI,我无法理解REST是如何在分布式web应用程序中使用的? 这是我唯一见过的。但我仍然无法学习REST用于分布式计算。
提前谢谢。

我不太清楚您的问题是什么,但一般来说,REST只是执行RMI(远程方法调用)或RPC(远程过程调用)的另一种方法。然而,尽管RMI只在Java中工作,REST使用HTTP协议来进行通信。由于HTTP是在我们今天使用的大多数技术/库/语言中实现的,因此它是连接这些技术/库/语言的一种简单方法

最初,SOAP()用于实现服务器间和客户机-服务器间的通信。SOAP在HTTP之上还有许多附加功能。例如,WSDL()允许自动生成代理。虽然这些特性使SOAP变得丰富,非常适合企业应用程序(CERN实现了自己的SOAP版本,允许州完全通信),但对于许多快速变化的小型公司来说,它也太庞大了

REST使用HTTP的特性,但基本上可以在许多方面有所不同。可以自由定义url和对象,以及序列化对象的格式(主要是JSON)。此功能与Python、Ruby或JavaScript(客户端或NodeJS)等动态语言相结合,使得在不同的服务以及客户端和服务(SPA-稍后为单页应用程序)之间建立通信非常容易

然而,我认为非常有趣的事实是,人们发现,你必须为这种弹性付出高昂的代价:

  • JSON表示的对象虽然比XML小,但仍然比字节码大(这在很大程度上可以通过gzip解决,但会产生第二个问题)
  • 将对象序列化到字符串或从字符串反序列化的效率非常低,而且比字节码表示慢得多。(当然,压缩字符串以减小大小也会消耗CPU)
  • 到目前为止,有一种选择——HTTP效率低下,而RMI则缺乏灵活性,只能由少数语言使用。这就是为什么有两个项目来解决这个问题:

  • 谷歌的协议缓冲区
  • 阿帕奇节俭
  • 这两个项目都允许您使用特定的二进制格式发送您和您的消息。由于两个项目都有不同语言的实现(Apache Thrift比Google的Protocol Buffer多得多),您可以使用这种格式在不同的服务器之间进行通信

    此外,直接的端到端通信并不总是您想要的,这就是为什么除了消息转发(例如发布-订阅、向一组服务进行循环传递等)之外,还有许多任务可以完成的不同消息队列的原因。可能最广泛使用的是

    结论 您可以使用REST在分布式web应用程序中的不同服务之间进行通信。由于在许多不同的主机和技术之间实现这样的通信通道非常简单,因此也经常使用这种方法。然而,序列化/反序列化的开销可能会耗费大量CPU时间,特别是如果您有一个包含许多服务的大型后端基础设施。这就是为什么您应该选择一种二进制格式(Apache Thrift、协议缓冲区),以确保效率