¿Cuál es la diferencia entre XML-RPC y SOAP?

81

Nunca he entendido realmente por qué un implementador de servicios web elegiría uno sobre el otro. ¿XML-RPC se encuentra generalmente en sistemas más antiguos? Cualquier ayuda para entender esto será muy apreciada.

Scott Saad
fuente

Respuestas:

88

Diferencias?

SOAP es más poderoso y es mucho más preferido por los proveedores de herramientas de software (MSFT .NET, edición Java Enterprise, ese tipo de cosas).

SOAP fue visto durante mucho tiempo (2001-2007ish) como el protocolo de elección para SOA. xml-rpc no tanto. REST es el nuevo favorito de SOA, aunque no es un protocolo.

SOAP es más detallado, pero más capaz.

SOAP no es compatible con algunas de las cosas más antiguas. Por ejemplo, no hay libs SOAP para ASP clásico (que pude encontrar).

SOAP no es compatible con Python. XML-RPC tiene un gran soporte en Python, en la biblioteca estándar.

SOAP admite la transferencia a nivel de documento, mientras que xml-rpc se trata más de la transferencia de valores, aunque puede transferir estructuras como estructuras, listas, etc.

xm-rpc se trata realmente de una transferencia independiente del lenguaje de programa a programa. Principalmente pasa por http / https. Los mensajes SOAP también pueden enviarse por correo electrónico.

xml-rpc es más unixy. Le permite hacer las cosas de forma sencilla, y cuando sabe lo que está haciendo, implementar servicios web de calidad es muy rápido, incluso cuando se utilizan editores de texto de terminal. Hacer SOAP de esa manera es un zoológico; Realmente necesita un buen IDE para hacerlo factible.

Sin embargo, conocer SOAP se verá mucho mejor en su currículum vitae / CV si está compitiendo por un trabajo de TI de Fortune 500.

xml-rpc tiene algunos problemas con los juegos de caracteres que no son ASCII.

XML-RPC no admite parámetros con nombre. Deben estar en el orden correcto. No estoy seguro de SOAP, pero creo que sí.

Christopher Mahan
fuente
1
Para SOAP con Python, existe el paquete ZSI. Es bastante bueno, pero es absolutamente necesario un wsdl.
edomaur
2
Creo que el antiguo SOAP Toolkit era compatible con "ASP clásico". Más concretamente, se puede utilizar su lenguaje .NET favorito para crear un componente COM que envuelva una Referencia de servicio, lo que permite que ASP clásico consuma incluso un servicio web moderno.
John Saunders
1
@edomaur De hecho, la espuma es una mejor opción ya que es más pitónica, más sencilla y más fácil de usar pypi.python.org/pypi/suds
ccpizza
14

Solo para agregar a las otras respuestas, lo animo a que observe las representaciones textuales reales de las llamadas SOAP y XML-RPC, quizás capturando una con Ethereal. Todo el argumento de que "XML-RPC es más simple" no tiene mucho sentido hasta que se ve cuán increíblemente detallada es una llamada SOAP. Muchos de los sitios web bastante populares se alejan de SOAP como su API debido a la cantidad de ancho de banda que consumiría si la gente comenzara a usarlo de manera extensiva.

bmdhacks
fuente