Initially, in the computing world, everyone lived on islands, without communicating to anyone. Machines used to eat up paper and throw out paper. Then computers started communicating, but through their human conduits and using paper and magnetic media.
Someone then had the brilliant idea of joining the computers using wires and lo and behold, a new road was opened!!! The road was new, but communication was basic. Starting with simple bits, things moved to sockets that turned out to be more reliable. But using sockets, each communication was a language by itself. One had to teach a new language for having one computer speak to some new friend.
After some time, things evolved and people had the idea that the connecting wires should not be used only to pass messages, but also to issues ‘commands’ in order to execute programs remotely. Thus was born RPC. RPC then morphed into CORBA, because a lot of people got into it. The communication morphed into a complex protocol that makes Japanese etiquette look simple.
While CORBA was trying to make computers learn a difficult language, a rebel created a simpler language and the connected world exploded to become the Internet. Thus the simple HTTP language gained prominence. But with HTTP, things went back to simple communication and once again computers had to learn new languages in order to share information while piggy-backing on HTTP.
Soon after, people found HTTP to be too simple and they craved complexity. Hence that wanted to make a clean start using SOAP, which added more rigidity and rigour. Things were fine for some time, but there was unrest brewing in the world. Once again there was a rebellious wave and people wanted REST and not SOAP. Additionally, people preferred JSON instead of XML, which had morphed into a beast that serves its own purpose rather than serving it’s master – information. While some people were happy with REST, some people obviously were not. Hence they decided to simply go back to HTTP, but this time with a more structured language, namely JSON.
Thus we have a multitude of communication possibilities in the world today. Computers can exchange information using Sockets (within the organization), execute remote programs using RPC (within the organization), execute programs on remote computers across organizations (using CORBA, though this civilization seems to be dying), execute remote programs across organizations using SOAP and exchange information across organizations using REST or simple HTTP (XML over HTTP or JSON over HTTP).
Communication comes full circle – moving from simple to complex, back to simple.