In the beginning was TCP/IP, and the predominant model was that servers would listen for clients using a pre-established port number. Then came Sun RPC, in which RPC servers were established dynamically, and listened on semi-random ports (still, one port per service provided); the problem was solved by baking the port mapper into the protocol. The mapper listens on a pre-established port, and the client first connects there to inquire, "On what port shall I find service X?"
Then came HTTP, the layer 6 protocol masquerading as layer 7.
Showing posts with label rpc. Show all posts
Showing posts with label rpc. Show all posts
Wednesday, January 11, 2012
Wednesday, November 23, 2011
REST and RPC: Not Actually Antonyms
Last month found me writing a rant about REST and the shortcomings of interpreting it as "REST = HTTP+HATEOAS". I submerged myself into some writings of Fielding, and took some time for reflection, and I've found one of the sources of my problems with "REST". (Another.)
This problem is that there's too much writing on the web that attacks "RPC systems" as the logical opposite of REST, and I took this assumption unquestioned.
This problem is that there's too much writing on the web that attacks "RPC systems" as the logical opposite of REST, and I took this assumption unquestioned.
Friday, October 21, 2011
The Trouble with REST
Note: this post has been superseded.
REST is easy to describe. It goes a little something like this: "You have some representation, and you send (or receive) the whole thing to read it or make changes." People coming from Clojure would understand it as REST sends values. I can GET an object, receive the value, manipulate it, and PUT the new value. It's so easy because it just uses HTTP!
Right? Maybe not. If REST is so easy, why is there HATEOAS*? Shouldn't that have been obvious? Why do we have arguments about versioning and parameters and formats and headers on Reddit?
REST is easy to describe. It goes a little something like this: "You have some representation, and you send (or receive) the whole thing to read it or make changes." People coming from Clojure would understand it as REST sends values. I can GET an object, receive the value, manipulate it, and PUT the new value. It's so easy because it just uses HTTP!
Right? Maybe not. If REST is so easy, why is there HATEOAS*? Shouldn't that have been obvious? Why do we have arguments about versioning and parameters and formats and headers on Reddit?
Subscribe to:
Posts (Atom)