Este documento proporciona una introducción al protocolo SOAP. Explica que SOAP es un protocolo ligero para el intercambio de información estructurada entre aplicaciones. Describe la estructura básica de un mensaje SOAP, incluyendo el sobre, la cabecera, el cuerpo y los posibles fallos. También define la terminología clave relacionada con SOAP como nodos, roles, enlaces y características.
Transferencia de Estado Representacional (Representational State Transfer) o REST
Originado en el año 2000 por el doctor Roy Fielding en la Universidad de California en su tesis doctoral
Tesis “Estilos de Arquitectura y el Diseño de Arquitecturas de Software basadas en Redes”
Principios arquitectónicos de software para usar a la Web como una plataforma de Procesamiento Distribuido
Integración de aplicaciones
Java se centra en las API XML para Java tales como JAXP, JAXB, JAX-RPC, JAX-WS, etc. También hace una pequeña introducción a JMS.
Un WebService es una pieza de software identificada por un URI (Uniform Resource Identifier).
Su medio de comunicación se fundamenta en el uso de XML, TEXT, JSON
XML
XML Namespace, XML Schema, Xpath, XSLT.
HTTP, JSON
vortexbird
Principios básicos de la Arquitectura Rest, haciendo especial hincapié en las 6 restricciones que permiten crear API altamente escalables (Uniform Interface, Stateless, Cacheable, Client-Server, Layered System y Code on Demand).
Estas restricciones son la base de la Arquitectura REST y aplicarlas nos ayudaran a conseguir buenos diseño: correcto nombrado de los servicios, recursos, aplicar el método (GET, POST, PUT, DELETE) apropiado a la acción, descubrir recursos basándonos únicamente en las respuestas del servidor (HATEOAS), ..
Además, conoceremos el Modelo de Madurez Richarson que nos permite conocer en que punto nos encontramos dentro de la arquitectura, algunos antipatrones de diseño y ejemplos de API REST (Twitter, Facebook).
Transferencia de Estado Representacional (Representational State Transfer) o REST
Originado en el año 2000 por el doctor Roy Fielding en la Universidad de California en su tesis doctoral
Tesis “Estilos de Arquitectura y el Diseño de Arquitecturas de Software basadas en Redes”
Principios arquitectónicos de software para usar a la Web como una plataforma de Procesamiento Distribuido
Integración de aplicaciones
Java se centra en las API XML para Java tales como JAXP, JAXB, JAX-RPC, JAX-WS, etc. También hace una pequeña introducción a JMS.
Un WebService es una pieza de software identificada por un URI (Uniform Resource Identifier).
Su medio de comunicación se fundamenta en el uso de XML, TEXT, JSON
XML
XML Namespace, XML Schema, Xpath, XSLT.
HTTP, JSON
vortexbird
Principios básicos de la Arquitectura Rest, haciendo especial hincapié en las 6 restricciones que permiten crear API altamente escalables (Uniform Interface, Stateless, Cacheable, Client-Server, Layered System y Code on Demand).
Estas restricciones son la base de la Arquitectura REST y aplicarlas nos ayudaran a conseguir buenos diseño: correcto nombrado de los servicios, recursos, aplicar el método (GET, POST, PUT, DELETE) apropiado a la acción, descubrir recursos basándonos únicamente en las respuestas del servidor (HATEOAS), ..
Además, conoceremos el Modelo de Madurez Richarson que nos permite conocer en que punto nos encontramos dentro de la arquitectura, algunos antipatrones de diseño y ejemplos de API REST (Twitter, Facebook).
La Web está evolucionando a pasos agigantados en los últimos tiempos. Una de las direcciones de avance en este sentido apunta hacia su modularización. En lugar de construir pesadas aplicaciones monolíticas, parece estar más en sintonía con los principios arquitectónicos de la Web hacer un desarrollo dirigido por la construcción de componentes Web sencillos, atómicos y funcionales que fomenten su reutilización transversal y puedan utilizarse como etiquetas de autor personalizadas para articular soluciones elaboradas. Pero más allá de limitarnos a construir componentes Web y utilizarnos de manera conjunta en una página huesped, la orientación a componentes exige encontrar cierto grado de interoperabilidad entre los mismos para ofrecer una sensación de continuidad en su uso al usuario final.
De acuerdo a esta idea, en esta charla comenzaremos haciendo una revisión de la tecnología utilizada para la construcción de componentes Web según las especificaciones estándar de la W3C y del WWG, haciendo uso de la Plataforma de soporte Polymer de Google como implementación nuclear de referencia. Esto nos dará pie para presentar el problema de cómo puede abordarse la construcción de soluciones Web orientadas a componentes para ofrecer niveles de interoperabilidad adecuados. Ofreceremos, en este sentido, algunas soluciones arquitectónicas al respecto y presentaremos ejemplos de su aplicabilidad práctica en contextos realistas.
Orientando a Componentes la Web
Charla Desarrollo de sobre Componentes Web en Polymer para HTML5 Spain Madrid 14/07/14
La Web está evolucionando a pasos agigantados en los últimos tiempos. Una de las direcciones de avance en este sentido apunta hacia su modularización. En lugar de construir pesadas aplicaciones monolíticas, parece estar más en sintonía con los principios arquitectónicos de la Web hacer un desarrollo dirigido por la construcción de componentes Web sencillos, atómicos y funcionales que fomenten su reutilización transversal y puedan utilizarse como etiquetas de autor personalizadas para articular soluciones elaboradas. Pero más allá de limitarnos a construir componentes Web y utilizarnos de manera conjunta en una página huesped, la orientación a componentes exige encontrar cierto grado de interoperabilidad entre los mismos para ofrecer una sensación de continuidad en su uso al usuario final.
De acuerdo a esta idea, en esta charla comenzaremos haciendo una revisión de la tecnología utilizada para la construcción de componentes Web según las especificaciones estándar de la W3C y del WWG, haciendo uso de la Plataforma de soporte Polymer de Google como implementación nuclear de referencia. Esto nos dará pie para presentar el problema de cómo puede abordarse la construcción de soluciones Web orientadas a componentes para ofrecer niveles de interoperabilidad adecuados. Ofreceremos, en este sentido, algunas soluciones arquitectónicas al respecto y presentaremos ejemplos de su aplicabilidad práctica en contextos realistas.
Prontuário Orientado para o Problema - POP
Aula da Residência Médica
Preceptor: Gustavo Landsberg
LANDSBERG, Gustavo. Prontuário Orientado para o Problema - POP [aula] Betim: SMS/ DESA/ PRM MFC Betim, 2009. [online] [disponivel em www.slideshare.net/rmmfcbetim] [ acesso em ##/##/####]
Se muestra una introducción a Web Services, un caso de la vida real, se propone un ejercicio y finalmente se muestra un ejemplo del tipo "hola mundo" y se explica como se realiza
El mercado móvil es hoy día un pilar importante tanto para usuarios como para desarrolladores. Sin embargo, tenemos un mercado amplio y diverso con una gran variedad de dispositivos y sistemas. Si entramos en el terrero de desarrolladores el problema se acentúa con diferentes entornos de desarrollo, lenguajes y otros elementos. En esta sesión repasaremos el estado actual, introduciremos Xamarin como herramienta para crear aplicaciones nativas multiplataforma desde Visual Studio analizando todas sus bondades y costes además de ver distintas opciones Xamarin Classic y Xamarin.Forms.
La programación funcional está cogiendo fuerte tracción en los últimos años dentro de la comunidad de desarrollo. Tal vez ello se deba al surgimiento de nuevas arquitecturas que demandan cotas de escalabilidad, resistencia y flexibilidad en el marco de soluciones centradas en procesos de transformación. Pero más allá de una simple moda, como trataremos de mostrar en este taller, la programación funcional conduce a soluciones de código robustas, versátiles y expresivas que difícilmente son comparables con las propias de la orientación a objetos.
Además JavaScript, como la mayoría de los lenguajes de scripting es un lenguaje idiomático que invita a pensar en términos funcionales. De hecho muchas veces, cuando programamos en Javascript, desarrollamos soluciones funcionales casi sin darnos cuenta. Pero para trabajar correctamente en el marco de este paradigma debemos saber, qué es exactamente la programación funcional, cuáles son sus ventajas y principios fundacionales, de qué mecanismos se sirve, qué técnicas de programación se utilizan, qué patrones de diseño funcional existen a nuestra disposición y qué estilos arquitectónicos emergen.
Este taller trata de dar una introducción a la programación funcional que comienza desde lo más básico y va pasando progresivamente hacia conceptos más avanzados. A continuación se resume una relación del programa de contenidos para que os hagáis una idea de lo que se va a abordar.
- Diseño de Funciones I. Recursión
- Diseño de Funciones II. Inmersion
- Orden Superior I. Famila map & reduce
- Orden Superior II. Evaluación Partial
- Orden Superior III. Closures & Retentión Léxica
- Composición I. compose & sequence
- Composición II. Inversión de control
- Composición III. Streams
- Diseño sin Estado I. Fundamentos
- Diseño sin Estado II. Mónadas
- Conceptos Avanzados I. Optimización
- Conceptos Avanzados II.Inmutabilidad
Todos estos temas se abordan en 12 ficheros `.js` que se encuentran en [https://goo.gl/YwXtkV], en la carpeta `code/`. Para falilitar la realización y autoevaluación, el material de este taller se ha dividido en dos carpetas. En `code/problems` puede encontrarse una descripción de cada ejercicio planteado junto con una plantilla de código que ayuda a escribir la solución y probarla. En la carpeta `code/solutions` se ofrece una propuesta de solución para cada ejercicio planteado. Se anima al lector a no consultar la solución hasta haber intentando cada ejercicio por si mismo.
Video: http://goo.gl/acVK2t
Slideshare: http://goo.gl/2OChM4
Github: http://goo.gl/29ldtQ
La Web se está orientando a componentes. El objetivo es alcanzar una Web cada vez más madura, dirigida a fomentar la sencillez en las tareas de diseño y construcción, aumentar la rapidez y agilidad de desarrollo y mejorar la productividad general de las soluciones Web. Todo esto se consigue en parte debido al carácter declarativo que confiere la tecnología de componentes Web que, además, permite encapsular un comportamiento complejo, absorber la gestión adaptativa de los contenidos y, a la postre, generar un vocabulario propio de etiquetas de autor que fomenta la reutilización de código desde el front end.
Sin embargo, la comunidad demanda de manera creciente la definición de directrices y buenas prácticas en relación con las actividades de diseño y desarrollo vinculadas a la construcción de soluciones basadas en componentes Web. En esta charla ofreceremos una colección de principios que tienen por objetivo orientar a los equipos implicados en este tipo de proyectos.
En los últimos tiempos se viene demandando dentro de las comunidades de desarrollo la construcción de arquitecturas reactivas que sean capaces de hacer frente a parámetros de rendimiento y tiempo de respuesta no conocidos hasta el momento. Una arquitectura reactiva es un sistema responsive capaz de reaccionar a tiempo a los requisitos bajo demanda, diseñado para adaptarse elásticamente a sus fluctuaciones variantes, que presenta un comportamiento altamente tolerante a fallos y que se dirige por un procesamiento masivo de mensajes.
Pero más allá de todo esto, las arquitecturas reactivas se han convertido en un modelo de programación basado en transformaciones funcionales para dar soporte a sistemas dirigidos por eventos asíncronamente. En marco del desarrollo de soluciones para Front End, este tipo de aproximaciones está cogiendo tracción debido a lo bien que se adapta al modelo de interacción de la Web. En este contexto, los eventos responden a las interacciones del usuario sobre el agente navegador y la lógica de negocio se expresa como la transformación secuencial y progresiva de los mismos de forma encadenada. A lo largo de esta charla estudiaremos cómo funcionan este tipo de arquitecturas en contraposición con las clásicas soluciones MV* y presentaremos el modelo de desarrollo asociado.
NodeJS es una plataforma que permite programar servidores dedicados en Javascript de forma sencilla y eficaz. Pese a que Javascript no es un lenguaje con soporte a la concurrencia, el carácter no bloqueante de las operaciones que realizan accesos de entrada salida E/S permite avanzar los flujos de ejecución aumentando la productividad y la escalabilidad del sistema total. En efecto, los tiempos de espera en cada operación motivados por los accesos a disco son aprovechados para procesar nuevas peticiones entrantes en el servidor. Pese a sus innegables ventajas en productividad, el modelo de programación se complica. Dado que ahora las operaciones se liberan del flujo de control para retomarse posteriormente, ¿cómo podemos determinar cuándo una operación ha terminado? ¿Cómo podemos recuperar sus resultados? ¿Cómo gestionamos sus errores potenciales? A lo largo de este texto presentaremos diferentes modelos de programación que pueden ser empleado para dar respuesta a estas y otras preguntas en el marco de la programación asíncrona.
Formación de Solr Avanzado, incluye muchos aspectos sobre Solr desde la arquitectura, la clusterización o el sharding, hasta las políticas de indexación y búsqueda distribuida, así como los componentes y handlers para la búsqueda avanzada (Faceting, Grouping, Sorting, Highlighting, Spellchecking, More like this, etc...)
Mulesoft Meetup Sevilla 29/11/2022.
Primer Mulesoft Meetup, hablamos sobre :
1.- las bases de la integración
2.- Protocolo SOAP
3.- Ejemplos de Consumir SOAP
4.- Crear un servicio SOAP con Mule
5.- Desplegar Mule App en CloudHub 1.0, CloudHub 2.0, y Runtime Fabric
Introducción al servidor Tomcat.Resumen de conceptos básicos, instalación y configuración. Se repasan conceptos sobre JSPs, JavaBeans, Servicios web sobre Axis2, JNLP, etc.
Web framework ligeros y micros en java barcamp 2014Carlos Camacho
Presentación enfocada a mostrar las funcionalidades más importante de los micro framework Spark y Ratpack. Dando una inducción a los conceptos básicos en su utilización del protocolo HTTP y los servicios REST.
Impartida en la segunda edición en el Barcamp 2014, Pontificia Universidad Católica Madre y Maestra (PUCMM), Santiago de los Caballeros, República Dominicana.
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...espinozaernesto427
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta intensidad son un tipo de lámpara eléctrica de descarga de gas que produce luz por medio de un arco eléctrico entre electrodos de tungsteno alojados dentro de un tubo de alúmina o cuarzo moldeado translúcido o transparente.
lámparas más eficientes del mercado, debido a su menor consumo y por la cantidad de luz que emiten. Adquieren una vida útil de hasta 50.000 horas y no generan calor alguna. Si quieres cambiar la iluminación de tu hogar para hacerla mucho más eficiente, ¡esta es tu mejor opción!
Las nuevas lámparas de descarga de alta intensidad producen más luz visible por unidad de energía eléctrica consumida que las lámparas fluorescentes e incandescentes, ya que una mayor proporción de su radiación es luz visible, en contraste con la infrarroja. Sin embargo, la salida de lúmenes de la iluminación HID puede deteriorarse hasta en un 70% durante 10,000 horas de funcionamiento.
Muchos vehículos modernos usan bombillas HID para los principales sistemas de iluminación, aunque algunas aplicaciones ahora están pasando de bombillas HID a tecnología LED y láser.1 Modelos de lámparas van desde las típicas lámparas de 35 a 100 W de los autos, a las de más de 15 kW que se utilizan en los proyectores de cines IMAX.
Esta tecnología HID no es nueva y fue demostrada por primera vez por Francis Hauksbee en 1705. Lámpara de Nernst.
Lámpara incandescente.
Lámpara de descarga. Lámpara fluorescente. Lámpara fluorescente compacta. Lámpara de haluro metálico. Lámpara de vapor de sodio. Lámpara de vapor de mercurio. Lámpara de neón. Lámpara de deuterio. Lámpara xenón.
Lámpara LED.
Lámpara de plasma.
Flash (fotografía) Las lámparas de descarga de alta intensidad (HID) son un tipo de lámparas de descarga de gas muy utilizadas en la industria de la iluminación. Estas lámparas producen luz creando un arco eléctrico entre dos electrodos a través de un gas ionizado. Las lámparas HID son conocidas por su gran eficacia a la hora de convertir la electricidad en luz y por su larga vida útil.
A diferencia de las luces fluorescentes, que necesitan un recubrimiento de fósforo para emitir luz visible, las lámparas HID no necesitan ningún recubrimiento en el interior de sus tubos. El propio arco eléctrico emite luz visible. Sin embargo, algunas lámparas de halogenuros metálicos y muchas lámparas de vapor de mercurio tienen un recubrimiento de fósforo en el interior de la bombilla para mejorar el espectro luminoso y reproducción cromática. Las lámparas HID están disponibles en varias potencias, que van desde los 25 vatios de las lámparas de halogenuros metálicos autobalastradas y los 35 vatios de las lámparas de vapor de sodio de alta intensidad hasta los 1.000 vatios de las lámparas de vapor de mercurio y vapor de sodio de alta intensidad, e incluso hasta los 1.500 vatios de las lámparas de halogenuros metálicos.
Las lámparas HID requieren un equipo de control especial llamado balasto para funcionar
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Telefónica
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0xWord escrito por Ibón Reinoso ( https://mypublicinbox.com/IBhone ) con Prólogo de Chema Alonso ( https://mypublicinbox.com/ChemaAlonso ). Puedes comprarlo aquí: https://0xword.com/es/libros/233-big-data-tecnologias-para-arquitecturas-data-centric.html
En este documento analizamos ciertos conceptos relacionados con la ficha 1 y 2. Y concluimos, dando el porque es importante desarrollar nuestras habilidades de pensamiento.
Sara Sofia Bedoya Montezuma.
9-1.
2. .
• Índice
− Introducción
− Estructura de mensaje SOAP
− Terminología SOAP
− Intercambio de mensajes SOAP
− Modelo de procesamiento SOAP
− Visión inicial de la API Java para SOAP.
3. SOAP: Introducción
¿Qué es SOAP? Definición de la W3C
− SOAP es un protocolo ligero diseñado para intercambiar
información estructurada en un entorno descentralizado y
distribuido.
− SOAP usa tecnología XML para definir un framework de
mensajería extensible proporcionando una estructura de
mensaje que puede ser intercambiado sobre una variedad de
protocolos subyacentes
− El framework ha sio diseñado para ser independiente de
cualquier modelo particular de programación y de
implementaciones de semánticas específicas.
4. SOAP:Introducción
• ¿Qué es SOAP?
− Simple Object Access Protocol (Protocolo simple de acceso a
objetos)
− Procotolo similar a
• IIOP para CORBA
• JRMP para RMI
− Se usa XML para codificar datos
• Protocolos basados en "texto" versus protocolos basados en datos
"binarios"
− Soporta RPC sobre XML (Remote Procedure Call)
5. SOAP:Introducción
• ¿Qué es SOAP
− Sin estado
− Paradigma de intercambio de mensajes en un sólo sentido
− Las aplicaciones pueden crear patrones de interacción más
complejos (solicitud/respuesta,solicitud/múltiples_respuestas,
etc) combinando los intercambios de un sólo sentido con
características proporcionadas po protocolos subyacentes y/o
información específica de la aplicación.
− Se enfoca en el transporte, no en la semántica de los datos
transportados.
6. SOAP:Introducción
• ¿Qué no es SOAP?
− No es un modelo de componentes
• Por ello, no reemplaza ni a objetos ni a componentes (PEj. EJB,
JavaBeans, etc)
− No es un lenguaje de programación
• Por ello, no reemplazará a Java
− No es una solución para todo
• Por ello, no reemplazará a otras tecnologías de computación distribuida
como RMI
7. SOAP:Introducción
• Objetivos de diseño de SOAP
− Simplicidad
− Extensibilidad
• Los nuevos estándares, definen nuevas semánticas
− Características no soportadas (por definición)
• Recolección de basura distribuida
• Objetos por referencia
• Activación
• Procesamiento en lote de mensajes
10. Estructura de mensaje
• Sobre de mensaje SOAP (SOAP Message Envelope)
− Información incluída
• Namespaces
• Información de codificado (Encoding)
− Cabecera (HEADER)
• Opcional
• Puede ser manipulada por intermediarios
− Cuerpo (body)
• Obligatoria
• Manipulado sólo por el receptor final.
11. Estructura de mensaje
• SOAP Header (<env:Header>)
− Usado como mecanismo de extensión
• Context (contexto)
• Authentication (autenticación)
• Transaction (transacción)
• Management (gestión)
• Muchas otras de alto nivel.
− Hecho de Bloques de cabecera Header blocks (Header
entities o entidades de cabecera)
− La mayoría de las actividades estándar de los web services
son básicamente definir entradas de cabecera estándar para
un dominio particular
12. Estructura de mensaje
• Bloques (entradas) de cabecera SOAP
− Elementos hijos de una cabecera SOAP
− Diseñados PARA SOAP como anticipación a usos futuros
POR intermediarios SOAP.
• Pueden ser dirigidos individualmente a nodos SOAP
• Permiten a los intermediarios SOAP proporcionar servicios de valor
añadido.
− Pueden ser inspeccionados, insertados, borrados o
reenviados por nodos SOAP encontrados en el camino de un
mensaje SOAP
13. Estructura de mensaje
• Cuerpo SOAP/SOAP Body(<env:Body>)
− Hechos por bloques de cuerpo o body blocks (body
entries)
− Consumidos por receptores SOAP finales
− Transportan la información extremo a extremo, que
puede ser:
• Datos de aplicación (documento XML)
• Métodos RPC y parámetros
• Errores SOAP (SOAP Fault)
14. Estructura de mensaje FAULT
• Fallo SOAP o SOAP Fault (<env:Fault>)
− Usado para transportar información de error o
estado
− Tiene los siguientes subelementos:
• faultcode
• faultstring
• faultactor
• detail
15. Estructura de mensaje FAULT
• Códigos de fallo de SOAP predefinidos
− VersionMismatch
• Namespace inválido en el sobre SOAP
− MustUnderstand
• El receptor no puede tratar el bloque de cabecera SOAP
mustUnderstand SOAP.
− Client
• Indica error en el lado del cliente
− Server
• Indica error en el lado servidor
16. Estructura de mensaje FAULT
• Ejemplo de fallo SOAP : mustUnderstand no puede tratarse
<env:Envelope xmlns:env='http://www.w3.org/2001/06/soap-envelope'>
<env:Header>
<abc:Extension1 xmlns:abc='http://example.org/2001/06/ext‘ env:mustUnderstand='1' />
<def:Extension2 xmlns:def='http://example.com/stuff‘ env:mustUnderstand='1' />
</env:Header>
<env:Body>
...
</env:Body>
</env:Envelope>
17. Estructura de mensaje FAULT
• Ejemplo de fallo SOAP: respuesta al fallo
mustUnderstand
<env:Envelope xmlns:env='http://www.w3.org/2001/06/soap-envelope'
xmlns:f='http://www.w3.org/2001/06/soap-faults' >
<env:Header>
<f:Misunderstood qname='abc:Extension1‘ xmlns:abc='http://example.org/2001/06/ext'/>
<f:Misunderstood qname='def:Extension2‘ xmlns:def='http://example.com/stuff'/>
</env:Header>
<env:Body>
<env:Fault>
<faultcode>MustUnderstand</faultcode>
<faultstring> One or more mandatory headers not understood</faultstring>
</env:Fault>
</env:Body>
</env:Envelope>
18. Estructura de mensaje
• ¿Dónde poner los datos, en el bloque Header o en el
bloque body?
− Decisión a tomar durante el desarrollo de la aplicación
− Los bloques Header pueden ser dirigidos a varios nodos que
podrían encontrarse en el camino desde el remitente hacia el
destinatario final.
− Los nodos SOAP intermedios pueden proporcionar servicios
de valor añadido basados en los datos de las cabeceras.
19. Ejemplos
• Ejemplo de mensaje de solicitud (request) de un web
service simple con un método decirHola que responde
un “hola”
• SOAP Request
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:ns1="http://hola/">
<soapenv:Body>
<ns1:decirHola>
<arg0>le envío hola</arg0>
</ns1:decirHola>
</soapenv:Body>
</soapenv:Envelope> .
20. Ejemplos
• Ejemplo de mensaje de solicitud (request) de un web
service simple con un método decirHola que responde
un “hola”
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:ns1="http://hola/">
<soapenv:Body>
<ns1:decirHolaResponse>
<return>Hola hola hola holaaaaaaa hola!</return>
</ns1:decirHolaResponse>
</soapenv:Body>
</soapenv:Envelope>
21. Ejemplos
• Código fuente del Web Service
@WebService()
public class HolaWS {
@WebMethod
public String decirHola(String s) throws java.rmi.RemoteException {
return "Hola hola hola holaaaaaaa " + s + "!";
}
}
23. Namespaces
• Namespaces XML
− Se usan para evitar la colisión de nombres
− Facilitan el agrupado de elementos.
• Por ejemplo: las aplicaciones SOAP saben qué elementos pertenecen
a un determinado namespace
− Pueden usarse como esquema de control de versiones
− Sintaxis
• Declaración de Namespace
• Elementos y atributos.
24. Namespaces
• Declaración de namespaces XML
− Un prefijo se asocia con una URI
− La asociación se defina como un atributo dentro de un
elemento:
xmlns:prefix
− xmlns es la palabra reservada de Namespaces; el prefijo lo
define el usuario.
<classes xmlns:XMLclass=“ http://www.brandeis.edu/rseg-0151-g”>
<XMLclass:syllabus>
...
</XMLclass:syllabus>
</ classes>
25. Namespaces
• Ejemplo de Namespaces SOAP
<env:Envelope xmlns:env="http://www.w3.org/2001/06/soap-envelope" >
<env:Body>
<m:GetLastTradePrice env:encodingStyle="http://www.w3.org/2001/06/soap-encoding"
xmlns:m="http://example.org/2001/06/quotes">
<symbol>DIS</symbol>
</m:GetLastTradePrice>
</env:Body>
</env:Envelope>
• El namespace env (envelope) está definido en SOAP
• El namespace m es un namespace creado por
nosotros.
28. Terminología
• Conceptos del protocolo
− Nodo SOAP
− Rol (role) SOAP
− Enlazado (binding) SOAP
− Característica (feature) SOAP
• Es una extensión del framework de mensajería SOAP:
− Confiabilidad
− Seguridad
− Correlación
− Módulo SOAP
• Realización de las características (features) SOAP
− Patrón de intercambio de mensajes SOAP
− Aplicación SOAP
29. Terminología
• Nodo SOAP: Es el elemento que procesa la lógica necesaria para transmitir, recibir, procesar y/o
reenviar un mensaje SOAP, cumpliendo el conjunto de convenciones definidas por la
recomendación SOAP
• Rol SOAP: Es la función esperada por un receptor SOAP en un mensaje SOAP.
• Binding SOAP: El conjunto formal de reglas para transportar un mensaje SOAP dentro o encima
de otro protocolo. Ejemplo de binding SOAP puede incluir transportar un mensaje SOAP dentro de
HTTP.
• Característica SOAP (SOAP feature): Es una extensión del framework de mensajería SOAP.
Ejemplos de features pueden ser: "reliability" (confiabilidad), "security" (seguridad), "correlation"
(correlación), "routing" (enrutado), y "Message Exchange Patterns" -patrones de intercambio de
mensajes- (MEPs).
• Módulo SOAP: Un módulo SOAP es una especificación que contiene la sintaxis y semántica
combinada de los bloques de cabecera SOAP especificadas cumpliendo las reglas SOAP Module
3.3
• Patrón de intercambio de mensajes SOAP (MEP): Una plantilla para el intercambio de mensajes
entre nodos SOAP habilitados mediante uno o más SOAP bindings.
• Aplicación SOAP: Una entidad software que produce, consume o actúa de cualquier modo sobre
mensajes SOAP conforme al modelo de proceso SOAP.
30. Terminología
• Conceptos de encapsulación de datos
− Mensaje SOAP (SOAP message)
− Sobre SOAP (SOAP Envelope)
− Cabecera SOAP (SOAP Header)
− Bloque de cabecera SOAP (SOAP Header block)
− Cuerpo SOAP (SOAP Body)
− Fallo SOAP (SOAP Fault)
31. Terminología
• Mensaje SOAP: Es la unidad básica de comunicación entre nodos SOAP
• Sobre SOAP: Es elemento de información más alto de un mensaje SOAP.
• Cabecera SOAP: Un conjunto de cero o más bloques de cabecera SOAP,
cada uno de los cuales puede ser dirigido a cualquier destinatario SOAP
dentro del camino SOAP.
• Bloque de cabecera SOAP: Un elemento de información que se usa para
delimitar datos que constituyen una única unidad computacional lógica dentro
de la cabecera SOAP.
− El tipo de bloque de cabecera SOAP se identifica por el nombre XML expandido del
elemento de información de bloque de cabecera.
• Cuerpo SOAP: Un conjunto de cero o más elementos de información dirigidos
a un destinatario SOAP final en el camino del mensaje SOAP
• Fallo SOAP (SOAP Fault): Un elemento de información SOAP que contiene
información de fallo generado por un nodo SOAP
33. Terminología
• SOAP sender: Un nodo SOAP que transmite un mensaje SOAP
• SOAP receiver: uno nodo SOAP que acepta un mensaje
• SOAP message path: un conjunto de nodos SOAP a través de los cuales pasa
un mensaje SOAP. Incluye el initial SOAP sender, cero o más intermediarios
SOAP y el ultimate SOAP receiver.
• Initial SOAP sender: el remitente SOAP que origina el mensaje SOAP en el
punto inicial de un SOAP message path.
• SOAP intermediary: Funciona tanto como remitente SOAP y como destinatario
SOAP. Procesa los bloques de cabecera SOAP que van dirigidos a él y los
reenvía en la dirección del destinatario SOAP final.
• Ultimate SOAP receiver: El SOAP receiver que es el destino final del mensaje
SOAP. Es responsable de procesar los contenidos del cuerpo SOAP y
cualesquiera de los bloques de cabecera SOAP que ha recibido dirigidos a él.
34. Práctica
• Ejercicio:
− Crear un web service llamado HolaWS, con un método
“decirHola” que devuelva “Hola desde el curso SOA”.
− Hacer un test web service para comprobar el intercambio de
mensajes SOAP entre el proveedor del servicio y el
consumidor.
35. Anexo
• Axis incluye un monitor SOAP:
− Para ejecutarlo, basta hacer lo siguiente
• Setenv
• java org.apache.axis.utils.tcpmon 9090 localhost 8080
• Esto arrancará una aplicación Java que permanecerás escuchando en
el puerto 9090, y que reenviará todas las peticiones al puerto 8080
• Para probar esta aplicación, es necesario que las aplicaciones que
sean clientes de nuestros web services, a la hora de ser depuradas u
observadas con esta herramienta, deben atacar al servidor al puerto
9090.