miércoles, 23 de diciembre de 2009

Introducción a SOA y Servicios Web

SOA Servicios Web Info Mgmt WebSphere



¿Qué puedo hacer con los servicios Web?
¿Cuáles son las tecnologías de componentes de servicios Web?
¿Cuál es la relación entre los servicios Web y otras tecnologías?
¿Cómo puedo usar servicios Web en una aplicación?
¿Cómo puedo mejorar mis habilidades en servicios Web?



El área de contenido de servicios Web en developerWorks contiene literalmente centenares de artículos, tutoriales y recomendaciones para ayudar al desarrollador a aprovechar al máximo las aplicaciones relacionadas con servicios Web; sin embargo, para los usuarios que están intentando estudiar un nuevo tema, esa gran cantidad de informaciones puede ser abrumadora. Esa página proporciona una visión general para los lectores que desean aprender acerca de los servicios Web pero no saben dónde comenzar. La página coloca todos los fundamentos de la tecnología de servicios Web en el contexto adecuado y reúne artículos, tutoriales y recomendaciones de developerWorks, formación de los servicios de aprendizaje de IBM, Webcasts, talleres y productos IBM para más investigaciones.
El término "servicios Web" designa una tecnología que permite que las aplicaciones se comuniquen en una forma que no depende de la plataforma ni del lenguaje de programación. Un servicio Web es una interfaz de software que describe un conjunto de operaciones a las cuales se puede acceder por la red a través de mensajería XML estandarizada. Usa protocolos basados en el lenguaje XML con el objetivo de describir una operación para ejecutar o datos para intercambiar con otro servicio Web. Un grupo de servicios Web que interactúa de esa forma define la aplicación de un servicio Web específico en una arquitectura orientada a servicios (SOA).
La industria de software finalmente se está dando cuenta de que integrar aplicaciones de software en varios sistemas operativos, lenguajes de programación y plataformas de hardware no es algo que puede ser resuelto por un entorno patentado específico. Tradicionalmente, el problema viene siendo el acoplamiento fuerte, en el cual una aplicación que llama una red remota está fuertemente vinculada a ella por la llamada de función que hace y por los parámetros que solicita. En la mayoría de los sistemas antes de los servicios Web, se trata de una interfaz fija con poca flexibilidad y adaptabilidad a entornos o necesidades cambiantes.
Los servicios Web usan XML, que puede describir cualquier tipo de datos en una forma realmente independiente de plataforma para el intercambio entre sistemas, lo que permite el movimiento hacia aplicaciones flojamente acopladas. Además, los servicios Web pueden funcionar a un nivel más abstracto que puede reevaluar, modificar o manejar tipos de datos dinámicamente on demand (mediante solicitud). Por tanto, en términos técnicos, los servicios Web pueden manejar datos con mucho más facilidad y permiten una comunicación más libre entre los softwares.
En términos conceptuales más elevados, es posible ver los servicios Web como unidades de trabajo, donde cada una maneja una tarea funcional específica. Un paso arriba de eso, las tareas se pueden combinar en tareas orientadas a negocios para manejar tareas operacionales empresariales específicas y eso, por su turno, permite que el personal que no es técnico piense en aplicaciones que pueden manejar temas empresariales en conjunto en un flujo de trabajo de aplicaciones de servicios Web. Así, una vez que el personal técnico haya diseñado y construido los servicios Web, los arquitectos de procesos empresariales pueden agregarlos para resolver problemas en el ámbito empresarial. En una analogía con el motor de un auto, un arquitecto de procesos empresariales puede pensar en montar un motor de auto completo, con el chasis, la carrocería, la transmisión y otros sistemas, en lugar de analizar las diferentes partes dentro de cada motor. Además, la plataforma dinámica significa que el motor puede funcionar en conjunto con la transmisión o con componentes de otros fabricantes.
Lo que se concluye con ese último aspecto es que los servicios Web ayudan a conectar el personal de negocios al personal tecnológico de una organización. Los servicios Web facilitan la comprensión de las operaciones técnicas por parte del personal de negocios. El personal de negocios puede describir eventos y actividades y el personal tecnológico puede asociarlos a los servicios adecuados.
Con interfaces definidas universalmente y tareas bien diseñadas, también resulta más fácil reutilizar esas tareas y, consecuentemente, las aplicaciones que representan. La reusabilidad de softwares de aplicación implica un mejor retorno de la inversión en software, pues puede producir más con los mismos recursos. También permite que el personal de negocios considere la posibilidad de usar una aplicación ya existente en una forma nueva u ofrecerla a un socio en una forma nueva, aumentando así las transacciones empresariales entre socios.
Por tanto, los principales problemas que los servicios Web tratan de resolver son los temas de integración de datos y aplicaciones y de la transformación de funciones técnicas en tareas informáticas orientadas a negocios. Esos dos aspectos permiten que las empresas se comuniquen con sus socios en el ámbito de los procesos o aplicaciones y que, al mismo tiempo, dejen un espacio dinámico para adaptarse a nuevas situaciones o trabajar con otros socios mediante solicitud.
Aprenda más sobre eso:
Para aprender más acerca de los servicios Web, primeramente debe saber como el lenguaje XML funciona.XML and how it will change the WebeIntroducción a XMLson dos artículos buenos para empezar. Aunque la tecnología de los servicios Web propiamente dicha sea independiente del lenguaje, hay varias otras herramientas e implementaciones de software disponibles en latecnología Java.
Si es un arquitecto de software o un profesional de negocios que desea entender los servicios Web,An Executive's Guide to Web servicestiene varias ideas útiles sobre el valor empresarial de los servicios Web.

