Introducción
SOAP es un protocolo "liviano" basado en XML, para invocar procedimientos en forma remota (Remote Procedure Call). Utiliza cualquier protocolo que permita transportar mensajes de texto, siendo HTTP el más utilizado.
Su especificación describe el contenido que debe tener un mensaje XML para ser usado en una invocación remota.
Cualquier aplicación que cumpla la especificación puede invocar y proveer servicios sin importar en que lenguaje o plataforma esté implementado, lo único necesario es que la aplicación sea capaz de interpretar el mensaje SOAP que recibe, realizar el procesamiento que el mensaje requiera, y devolver otro mensaje SOAP con la respuesta.
En las aplicaciones generadas por GeneXus se utiliza SOAP para invocar a objetos en forma remota, usando HTTP como protocolo de transporte.
Alcance
Objetos llamadores (Clientes)
Objetos: Todos los objetos
Lenguajes: C/SQL - Java - Visual Basic - Visual FoxPro - C#
Interfaces: Win/Web
Los objetos llamadores son los que invocan servicios mediante SOAP
Objetos llamados (Servidores)
Objetos: Procedimientos y Reportes
Lenguajes: C/SQL - Java - Visual Basic - C#
Interfaces: Web
Los objetos llamados son los brindan un servicio invocado mediante SOAP
Descripción
Algunas de las ventajas de utilizar este protocolo en aplicaciones GeneXus son la posibilidad de desarrollar servicios web, así como el poder hacer invocaciones entre objetos de diferentes generadores (por ej. llamar desde Visual Basic a Java, o desde C/Sql a Visual Basic), funcionalidad que no estaba permitida en versiones anteriores, excepto llamadas RPC desde los generadores visuales a los generadores CSql/Cobol/RPG.
Servidor
Para indicar en GeneXus que un objeto main va a ser llamado utilizando el protocolo SOAP, se deberá seleccionar el valor "SOAP" en la propiedad "Options/Call Protocol". Nos referiremos en adelante a dichos objetos como "Servidores" o "Servicios web". Solo pueden ser reportes o procedimientos, sin ningún tipo de interfaz con el usuario.
Se requiere un servidor Web que haga el hosting de los servicios a ser invocados.
Los programas Servidores reciben la invocación http, procesan el mensaje SOAP que envía el Cliente con sus parámetros, realizan la acción requerida, y generan otro mensaje SOAP de respuesta (eventualmente con los parámetros modificados).
Cliente
Los objetos que van a invocar al servicio web, a los que llamaremos "Clientes", pueden ser cualquier objeto GeneXus. La invocación se hace con el comando call() de GeneXus.
Los programas Clientes realizan las tareas necesarias para ensamblar el mensaje SOAP, hacer la invocación http, y desensamblar la respuesta, obteniendo los parametros modificados en forma automática. Todo esto se realiza en forma automática y transparente para el usuario.
Locations
Para indicar cual va a ser la ubicación de los servicios invocados se utiliza un esquema conocido como Locations.
Por más información:
http://www.artech.com.uy/Solis/gxdl/Español/GeneXus_Solis/GeneXus
/Internet/Docum/ReleaseNotes/7.5/callsoap.htm