XMLRPC y SOAP son dos mecanismos que han surgido para reducir las implicaciones de diseñar procedimientos remotos . A diferencia de otras tecnologías similares como CORBA,DCOM e inclusive RMI, XMLRPC y SOAP permiten la ejecución de procedimientos remotos a través de diversos lenguajes y sistemas operativos.
Diversos sistemas operativos y lenguajes ? Esto ya lo logra RMI y CORBA, no ? Si, pero la diferencia estriba en que el intercambio de información se logra mediante XML y HTTP .
Cuando se utiliza RMI, CORBA o DCOM siempre se debe utilizar marshalling | unmarshalling , sin embargo, el utilizar marshalling y unmarshalling tiene sus consecuencias, si utiliza CORBA: tanto el cliente como el servidor deben utilizar el mismo ORB("Objet Request Broker") ,y si utiliza RMI: el cliente y servidor deben operar con Java.
Las limitaciones se hacen más evidentes cuando se desean invocar procedimientos remotos en Perl,Python,C++,Java bajo Linux,AIX,Windows o Solaris. Será posible coordinar la utilización del mismo ORB("Objet Request Broker") o Java ? En un ambiente como Internet seguramente NO.
Para lograr invocar procedimientos remotos XMLRPC y SOAP utilizan XML y el protocolo HTTP , y esto otorga lo siguiente:
Debido a que XML es utilizado para solicitar y enviar requisiciones de procedimientos remotos , se emplea uno de los estándares más utilizados e interoperable de la industria.
Esta misma interoperabilidad de XML permite algo sin precedente en un sistema de computo, el invocar procedimientos remotos transparentemente de distintos lenguajes que pueden variar desde Java, Perl, C++, Python y otros más .
El utilizar HTTP elimina la conocida restricción de procedimientos remotos: el firewall , CORBA y RMI requieren de su propio puerto TCP lo cual implica configuración adicional a un firewall, debido a que XMLRPC y SOAP operan bajo HTTP (puerto 80) casi siempre es permitido este tipo de trafico (Web) por el firewall.
El utilizar XML para enviar las requisiciones de procedimientos remotos puede ser excesivo, esto se debe a que la requisición debe ser más expresiva por ende, ocupa mayor ancho de banda para ser transmitida. Lo anterior no es el caso cuando se utiliza RMI o CORBA, ya que utilizar marshalling y unmarshalling permite que la requisición sea más pequeña.