Volver arriba



¿Qué puedo hacer con los servicios Web?
Aunque los servicios Web permitan que todos esos dispositivos dinámicos combinen varios servicios en aplicaciones, aun así es necesario construir los servicios primero. Los lenguajes de programación en la Ciencia de la Computación están en continua evolución. Se comenzó hace décadas con la idea de una función en la cual uno la proporciona algunos parámetros, la función ejecuta alguna operación con los parámetros y retorna un valor basado en los cálculos. Con el tiempo, ese primer concepto evolucionó al objeto en el cual cada objeto no sólo tenía varias funciones que podía realizar, sino también sus propias variables de datos privados, en lugar de basarse en variables externas de todo el sistema, que anteriormente hacían más complejo el desarrollo de aplicaciones. A medida que las aplicaciones comenzaron a comunicarse, el concepto de interfaces universales definidas para objetos se hizo importante, para permitir que objetos de otras plataformas se comuniquen aunque hayan sido escritos en lenguajes de programación distintos y operen en otros sistemas operativos.
En el paso más reciente, los servicios Web se acercaron al concepto de interfaces y comunicaciones definidas en XML, para finalmente unir aplicaciones de cualquier tipo, además de proporcionar la libertar de cambiar y evolucionar a lo largo del tiempo, a condición de que estén diseñadas para la interfaz adecuada. Lo que distingue los servicios Web de las tecnologías que componen la generación anterior es la versatilidad de XML. Permite separar la estructura gramatical (sintaxis) del significado gramatical (semántica) y posibilita la separación de la forma que cada servicio del entorno procesa y entiende eso. Por tanto, ahora, los objetos pueden ser definidos como servicios que se comunican con otros servicios en la gramática definida por XML, donde cada servicio traduce y analiza el mensaje de acuerdo con la implementación local y el entorno. Por tanto, una aplicación conectada en red puede efectivamente estar compuesta por varias entidades con varias construcciones y diseños diferentes, a condición de que cumplan con las reglas definidas por su arquitectura orientada a servicios.
Así, teniendo eso en mente, los servicios Web permiten:
Interacción entre servicios en cualquier plataforma, escritos en cualquier lenguaje.
Conceptualizar funciones de aplicaciones en tareas, lo que lleva al desarrollo y a flujos de trabajo orientados a tareas. Eso posibilita más abstracción del software que puede ser empleado por usuarios menos técnicos que trabajan con análisis en el ámbito de negocios.
Permite el acoplamiento flojo, lo que significa que las interacciones entre aplicaciones de servicio no se rompen siempre que haya un cambio en la forma de diseño o implementación de un servicio o más.
Adaptar las aplicaciones ya existentes a las cambiantes condiciones empresariales y necesidades de clientes.
Proporcionar aplicaciones de software ya existentes o legadas con interfaces de servicio sin cambiar las aplicaciones originales, lo que permite operar totalmente en el entorno de servicios.
Introducir otras funciones administrativas o de gestión de operaciones como confiabilidad, rendición de cuentas, seguridad, etc., independientemente de la función original, lo que aumenta su versatilidad y utilidad en el entorno de computación empresarial.
Aprenda más sobre eso:
Business Processes in a Web services Worldexplica cómo se pueden representar el flujo de trabajo y los procesos empresariales con servicios Web.
Security in a Web services worldexplora cómo el modelo de seguridad en los servicios Web está evolucionando.
Merging grids and Web servicestrata de cómo la computación grid puede usar los servicios Web en una arquitectura orientada a servicios, consistente y distribuida.
An e-mail user interface to Web servicesdescribe cómo los dispositivos móviles pueden interactuar con servicios Web empresariales al usar protocolos simples de comunicación como el e-mail.
Aprenda cómo los servicios Web funcionan en el modelo J2EE enIntegrate enterprise applications with Web services and J2EEy lea sobre los diferentes mecanismos de comunicación enChoosing among JCA, JMS, and Web services for EAI.

