Web services 将遗留RPC样式的服务切换到REST有什么好处?

Web services 将遗留RPC样式的服务切换到REST有什么好处?,web-services,rest,architecture,rpc,Web Services,Rest,Architecture,Rpc,我正在维护一个充满RPC风格*web服务的遗留应用程序。例如,我们有以下用于从系统中创建和删除用户的服务: 客户端通过HTTP POST提交XML数据来调用这些服务。XML请求包含服务器处理请求所需的所有信息(即身份验证信息、用户信息)。然后,服务器用包含客户机应该知道的任何信息(例如成功/失败标志和描述)的XML文档进行响应 我感兴趣的是,将这些RPC样式的服务切换到更RESTful的体系结构有什么好处。据我所知,这意味着: 要创建用户,客户机仍然需要通过HTTPPOST提交XML数据

我正在维护一个充满RPC风格*web服务的遗留应用程序。例如,我们有以下用于从系统中创建和删除用户的服务:

客户端通过HTTP POST提交XML数据来调用这些服务。XML请求包含服务器处理请求所需的所有信息(即身份验证信息、用户信息)。然后,服务器用包含客户机应该知道的任何信息(例如成功/失败标志和描述)的XML文档进行响应

我感兴趣的是,将这些RPC样式的服务切换到更RESTful的体系结构有什么好处。据我所知,这意味着:

  • 要创建用户,客户机仍然需要通过HTTPPOST提交XML数据(或PUT,取决于他们是否知道最终URL以及是否知道用户资源的所有必要信息)。但是,身份验证信息将使用在HTTP头中传递
  • 要删除用户,客户端将向{user id}发出HTTP delete调用。同样,身份验证信息将在HTTP头中而不是在请求体中传递。事实上,据我所知,不需要任何请求机构
  • 服务器应该尝试通过HTTP状态代码/状态描述尽可能多地指示,而不是在XML文档中指示成功/失败信息
  • 现在,据我所知,将这些服务更改为更RESTful的体系结构的主要好处是:

  • 我们将利用HTTP提供的更多功能,特别是在身份验证方面
  • URL更符合逻辑,特别是当我们需要开始公开“用户”级别下的资源时(例如,{user id}/stuff)
  • 它更符合Web的本地体系结构
  • 我遗漏了什么吗?我觉得使用RESTful架构应该有更多的好处

    *请注意,当我说“RPC样式”时,我指的不是XML-RPC或SOAP之类的标准格式。

    Hmmmm

    休息的主要好处。。。REST作为一种体系结构并不是一个直接的好处,但同时也带来了一个好处——为您的资源提供更好的连接,从封闭的通信协议中解放出来。由于模型的普遍性,REST接口使连接更容易

    REST“反映了web的架构”,很好,但没有实际用途。主要的事情是走向一个“任何(适当授权的)东西都可以连接”的世界,或者更相关的是,任何开发人员都知道如何编写连接的程序

    任何开发者、任何系统、任何应用、任何平台、任何设备。看看大量的Facebook应用程序、Twitter应用程序等等。让开发人员更容易是关键

    体系结构REST并没有提供连接。web协议为您提供了连接和集成功能。REST体系结构是使rational系统能够从任何东西进行连接所必需的


    所以,对我来说,休息就是你所做的,为了通过网络协议向尽可能广泛的受众展示你的好东西

    如果您想让范围非常广泛的客户机能够与您的服务对话,而您还没有注意到soap-y web服务客户机几乎普遍存在,那么您可能会认为REST客户机将为您提供更多的互操作能力

    换句话说,你忠实的通讯员并不相信通常支持完整的“菲尔丁论文”超媒体uber-alles REST理论的论据——将整个协议表示为一组HTTP事务,这些事务甚至一点都不像RPC


    然而,使用基于http和json的简单得多的协议来提供RPC API(Roy Fielding嘲笑它不是真正的REST)有一些严重的优点。一个完整的SOAP-y web服务堆栈是一个巨大的东西,它承载着一大堆愚蠢的XML包袱,而这些包袱是由web服务是根据任意复杂的XML文档而不是逻辑参数的集合来定义的。“纯粹的RPC”‘rest’服务避免了所有这一切。

    从实用和实用的角度来看,在不了解应用程序的情况下,转换为rest不会给您带来什么好处,特别是考虑到潜在的开发工作

    你有庞大的客户群吗?你有很多服务器吗

    REST的一个关键属性(但不是唯一的,甚至不是必需的,而是…)是它如何利用HTTP缓存

    你在做缓存吗?这对你来说有什么大不了的吗?它适用于公共互联网上的大型系统

    如果您不使用缓存,并且您认为它不会给您带来多大好处(例如,您没有太多的客户端,您的服务器没有过度饱和,您的内容根本不适合,等等),那么REST可能甚至不值得追求,因为其他好处比缓存少得多

    如果您只是在HTTP上发布POX(纯OLXML)(或JSON),并且这对您来说很好,那么我就不会担心了

    当然,HTTP还有其他好处,包括它的媒体类型、内容协商、缓存和位置头等等。但是,说真的,如果您没有看到在API中做很多这方面的工作,那就不用麻烦了

    如果缓存可以帮助您,那么就值得更全面地使用HTTP协议和堆栈,但没有理由为此而使用REST体系结构。HTTP上的缓存POX也不是REST。它是通过HTTP的

    这就是所有SOAP和XML-RPC都是…POX over HTTP,只是SOAP XML带来了几个非常厚的标准

    如果你是一个大型的服务组织,有一个10年的计划,那么你可能想考虑迁移到一个完整的船休息架构,因为这是它在wo中真正的位置