XML-RPC vs REST

后端 未结 2 985
梦毁少年i
梦毁少年i 2021-01-31 04:47

This is a more theoretical question. I am about to build a little server in here and want to create an API for it. I am deciding what is better and already ruled out SOAP since

相关标签:
2条回答
  • 2021-01-31 05:10

    REST vs RPC implementations like XML-RPC is a false dichotomy. You can implement a RESTful interface using XML-RPC (although you probably wouldn't want to). That said, there are a bunch of reasons why you would want to expose resources in a RESTful way using vanilla HTTP instead of rolling your own RPC interface using a technology like XML-RPC:

    1. Future actions are primarily controlled by the server instead of hard-coded in the client via procedure calls, simplifying deployment and versioning.
    2. Existing implementations for things like caching, throttling, and versioning can be used out of the box.
    3. The custom procedures that you roll with an RPC interface are likely to be too narrowly scoped.

    See this blog post for more info.

    0 讨论(0)
  • 2021-01-31 05:13
    • XML-RPC is patent encumbered. You may find that you're one day asked to pay a royalty for its use. As far as I can tell, REST is not.

    • XML-RPC requests are opaque to security infrastructure. Whereas an HTTP aware firewall could be configured to allow REST calls to read data but not to update or delete it.

    The other advantages of REST apply more to dealing with large data-sets.

    • REST is much lighter on the wire (particularly when using JSON rather than XML).

    • XML-RPC ignores HTTP semantics. All XML-RPC calls are HTTP POSTs. This has a number of implications. Including that

      • REST requests benefit from HTTP cacheing infrastructure where all XML-RPC calls must be processed by the target server.
      • REST enables the client to check for updates using a simple HTTP HEAD request. To do the same in XML-RPC, you would need to build it into your API.
    • The XML-RPC client must load the entire response into memory so that can be presented as a return value where it is simple for a REST client to process the stream as it arrives. This means that its quite ok for a REST call to respond with any number of records where an XML-RPC API should limit the size of the response.

    0 讨论(0)
提交回复
热议问题