Volver arriba



¿Cuáles son las tecnologías de componentes de servicios Web?
Los servicios Web involucran una familia de protocolos relacionados para describir y suministrar Servicios Web e interactuar con ellos. Se puede subdividir esa familia en grupos basados en funciones y usos comunes. El primer grupo maneja los temas de mensajería y dirección, suministro y descripción de interfaces. El protocolo más conocido es el protocolo de mensajería conocido como protocolo simple de acceso a objetos (SOAP). Ese protocolo codifica mensajes para que puedan ser entregados en la red a través de un protocolo de transporte como HTTP, IIOP, SMTP u otros.
El lenguaje de descripción de servicios Web (WSDL) es representado como una serie de sentencias XML que constituyen la definición de las interfaces de cada servicio. Otra especificación que está en progreso actualmente es WS-Addressing, que define cómo dar direcciones exclusivas e identificar en forma exclusiva los servicios Web en una arquitectura distribuida. Otra especificación popular es Web Services Invocation Framework, en la cual se pueden definir interfaces WSDL para todos los tipos de componentes, incluso los que no usan los mismos protocolos de mensajería.
El siguiente grupo de protocolos y especificaciones define cómo los servicios se anuncian y encuentran otros servicios en la red. Para que un servicio encuentre otro, el protocolo de descripción, descubierta e integración universal (UDDI) define un registro y protocolos asociados para ubicar servicios y acceder a ellos. El lenguaje Web Services Inspection Language es un mecanismo alternativo al UDDI que funciona sin el uso de un registro.
Los protocolos de seguridad para servicios Web comienzan por la especificación WS-Security que define una arquitectura basada en señales para comunicaciones seguras. Existen seis principales especificaciones de componentes construidas sobre esa base:
WS-Policy y sus especificaciones relacionadas, que definen las reglas de políticas sobre la interacción de servicios.
WS-Trust, que define el modelo confiable para el intercambio seguro.
WS-Privacy, que define cómo se mantiene la privacidad de las informaciones.
WS-Secure Conversation, que define cómo establecer una sesión protegida entre servicios para intercambiar datos usando las reglas definidas en WS-Policy, WS-Trust, y WS-Privacy.
WS-Federation, que define las reglas de identidad distribuida y de la gestión de esa identidad.
WS-Authorization, que maneja el procesamiento de autorización para acceder a los datos e intercambiarlos.
Además del modelo de seguridad, existen las especificaciones específicas de las aplicaciones, incluyendo el lenguaje de ejecución de procesos empresariales para servicios Web (BPEL4WS), que define las operaciones de flujos de trabajo, y WS-Transaction y WS-Coordination, que funcionan en conjunto para manejar el procesamiento distribuido de transacciones.
Actualmente está en desarrollo una especificación para la gestión distribuida de servicios Web que trata de la gestión administrativa de software de todos los servicios y de la arquitectura orientada a servicios. Por fin, existen especificaciones para interfaces de usuario (WS-InteractiveApplications) y acceso remoto a servicios Web (WS-RemotePortals).
Las especificaciones y protocolos para servicios Web aún están siendo definidas y sólo están comenzando a explicar cómo los servicios deben interactuar. Sin embargo, no pueden abarcar todas las situaciones y combinaciones posibles. Así, el Web Services Interoperability Group (WS-I), constituido por prácticamente todos los grandes y pequeños proveedores involucrados en el desarrollo de los servicios Web, se encargó de la tarea de desarrollar estudios de caso, ejemplos de aplicaciones, casos de ejemplo de implementación y herramientas de prueba para asegurar que esos estándares y especificaciones realmente funcionarán los unos con los otros, independientemente de las implementaciones de productos de los proveedores.
WS-I ha definido su primer Basic Profile 1.0 para servicios Web y también ha lanzado sus casos de ejemplo, ejemplos de aplicaciones y herramientas de prueba para evaluar y comparar resultados de varias implementaciones de acuerdo con los casos de ejemplo.
Además de WS-I, una buena parte del trabajo de los estándares está siendo realizado por la Organización para el Avance de Estándares de Informaciones Estructuradas (OASIS), el World Wide Web Consortium (W3C) y el Grupo de Trabajo de Ingeniería de Internet (IETF).
Aprenda más sobre eso:
The Web Services Conceptual Architectureexplica las ideas técnicas relacionadas a los servicios Web y cómo funcionan.
Los estándares de protocolo y especificaciones importantes para los servicios Web están disponibles en la página de developerWorksStandards and Web services.
Están disponibles más informaciones sobre especificaciones y estándares en elsitio de W3Cy en elsitio de OASIS.
Puede leer más acerca del trabajo deWS-IenFirst look at the WS-I Basic Profile 1.0,First look at the WS-I Usage ScenariosyUnderstanding the WS-I Test Tools.

