代码之家  ›  专栏  ›  技术社区  ›  the_drow

PHP中的rest与rpc[关闭]

  •  36
  • the_drow  · 技术社区  · 15 年前

    我正在建立自己的Ajax网站,我正在考虑 REST 和RPC。

    如果我的服务器支持servlet,我只需安装 persevere 结束问题,但我的服务器不支持servlet。

    rpc更容易编码(imo),并且可以很容易地用php编写。我只需要一个数据库查询执行器。我用的是 Dojo Toolkit 还有JSON。

    为什么我应该选择REST而不是RPC或RPC而不是REST?

    3 回复  |  直到 8 年前
        1
  •  23
  •   Peter Mortensen icecrime    8 年前

    嗯…简单来说,两者都是非常抽象的模型…所以抽象地说,它们自然地无处不在…

    REST是使用全局标识符(HTTP中的URI)对资源进行寻址的思想,该标识符在 CRUD 方式(使用) POST , GET ,如果是HTTP,则放入并删除…好吧,至少是这个主意……

    rpc是这样一种思想,即在不同的机器上调用一个过程,传递一些参数,并获取一个返回值…

    There is a nice short comparison on Wikipedia

    坚持不懈地创造一种服务,它允许两者(诚然,以一种非常优雅的方式)。它是 RESTful (尽管它不仅使用HTTP功能来实现这一点) 显示RPC接口…

    最后,您应该看看应用程序需要做什么…作为大多数人,您可能最终会得到一个RPC API(基于 XML JSON 或者其他的),它包括一个部分可休息的子系统的传输层…这是因为,拥有休息意味着灵活性…如果客户机可以或多或少地自由地遍历服务器上的数据(通过一组简单的CRUD方法),它不依赖于通过API公开的有限(特定于问题的)方法集,并且您可以将逻辑客户机转移到……

        2
  •  56
  •   Tyson    12 年前

    理解它的最好方法是阅读罗伊·T·菲尔丁关于它的论文或他的相关文章。 blog 在这里,他讨论了纯REST和简单RPC体系结构之间的区别。

    另一个需要注意的是,维基百科关于休息的文章情况很糟糕,菲尔丁本人,休息的“发明者”,暗示这篇文章是不准确的。

    人们对REST最怀念的是可发现性——资源应该包括超文本中其他相关资源的URI,而不是依赖于超出范围和不标准的URI命名约定。

    常见的RPC实现(如SOAP或XML-RPC)的一个大问题是,它们在自己的专有体系结构下使用HTTP,而不是利用HTTP的所有不同属性(如Put、Get、Delete等),因此这也不适合传统的Web堆栈-例如,中间的缓存服务器无法与不知道rpc调用内容的含义。

    这是对REST和RPC的一个不完整的介绍,但我认为我强调了一些经常被忽略的重要要点。小心点,因为外面有很多错误的信息。

    也就是说,休息不是万能的。它是一个体系结构,所以它在实现它的方式上相当灵活。但是,如果主要作为资源访问东西没有意义,那么REST可能不适合,或者它可能只适合应用程序的某些部分,这很好。

        3
  •  6
  •   Peter Mortensen icecrime    8 年前

    有三种不同的服务类型:

    • RPC API -客户机向服务发送一个过程和参数,服务负责执行命令并返回结果。
    • 消息API(文档API) -客户机发送DOM(元素),通常比RPC API调用更复杂的结构,因为它们往往不直接意味着操作。
    • 资源API -用于访问资源(数据库元组、文件、图像等)。一般来说,它还应该提供良好的媒体类型协商。

    SOAP和REST是从 W3C 主要的区别是SOAP使用HTTP、SMTP等作为传输协议,而REST使用它作为应用程序协议,也就是说它应该支持(get、put、push、delete和post)。SOAP还意味着使用XML,而REST可以使用任何数据类型(JSON、XML、HTTP等)。此外,SOAP的一个主要优点是服务描述符(WSDL文件),它为客户机提供了自动生成服务连接器(代理)的可能性。

    没有一个 silver bullet ;Web服务的类型和体系结构取决于实际的客户机和技术需求。

    关于这个主题的一般概念,请参阅马丁·福勒的签名书之一。- Service Design Patterns