In my entry on how HTTP has become the default, universal communication protocol, I mentioned that HTTP’s conceptual model was simple enough that it was easy to view it (plus JSON) as an RPC (Remote Procedure Call) system. I saw some reactions that took issue with this (eg comments here), because HTTP (plus JSON) lacks a lot of features of real RPC systems. This is true, but I maintain that it’s incomplete, because there’s a difference between a good RPC system and something that people press into service to do RPC with.