Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Soap
Soap
1
Protocolo Simple de Acceso a Objetos Protocolo Simple de Acceso a Objetos
INTRODUCCIN
Ingenieros de software rechazan el uso de tecnologas que no sean de su preferencia Se crea una adecuado de heterogneo polaridad que hace difcil alcanzar interoperabilidad entre sistemas de un nivel software
Sera muy til encontrar una tecnologa estandarizada sobre la cual se pusieran de acuerdo para crear mecanismos de integracin Una posible solucin a este problema es considerar tecnologas simples y populares (e.g. HTTP y XML) El Protocolo Simple de Acceso a Objetos (SOAP, Simple Object Access Protocol) surge con esta orientacin
BREVE RESEA
A principios de 1999:
Un grupo de investigadores e ingenieros de Microsoft Corporation, DevelopMentor y UserLand Software comenzaron el desarrollo del Protocolo Simple de Acceso a Objetos (SOAP, Simple Object Access Protocol)
A finales de 1999:
Fue sometido a consideracin un borrador de la especificacin de SOAP version 1.0 ante la Internet Engineering Task Force (IETF) Se incorporan al grupo de desarrollo representantes de las empresas IBM y Lotus Development Corporation
QU ES SOAP? QU ES SOAP?
SOAP es un protocolo ligero basado en XML (eXtensible Markup Language) para el intercambio de informacin en un ambiente descentralizado y distribuido. Consiste en tres partes:
Un envoltorio que sirve de contenedor del mensaje, describe el contenido del mensaje e indica cmo procesarlo Un conjunto de reglas de codificacin para expresar tipos de datos definidos Una convencin para representar llamadas y respuestas a procedimientos remotos
Su propsito es satisfacer las necesidades de desarrolladores de sistemas de procesamiento distribuido que encuentran difcil la utilizacin de otras tecnologas existentes (e.g. CORBA y DCOM)
QU ES SOAP? QU ES SOAP?
SOAP permite que objetos de un programa, ejecutndose en una plataforma computacional invoquen mtodos de objetos remotos de otro programa que puede estarse ejecuntando en una plataforma diferente SOAP emplea:
El Lenguaje Extensible de Marcas (XML, eXtensible Markup Language) para definir la estructura del mensaje El Protocolo de Transferencia de Hipertexto (HTTP, Hypertext Transfer Protocol) del World Wide Web como medio de transporte
SOAP
XML
HTTP/SMTP TCP/IP
QU ES SOAP? QU ES SOAP?
A pesar de que la especificacin slo define su utilizacin con HTTP, puede ser utilizado en combinacin con una variedad de protocolos. (e.g. SMTP implementado por IBM-SOAP 1.2 for Java) En cierto sentido, SOAP es similar a IIOP (Internet Inter-ORB Protocol), parte fundamental de CORBA y a RMI (Remote Method Invocation) de Java Una de las ventajas ms importantes de SOAP es su inmunidad a las barreras de seguridad (firewalls)
CONSIDERACIONES DE DISEO
La simplicidad y extensibilidad son las carcatersticas ms importante de SOAP Algunas caractersticas tradicionales de los sistemas de pase de mensajes y de objetos distribuidos no forman parte de la especificacin bsica de SOAP. Entre estas tenemos:
Recolector distribuido de desechos (Distributed garbage collection) Manejo de mensajes por lotes (Boxcarring or batching of messages) Objetos por referencias (Objects-by-reference) Activacin
Los mensajes SOAP tienen un solo sentido (del emisor al receptor) y pueden ser combinados para implementar patrones tales como de solicitud y respuesta SOAP permite el procesamiento en uno o ms nodos intermedios antes de llegar a su destino final
Todos los mensajes SOAP estn codificados utilizando XML SOAP define dos espacios de nombres:
Envoltorio SOAP: http:// schemas.xmlsoap.org/soap/envelope/ Serializacin SOAP: http://schemas.xmlsoap.org/soap/encoding/
Un mensaje SOAP no debe contener una Declaracin de Tipo de Documento (DTD, Document Type Declaration) ni Instrucciones de Procesamiento (Processing Instructions)
<SOAP-ENV:Envelope <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> <SOAP-ENV:Header> <SOAP-ENV:Header> <t:Transaction <t:Transaction xmlns:t="some-URI" SOAP-ENV:mustUnderstand="1"> xmlns:t="some-URI" SOAP-ENV:mustUnderstand="1"> 5 5 </t:Transaction> </t:Transaction> </SOAP-ENV:Header> </SOAP-ENV:Header> <SOAP-ENV:Body> <SOAP-ENV:Body> <m:GetLastTradePrice xmlns:m="Some-URI"> <m:GetLastTradePrice xmlns:m="Some-URI"> <symbol>DEF</symbol> <symbol>DEF</symbol> </m:GetLastTradePrice> </m:GetLastTradePrice> </SOAP-ENV:Body> </SOAP-ENV:Body> </SOAP-ENV:Envelope> </SOAP-ENV:Envelope>
Encabezado SOAP
HTTP/1.1 200 OK HTTP/1.1 200 OK Content-Type: text/xml; charset="utf-8" Content-Type: text/xml; charset="utf-8" Content-Length: nnnn Content-Length: nnnn
<SOAP-ENV:Envelope <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> <SOAP-ENV:Body> <SOAP-ENV:Body> <m:GetLastTradePriceResponse xmlns:m="Some-URI"> <m:GetLastTradePriceResponse xmlns:m="Some-URI"> <Price>43.6</Price> <Price>43.6</Price> </m:GetLastTradePrice> </m:GetLastTradePrice> </SOAP-ENV:Body> </SOAP-ENV:Body> </SOAP-ENV:Envelope> </SOAP-ENV:Envelope>
<SOAP-ENV:Envelope <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/> <SOAP-ENV:Body> <SOAP-ENV:Body> <SOAP-ENV:Fault> <SOAP-ENV:Fault> <faultcode> <faultcode> Client.Authentication Client.Authentication </faultcode> </faultcode> <faultstring> <faultstring> Authentication Error. Authentication Error. </faultstring> </faultstring> <faultactor>Some-URI</faultactor> <faultactor>Some-URI</faultactor> <detail>Some details</detail> <detail>Some details</detail> </SOAP-ENV:Fault> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Body> </SOAP-ENV:Envelope> </SOAP-ENV:Envelope>
ESTILO DE CODIFICACIN
Sistema simple de codificacin, basado en XML, producto de la generalizacin de caractersticas comunes encontradas en los tipos de datos presentes en lenguajes de programacin, base de datos y data semi-estructurada Existen dos categoras de tipos de datos: simples y compuestos El identificador de espacio de nombres para los elemento y atributos definidos en la especificacin de SOAP es "http://schemas.xmlsoap.org/soap/encoding/" El uso del modelo de datos y estilo de codificacin es recomendado por la especificacin de SOAP pero no es de carcter obligatorio; otros modelo de datos y estilos de codificacin pueden ser empleados con SOAP
Esquema:
<element name="age" type="int"/> <element name="age" type="int"/> <element name="height" type="float"/> <element name="height" type="float"/> <element name="displacement" type="negativeInteger"/> <element name="displacement" type="negativeInteger"/> <element name="color"> <element name="color"> <simpleType base="xsd:string"> <simpleType base="xsd:string"> <enumeration value="Green"/> <enumeration value="Green"/> <enumeration value="Blue"/> <enumeration value="Blue"/> </simpleType> </simpleType> </element> </element>
Data:
<age>45</age> <age>45</age> <height>5.9</height> <height>5.9</height> <displacement>-450</displacement> <displacement>-450</displacement> <color>Blue</color> <color>Blue</color>
SOAP define tipos de datos compuestos correspondientes a patrones estructurales presentes con frecuencia en lenguajes de programacin. Estos son:
Estructuras Arreglos
Los tipos de datos compuestos a su vez pueden contener tipos de datos compuestos La especificacin de SOAP no limita la serializacin de otros tipos de datos compuestos
Arreglo (Array)
Un arreglo es un tipo de dato compuesto donde la posicin de Un arreglo es un tipo de dato compuesto donde la posicin de sus miembros sirve como nica distincin entre ellos. Los sus miembros sirve arreglos SOAP estn definidos como "SOAP-ENC:Array". arreglos SOAP
Esquema: Esquema:
<element name="myFavoriteNumbers" type="SOAP-ENC:Array"/> <element name="myFavoriteNumbers" type="SOAP-ENC:Array"/>
10
Arreglos Esparcidos Cada elemento especifica su posicin mediante el atributo SOAPespecifica su posicin mediante el atributo SOAPENC:position
<SOAP-ENC:Array <SOAP-ENC:Array SOAP-ENC:arrayType="xsd:string[5]" > SOAP-ENC:arrayType="xsd:string[5]" > <item SOAP-ENC:position="[1]">The first element</item> <item SOAP-ENC:position="[1]">The first element</item> <item SOAP-ENC:position="[3]">The third element</item> <item SOAP-ENC:position="[3]">The third element</item> </SOAP-ENC:Array> </SOAP-ENC:Array>
11
La implementacin de SOAP sobre HTTP permite conjugar la formal y descentralizada flexibilidad de SOAP con las caractersticas de HTTP SOAP sigue naturalmente el modelo de solicitud/respuesta de HTTP incorporando el contenido de una solicitud SOAP en una solicitud HTTP e igualmente el contenido de una respuesta SOAP en una respuesta HTTP Todas las solicitudes y respuestas SOAP deben valor text/xml al encabezado Content-Type reconocidas como tales asignar el para ser
12
Una respuesta SOAP no puede contener un resultado y un elemento Fault en el cuerpo del mensaje
13
Informacin adicional relevante a la codificacin de la invocacin de un mtodo puede ser expresada dentro del elemento Header, mas no informacin que sea parte de la definicin del mtodo (firma del mtodo)
Como ejemplo del uso de un elemento del Header est el pase de un identificador de transaccin junto al mensaje
CONSIDERACIONES DE SEGURIDAD
La especificacin de SOAP no incluye mtodos que garanticen la integridad y privacidad de los datos Ya que SOAP trabaja sobre HTTP, podra utilizar cualquier caracterstica de seguridad desarrollada para este protocolo, tales como:
SSL (SecureSocketsLayer) y HTTPS (HyperText Trasnfer Protocol Secure)
14
Developmentor (http://www.develop.com/soap/)
Disponibles: APIs para Java y Perl En desarrollo: API para C/C++ y COM
IBM (http://www.alphaworks.ibm.com)
Disponible: API para Java
Para emplear el API provisto por IBM se requiere los siguientes herramientas de software: Herramientas de desarrollo para Java2.
Servidor Web Apache. Tomcat (Servlets y JavaServer Pages)
SOAP Services
Web Client
Web Server
15
// Chequeo de la respuesta if (resp.generatedFault()) { Fault fault = resp.getFault (); System.out.println ("Ouch, the call failed: "); System.out.println ("Fault Code = " + fault.getFaultCode ()); System.out.println ("Fault String = " + fault.getFaultString()); return Double.NaN; } else { Parameter result = resp.getReturnValue (); return ((Double)result.getValue ()).doubleValue (); } } }
16
Algunos campos:
ID del servicio Tiempo de vida del objeto Mtodos Tipo de proveedor (Java o scripts) Tipo de codificacin
Se anticipa que SOAP, actualmente auspiciado por W3C, se el protocolo utilizado en las interacciones B2B en un futuro no muy lejano OMG (Object Management Group) anunci que haba comenzado a trabajar en un estndar permitir la integracin de SOAP con CORBA La propuesta est publicada como Interworking Request For Proposal CORBA/SOAP
Se espera que este nuevo estndar este listo para mediados del ao 2001, posibilitando que clientes SOAP invoquen a servidores CORBA y, clientes y servidores CORBA interoperen empleando SOAP
17
CONCLUSIONES
SOAP es un protocolo para la integracin de sistemas heterogneos caracterizado por su relativa simplicidad y por la gran popularidad de las tecnologas subyacentes que lo integran, vale decir HTTP y XML
La especificacin del protocolo no incluye caractersticas que presentan otras tecnologas de procesamiento distribuido tales como activacin de objetos, servicio de nombres y recolector de desechos, entre otras
CONCLUSIONES
Una de las ventajas ms importantes de SOAP es su inmunidad a las barreras de seguridad (firewalls), caracterstica que favorece la creacin de complejos sistemas de procesamiento ampliamente distribuidos que operan sobre la existente infraestructura de Internet
Aun con una especificacin carente de un modelo de objetos claro que evidencia la inmadurez de esta tecnologa, SOAP promete convertirse en el protocolo estndar utilizado en interaccines B2B
18