Remote Procedure Call (RPC)
Originated in 1976, it allows a Client to remotely call a Server’s subroutine and then return the execution result to the Client; at the time, transmitted data often used binary formats. To standardize data transmission formats, XML-RPC subsequently emerged, an RPC mechanism using XML as the data exchange language.
Simple Object Access Protocol (SOAP)
Originated in 1998, because RPC was frequently blocked by Firewalls and Proxy Servers, adopting HTTP (originated in 1989) was a better approach to resolve compatibility and security issues. SOAP also provided a set of standard methods allowing programs to communicate with each other. SOAP can be simply viewed as RPC + XML + HTTP (POST only) + stateful communication method.
Representational State Transfer (REST/RESTful)
Originated in 2000, because SOAP was overly complex and state-dependent, REST advocated using the four standard HTTP actions GET, PUT, POST, and DELETE, along with Uniform Resource Identifier (URI) to specify resources, reducing development complexity. REST can be simply viewed as RPC + XML + HTTP (GET, PUT, POST, DELETE) + URI + stateless communication method.
Development Trends
The REST style is more concise and easier to use compared to XML-RPC and SOAP, and the JSON data exchange language is more lightweight than XML. Currently, most Web Services adopt REST + JSON as the transmission method.