Volver arriba



¿Cuál es la relación entre los servicios Web y otras tecnologías?
Los servicios Web son, principalmente, una tecnología de integración. Sin embargo, son independientes de la forma propiamente dicha. Las tecnologías de componentes para servicios Web son definidas en forma común e interactúan en XML, según se mencionó anteriormente. Sin embargo, ya que el propio XML es independiente de lenguaje, los servicios Web también lo son. Por tanto, los servicios Web se pueden desarrollar en varios lenguajes de programación, como Java, Python, Perl, C#, Basic y otros.
Los orígenes de los servicios Web están en la tentativa de encontrar una forma mejor para que la arquitectura de Internet y la arquitectura de las aplicaciones Web se comuniquen mejor e interactúen. Así, actualmente la mayoría de los servicios Web se basan en programas que operan en entornos de servidores de aplicaciones como WebSphere, Apache y otros. No son obligatorios, mas algunas de las mejores herramientas para servicios Web están diseñadas para esos entornos.
Al proporcionar interfaces universales y más simples, los servicios Web también están ayudando a mejorar el funcionamiento del modelo de informática ubicua para entornos móviles y portables. Los softwares para informática móvil están adoptando rápidamente el modelo de comunicación de los servicios Web y, al mismo tiempo, ayudando a mejorar la cuestión de las interfaces de los servicios Web.
La computación grid ha adoptado los servicios Web como parte de la arquitectura abierta de servicios de grid, un nuevo modelo para ese tipo de informática distribuida que usa los servicios Web para comunicar cómo la grid opera.
Incluso la informática autonómica, que es una nueva forma de mantener y administrar computadores, tiene algunas aplicaciones para servicios Web.
Aprenda más sobre eso:
Java es esencial para los servicios Web y, de hecho, la mayoría del contenido sobre Servicios Web en developerWorks enfoca el desarrollo basado en Java. Por ejemplo:Developer's introduction to JAX-RPC, Part 1yDeveloper's introduction to JAX-RPC, Part 2tratan específicamente de las APIs J2EE involucradas en el desarrollo de los servicios Web.
Developing a .Net client to interact with a WebSphere Web serviceyA Demonstration of Web Services Interoperability Between the WebSphere and .Netdan un ejemplo de cómo los servicios Web pueden funcionar en plataformas distintas con arquitecturas Web diferentes.
A visual tour of OGSAexplica cómo la computación grid está siendo diseñada ahora sobre la base de los servicios Web.
Cross-platform programming with the WSTK for Mobile Devicesanaliza las herramientas para programar servicios Web para la informática móvil.
El textoETTK self-healing and optimizing demomuestra la informática autonómica y los servicios Web funcionando en conjunto.

