With all the hype surrounding REST architecture. It may be tempting to think that it is the only component based architecture. However there are quite a number of other architectures that allow for remote cooperation.
Today we will see some of the most popular ones.
XML-RPC stands for XML Remote Procedure Call. This standard uses XML to encode information about the behaviour to be called on the remote system.
XML is carried over HTTP and requires no special port.
The protocol is widely supported with native support in Python, PHP, Java and virtually all major languages.
As of date, it still powers the API for the popular publishing platform wordpress.
JSON-RPC is an acronym for JSON Remote Procedure Call. It is very similar to XML-RPC and in fact can be thought of as a port of XML-RPC.
SOAP (Simple Object Access Protocol) just like XML-RPC uses XML. SOAP enables a service to remotely trigger a function in a remote machine.
The protocol is web compliant and usually can be served through the normal port 80. However it can also be used with other protocols including SMTP, as such it can be used in a wider variety of environments and applications.
CORBA(Common Object Request Broker Architecture) was developed by the Object Management Group. The system was designed to provide standard for interoperability of object based software components in a distributed environment.
Objects publish their interfaces using the Interface Definition Language (IDL) as defined in the CORBA specification.
This means that the protocol is not as web friendly and typically requires special ports open. Though it tends to be much faster than JSON-RPC or XML-RPC since it does not carry the burden of the verbosity that XML and JSON bring.
Pervasive Component System
PECOS (PErvasive COmponent System) is a component based model for embedded systems. It consists mainly of components communicating through ports. It provides an environment that supports the specification, composition, configuration checking, and deployment of embedded systems built from software components.
Depending on your situation, one of the above protocols might make the best business sense for your application. If however you can not make a business case for it or you are not sure what would work for you, stick to REST.
For more on the case against RPC based systems. See
Have you ever used any of the above protocols in your own applications? Lets talk, comment below.
As usual don’t forget to Signup