Volver arriba



¿Cómo puedo usar servicios Web en una aplicación?
Existen varias formas de pensar acerca de los servicios Web al crear aplicaciones. En el nivel más básico, es una familia de protocolos avanzados de comunicaciones que permite que las aplicaciones se comuniquen. Ese nivel ha progresado mucho en los años recientes con muchas herramientas que permiten que los desarrolladores de software escriban servicios Web que interactúan y creen aplicaciones complejas. Ese nivel frecuentemente se caracteriza por interacciones directas uno a uno entre los servicios o por relativamente pocos servicios que interactúan los unos con los otros.
Sin embargo, el uso de los servicios Web sólo como un protocolo de comunicaciones no representa su verdadera capacidad: la capacidad de la arquitectura orientada a servicios (SOA). La SOA describe un sistema entero de servicios que buscan dinámicamente los unos a los otros, se unen para realizar alguna aplicación y se recombinan de varias formas. Ese modelo fomenta la reutilización de la tecnología y de softwares, lo que produce una evolución en la forma de diseñar, desarrollar y poner en uso las aplicaciones. Acerca a la realidad el mundo de la informática distribuida. En ese nivel, los desarrolladores de software necesitan pensar en el modelo SOA y diseñar su aplicación distribuida con ese modelo. Ese nivel se caracteriza por el uso de tecnologías para permitir las comunicaciones distribuidas de los servicios, como el uso del bus de servicios empresariales (ESB), que es una red de distribución común para el trabajo con los servicios.
Por fin, el nivel más alto es considerar ese modelo SOA y los varios servicios que lo componen como elementos constructivos, que pueden ser montados en secciones enteras dentro de aplicaciones completas, en lugar del método convencional de escribir el código línea por línea. Al examinar las interfaces que se conectan, es posible construir aplicaciones enteras sin escribir código. En realidad, el código directo puede aun perjudicar, ya que los servicios se pueden escribir en varias plataformas y lenguajes diferentes. Es posible unir los bloques en un flujo de trabajo de operaciones que define el rendimiento de la aplicación, y se pueden usar otras herramientas para supervisar la eficiencia del flujo de trabajo de cada servicio o grupo de servicios. En ese nivel, los desarrolladores pueden abandonar los lenguajes de programación regulares y trabajar en una arquitectura basada en modelos que les ayuda a crear aplicaciones con más exactitud respecto al diseño. Luego, se ejecuta ese diseño sobre la base de un sistema distribuido como un ESB.
Aprenda más sobre eso:
El Java 2 Enterprise Edition (J2EE) es uno de los principales modelos para desarrollar servicios Web en lenguaje de programación Java. Debeleer acerca de J2EEy aprender cómo funciona para entender el primer nivel de desarrollo para servicios Web.
Building a Web service from SOAP to nutsyCreate, deploy, publish, and consume a simple Web serviceson dos artículos introductorios sobre la creación de servicios Web interactuantes.
Access DB2 with Web serviceseInvoking Web services from SQLtratan de la creación de servicios Web de bases de datos.
Business processes and workflow in the Web services worlddescribe cómo los procesos empresariales funcionan en una arquitectura orientada a servicios.
Para aprender más acerca de flujos de trabajo y procesos empresariales con servicios Web, debe leer acerca de la especificación BPEL4WS en lacolumna BPEL4WSescrita por algunos de los autores de la especificación.
From UML to BPEL: Model Driven Architecture in a Web services worldexplica cómo los servicios Web se encuadran en el contexto de las arquitecturas basadas en modelos.

Volver arriba



¿Cómo puedo mejorar mis habilidades en servicios Web?
La mejor forma de mantenerse actualizado respecto a los servicios Web es leer los artículos técnicos más recientes y trabajar con las varias herramientas disponibles. Ya que la propia tecnología está en evolución, esas informaciones y herramientas proporcionan las interpretaciones más recientes de las mejores formas de trabajar con servicios Web. Además, kits de herramientas como el Emerging Technology Toolkit le dan una ventaja respecto a la innovación de esas tecnologías para que pruebe las mismas tecnologías en las cuales los expertos están trabajando. La siguiente sección presenta descripciones de esas herramientas.
Actualmente, los servicios Web vienen progresando significativamente y la diversidad de informaciones sobre ese tema está aumentando muchísimo. Hay una cantidad significativa de contenido técnico acerca del primer nivel del desarrollo de servicios Web para interacción directa que puede ser encontrada en el sitio de servicios Web. Incluso los protocolos como SOAP, que existe hace más de tres años, aún están siendo mejorados. Ya que ese tema es un blanco en movimiento, es conveniente consultar regularmente el área de contenido sobre servicios Web.
Otra buena forma de mejorar sus habilidades es participar en los foros de discusión listados directamente en la zona. Aquí puede encontrar los profesionales que trabajan activamente en esa área e incluso buscar ayuda directamente del personal de investigación y desarrollo que está diseñando las tecnologías y construyendo los productos.
Los desarrolladores avanzados pueden participar en el desarrollo y la evolución de las especificaciones de servicios Web al participar en los varios talleres que ocurren mensualmente.
Aprenda más sobre eso:
El área sobre servicios Web agrega regularmentenuevos tutorialesque explican detalladamente cómo realizar tareas útiles en los servicios Web.
Lostalleres de especificaciones de servicios Webson eventos con varios proveedores realizados para que aprenda y opine acerca de las especificaciones de servicios Web.
La columnaBest Practices for Web servicesen developerWorks analiza situaciones reales que los miembros del programa JStart de IBM para implementación temprana de la tecnología están encontrando en su camino a la implementación exitosa del proyecto. El aprendizaje de esas buenas prácticas puede ayudarle a evaluar y adaptar a la situación de su propio proyecto.


Volver arriba


Java y todas las marcas registradas basadas en Java son marcas registradas de Sun Microsystems, Inc. en Estados Unidos, otros países o ambos. Otros nombres de compañías, productos y servicios pueden ser marcas registradas o marcas de servicios de otros. Otras compañías, productos o nombres de servicios pueden ser marcas comerciales o marcas de servicio de los demás

Fte: http://www.ibm.com/developerworks/ssa/webservices/newto/websvc.html

No hay comentarios:

Publicar un comentario