WebServices
bajo SOA




  SOAagenda team Chile




                         1
Conceptos



                                                    … WebService
   … Servicio SOA
                                                    • Funcionalidades
 Una tarea de negocio                              disponibles vía Web,
  repetitiva – “validar                            implementadas bajo
 Crédito Cliente”, que                            estándares específicos
  cumple estándares                                   (WSDL, SOAP)
           SOA


                          … WebService SOA
                   Implementación vía WebService de un
                  servicio que cumple los estándares SOA




                                                                           2
WebService

Tecnología que permite ejecutar
operaciones en forma remota.
Tecnología que permite
comunicación entre
aplicaciones ( de distintas
Tecnología).                                                 creaPolizaVida()    Servicios
Componente de Software que                                                          Vida
                                                                               <WebService>
                                                                <SOAP>
es descrito por un contrato                                                   WSDL
                                                  Aplicación                  <xml>          Sistema
(WSDL), y se puede acceder en                      Cliente                                  Operacional
                                                    <Java>                                    <VBasic>
la Web a través de un protocolo
definido (SOAP).
Componente de Software
identificado por una dirección
Web (URL), cuyas interfaces
                                    http://SOAagenda.com/sistemaSOA/services/ServiciosVida
(forma de ejecutar) están
definidas usando XML.          WSDL
                                         <xml>
                                                 http://SOAagenda.com/sistemaSOA/services/ServiciosVida?WSDL


                                                                                                       3
Globalización WebService
 Principales lenguajes de programación
 permiten crear y ejecutar Web Services.
 Principales servidores y motores (engine)
 permiten ejecutar y publicar WebServices                             SQL        SAP
                                                                                             People
  – Bases de Datos                                                   Server                   Soft       Data
                                                                                                      Stage (ETL)
  – Orquestador Servicios (ESB)                       Oracle

  – Orquestador Procesos Negocio (BPM)
                                                                                Servicios
                                                                                  Vida
  – Orquestador Procesos Datos y Batch (ETL)   Exchange                       <WebService>
                                                                                                            GlassFish
  – Servidores de Reportes                                                                                    (ESB)

 Principales Herramientas manejan
 WebServices
                                                   RAD                                                     BPM
  – Ambientes de Desarrollo (IDE)
  – Diseño Procesos (BPEL)                                JBuilder
                                                                     NetBeans Eclipse           Office
  – Microsoft Office
 Principales Sistemas WordClass se
 Integran vía WebServices.
  – SAP
  – PeopleSoft


                                                                                                                    4
WSDL (WebService Description Language)
   Documento en XML que describe un
                                                        WSDL
   WebService, describe sus operaciones y
   determina su ubicación.
   Uso principal WSDL: permite
   herramientas generar (automáticamente)
   el cliente para ejecutar el WebService
   (clase Java, clase .Net, nodo en flujo,
   etc.).
   Define:
    – <types> Tipos de datos que usa el WebService
      (en los parámetros), puede indicar ubicación de
      un schema (xml que define estructura).
    – <message> Mensajes que maneja el
      WebService, 2 por cada operación (request,
      response)
    – <portType> Operaciones (funcionalidades) que
      atiende el WebService
    – <binding> define protocolo con que se
      implementan operaciones (SOAP)
    – <service> define ubicación del WebService
                                                               5
Directorios de Servicios

  UDDI: (Universal Description,
  Discovery, and Integration)
  permite publicar los servicios
  catalogados en términos de
  negocio (Industria, Empresa,
  Líneas de Negocio)

  UDDI privadas sirven para que
  herramientas de desarrollo
  manejen catalogo de servicios.

  UDDI publicas sirven para las
  empresas ofrezcan servicios a
  terceros.

  WSIL define las ubicaciones en
  un sitio Web donde se pueden
  buscar descripciones del
  servicio Web (Directorio de
  Directorios)

                                   6
Interoperabilidad WebServices (WS-I)

  Conjunto de especificaciones (guías
  y buenas practicas) para
  implementar WebServices que
  puedan operar entre distintas
  tecnologías (Profiles)
  No define nuevos estándares
  tecnológicos, solo los perfila, define     Servicios      Servicios
                                               Vida           Vida
  uso adecuado.                            <WebService>   <WebService>


  Un Webservice es “WS-I compliant”                       WS-I

  si cumple con el “profile” . Y así nos
  aseguramos que opera en .Net y
  Java.
  WS-I provee herramientas para
  validar que un WebService es “WS-I
  compliant”.


                                                                   7
WS-I Compliant




                 8
Ejemplo Servicio SOA

                      ServiciosVida


  ResultadoCreaPoliza creaPoliza( Cliente, Propuesta)




                                                                     creaPoliza()      Servicios
                                                                                         Vida
                                                                                     <WebService>
                                                                      <SOAP>
                                                                                    WSDL
                                                        Aplicación                  <xml>            Sistema
                                                         Cliente                                    Operacional
         Cliente                   Póliza                 <Java>                                      <VBasic>

     •String rut           •String nroPoliza
     •String nombre        •String estadoPropuesta
                           •String nombreProducto




            ResultadoCreaPoliza
            •String codError
            •String msgError
            •Poliza poliza


                                                                                                            9
Etapas Implementación WebService


    Crear un WebService (a partir de una Clase Java)
                                                               Web
                                            Framework         Service          Deploy
                               Clase
                               Java         WebServices
             Ingeniero
                                                              WSDL
             (IDE)                                                                      Servidor Web




    Crear un Cliente WebService
                                                                         Integra
                                         Framework            Stub
             WSDL                        WebServices      <clase Java>
                         Ingeniero
                         (IDE)                                                          Aplicación Cliente




    Ejecutar un WebService

                                                                          Framework       Web
                                                 Stub                     WebServices    Service
            Usuario
                                                           Servidor Web                            Sistemas Operacionales
                            Aplicación Cliente




                                                                                                                            10
Demo
Crear un WebService (a partir de una Clase Java)
                                                    Web
                                  Framework        Service   Deploy
                       Clase
                       Java          SUN
         Ingeniero
                                                   WSDL
         (IDE)                                                        Servidor Web




                                                                                     11
¿Consultas?
         creaPolizaVida()      Servicios
                                 Vida
                             <WebService>
           <SOAP>
                            WSDL
 PIN                        <xml>           Visual
<Java>
                                            Time
                                            <VBasic>




                                                       12
WSDL (http://localhost:8080/WServiceSOA/ServiciosVidaService?WSDL)

WSDL




                                                                            13
Conceptos SOA
 Servicio: componentes reutilizables de negocio, con interfaces bien           FrameWork: conjunto de herramientas y motor (engine) que permite
 definidas, ej. “consultaCarteraAgente”, generalmente se refiere a “Servicio   habilitar alguna tecnología.
 de Negocio”.                                                                  AXIS: framework que permite generar Webservices.
 Sistemas Operacionales: sistemas legados (heredados) de una empresa,          WorkFlow: flujo de trabajo, permite implementar procesos de negocio,
 sistemas BackOffice, sistemas aislados orientados a un aspecto especifico     pero no soporta actividades automatizadas (servicios).
 del negocio. Ej. “PSoft CRM”.                                                 BPM: (Business Process Management) tecnologia que permite
 Servicios de Información: Servicio de mas bajo nivel, encapsula lógica        implementar procesos de negocio. Apoya todo el ciclo de vida de un
 para acceder a funcionalidades de los sistemas operacionales. ej.             proceso: modelar, integrar, ejecutar, y monitorear. Implementación clara
 “obtieneClienteCRM”.                                                          de SOA, ej. “WorkFlow + WebServices”.
 Proceso de Negocio: secuencia de actividades que forma un proceso del         BPMS: (BPM Suite) framework que permite implementar BPM y SOA,
 negocio, contempla actividades manuales y automatizadas, ej. “Proceso         ej. “BEA Aqualogic”, “IBM WebSphere BPMS”.
 Cotizar Producto Vida”.                                                       Lista Pendientes: portlet que lista las tareas pendientes de un usuario
 SOA: (Service Oriented Architecture) arquitectura basada en componentes       que participa en un proceso de negocio, lo facilita BPMS.
 reutilizables: procesos de negocio y servicios. Estrategia con visión de      MQ: (Websphere Message Queues) framework de IBM para
 Empresa y de largo plazo.                                                     implementar colas de mensajes.
 Portlet: sección o módulo gráfico con una funcionalidad bien definida,        Java: lenguage de programación orientado a objetos.
 servicio de presentación, componente gráfico reutilizable, ej. “Calendario    Clase Java: componente funcional programado en Java, esta
 Agente Ventas”.                                                               compuesto por funciones, y variables.
 Portal: aplicación Web compuesta por Portlets, ej. “www.emol.cl”.             J2EE (Java 2 Enterprise Edition) framework para implementar
 Aplicación SOA: aplicación compuesta de servicios: portlets, procesos de      aplicaciones de complejidad empresarial, estandar e independiente de
 negocio, servicios de negocio.                                                plataforma (Windows, Mac, Linux, Unix).
 XML: (eXtensible Markup Language) estructura de datos basada en tags,         ETL: (Extract, Transform, and Load) framework que permite
 ej. “<rut>8602345-K</rut>”                                                    implementar procesos basados en fuentes de datos (principalmente
 SOAP: (Simple Object Access Protocol) protocolo estandar basado en XML        bases de datos), permite implementar “servicios de información”.
 para implementar servicios.                                                   Basado en modelamiento del proceso (simil BPMS pero solo procesos
 WebService: implementación de un servicio, basado en SOAP, totalmente         Base de Datos). Ej. “IBM Datastage”.
 estandar.                                                                     Deploy: publicar un componente en el servidor web, subir un
 Stub: modulo que permite ejecutar (consumir) un WebService.                   componente a producción, ej. “subir webservice a producción”.
 WSDL: (WebService Definition Language) documento XML que describe la
 estructura de un WebService, contrato que define como implementar y
 ejecutar un WebService.
 IDE: (Integrated Development Enviroment) herramienta de desarrollo
 integrada, ej. “Visual Studio”, “JBuilder”, “Eclipse”.




                                                                                                                                                          14
Algunos Principios SOA
ES:                                     NO ES:
 Una Pieza de Lego: sirve para           Una Pieza de Rompecabezas:
 crear varios juegos distintos.          sirve para crear un solo juego.

 Una funcionalidad del negocio.          Funcionalidad genérica: Ej.
 Ej.“dar de alta un cliente”,            “validar Rut”
 “consulta pólizas vida de un
 cliente”
                                         Aislado: solo sirve para una
  Reutilizable: se puede utilizar en     aplicación. Ej. “consulta pólizas por
 otros aplicaciones. Ej. “consulta       id SAP”
 cliente”, “consulta pólizas grles de
 un rut”                                  Propietario: solo se puede usar
                                         bajo una tecnología. Ej. “una clase
  Estándar: independiente de             Java”, “un Webservice que
 plataforma, se puede integrar a         devuelve dato tipo Visual Basic”
 distintos tecnologias. Ej.
 “Webservices” cumple SOA.               Rígido: fuerte impacto de los
                                         cambios. Ejemplo “consulta cliente
  Flexible: impacto de los cambios       con campo entrada solo rut”.
 es menor. “XML” marca la
 diferencia. Ej.:“Consulta clientes
 con objeto cliente como entrada”

                                                                            15
Algunos Patrones Diseño Servicios SOA

    Servicio se nombra para maximizar consumo.
      – Erróneo: insertarRegistroCliente()
      – Correcto: crearNuevoCliente()


    Servicio tienen parámetros abultados (coarse grained)
      – Erróneo : crearNuevoCliente (rut, nombre, apellidos, email, fono, direccion)
      – Correcto: crearNuevoCliente (objetoCliente)


    Servicio encapsula detalles de implementación.
      – Erróneo : crearNuevoClientePsoft (schemaOracle, registroTablaCliente )
      – Correcto: crearNuevoCliente (objetoCliente)


    AntiPatrón, Servicio Parlanchines (Chatty Services)
      – Erróneo: consultaUF()
      – Correcto: (NO implementar ese tipo funciones como servicios)




      IBM SOA Antipatterns
   http://www.ibm.com/developerworks/webservices/library/ws-antipatterns/
      IBM SOA realization, Service design principles
   http://www-128.ibm.com/developerworks/webservices/library/ws-soa-design/
                                                                                       16

Servicios SOA

  • 1.
    WebServices bajo SOA SOAagenda team Chile 1
  • 2.
    Conceptos … WebService … Servicio SOA • Funcionalidades Una tarea de negocio disponibles vía Web, repetitiva – “validar implementadas bajo Crédito Cliente”, que estándares específicos cumple estándares (WSDL, SOAP) SOA … WebService SOA Implementación vía WebService de un servicio que cumple los estándares SOA 2
  • 3.
    WebService Tecnología que permiteejecutar operaciones en forma remota. Tecnología que permite comunicación entre aplicaciones ( de distintas Tecnología). creaPolizaVida() Servicios Componente de Software que Vida <WebService> <SOAP> es descrito por un contrato WSDL Aplicación <xml> Sistema (WSDL), y se puede acceder en Cliente Operacional <Java> <VBasic> la Web a través de un protocolo definido (SOAP). Componente de Software identificado por una dirección Web (URL), cuyas interfaces http://SOAagenda.com/sistemaSOA/services/ServiciosVida (forma de ejecutar) están definidas usando XML. WSDL <xml> http://SOAagenda.com/sistemaSOA/services/ServiciosVida?WSDL 3
  • 4.
    Globalización WebService Principaleslenguajes de programación permiten crear y ejecutar Web Services. Principales servidores y motores (engine) permiten ejecutar y publicar WebServices SQL SAP People – Bases de Datos Server Soft Data Stage (ETL) – Orquestador Servicios (ESB) Oracle – Orquestador Procesos Negocio (BPM) Servicios Vida – Orquestador Procesos Datos y Batch (ETL) Exchange <WebService> GlassFish – Servidores de Reportes (ESB) Principales Herramientas manejan WebServices RAD BPM – Ambientes de Desarrollo (IDE) – Diseño Procesos (BPEL) JBuilder NetBeans Eclipse Office – Microsoft Office Principales Sistemas WordClass se Integran vía WebServices. – SAP – PeopleSoft 4
  • 5.
    WSDL (WebService DescriptionLanguage) Documento en XML que describe un WSDL WebService, describe sus operaciones y determina su ubicación. Uso principal WSDL: permite herramientas generar (automáticamente) el cliente para ejecutar el WebService (clase Java, clase .Net, nodo en flujo, etc.). Define: – <types> Tipos de datos que usa el WebService (en los parámetros), puede indicar ubicación de un schema (xml que define estructura). – <message> Mensajes que maneja el WebService, 2 por cada operación (request, response) – <portType> Operaciones (funcionalidades) que atiende el WebService – <binding> define protocolo con que se implementan operaciones (SOAP) – <service> define ubicación del WebService 5
  • 6.
    Directorios de Servicios UDDI: (Universal Description, Discovery, and Integration) permite publicar los servicios catalogados en términos de negocio (Industria, Empresa, Líneas de Negocio) UDDI privadas sirven para que herramientas de desarrollo manejen catalogo de servicios. UDDI publicas sirven para las empresas ofrezcan servicios a terceros. WSIL define las ubicaciones en un sitio Web donde se pueden buscar descripciones del servicio Web (Directorio de Directorios) 6
  • 7.
    Interoperabilidad WebServices (WS-I) Conjunto de especificaciones (guías y buenas practicas) para implementar WebServices que puedan operar entre distintas tecnologías (Profiles) No define nuevos estándares tecnológicos, solo los perfila, define Servicios Servicios Vida Vida uso adecuado. <WebService> <WebService> Un Webservice es “WS-I compliant” WS-I si cumple con el “profile” . Y así nos aseguramos que opera en .Net y Java. WS-I provee herramientas para validar que un WebService es “WS-I compliant”. 7
  • 8.
  • 9.
    Ejemplo Servicio SOA ServiciosVida ResultadoCreaPoliza creaPoliza( Cliente, Propuesta) creaPoliza() Servicios Vida <WebService> <SOAP> WSDL Aplicación <xml> Sistema Cliente Operacional Cliente Póliza <Java> <VBasic> •String rut •String nroPoliza •String nombre •String estadoPropuesta •String nombreProducto ResultadoCreaPoliza •String codError •String msgError •Poliza poliza 9
  • 10.
    Etapas Implementación WebService Crear un WebService (a partir de una Clase Java) Web Framework Service Deploy Clase Java WebServices Ingeniero WSDL (IDE) Servidor Web Crear un Cliente WebService Integra Framework Stub WSDL WebServices <clase Java> Ingeniero (IDE) Aplicación Cliente Ejecutar un WebService Framework Web Stub WebServices Service Usuario Servidor Web Sistemas Operacionales Aplicación Cliente 10
  • 11.
    Demo Crear un WebService(a partir de una Clase Java) Web Framework Service Deploy Clase Java SUN Ingeniero WSDL (IDE) Servidor Web 11
  • 12.
    ¿Consultas? creaPolizaVida() Servicios Vida <WebService> <SOAP> WSDL PIN <xml> Visual <Java> Time <VBasic> 12
  • 13.
  • 14.
    Conceptos SOA Servicio:componentes reutilizables de negocio, con interfaces bien FrameWork: conjunto de herramientas y motor (engine) que permite definidas, ej. “consultaCarteraAgente”, generalmente se refiere a “Servicio habilitar alguna tecnología. de Negocio”. AXIS: framework que permite generar Webservices. Sistemas Operacionales: sistemas legados (heredados) de una empresa, WorkFlow: flujo de trabajo, permite implementar procesos de negocio, sistemas BackOffice, sistemas aislados orientados a un aspecto especifico pero no soporta actividades automatizadas (servicios). del negocio. Ej. “PSoft CRM”. BPM: (Business Process Management) tecnologia que permite Servicios de Información: Servicio de mas bajo nivel, encapsula lógica implementar procesos de negocio. Apoya todo el ciclo de vida de un para acceder a funcionalidades de los sistemas operacionales. ej. proceso: modelar, integrar, ejecutar, y monitorear. Implementación clara “obtieneClienteCRM”. de SOA, ej. “WorkFlow + WebServices”. Proceso de Negocio: secuencia de actividades que forma un proceso del BPMS: (BPM Suite) framework que permite implementar BPM y SOA, negocio, contempla actividades manuales y automatizadas, ej. “Proceso ej. “BEA Aqualogic”, “IBM WebSphere BPMS”. Cotizar Producto Vida”. Lista Pendientes: portlet que lista las tareas pendientes de un usuario SOA: (Service Oriented Architecture) arquitectura basada en componentes que participa en un proceso de negocio, lo facilita BPMS. reutilizables: procesos de negocio y servicios. Estrategia con visión de MQ: (Websphere Message Queues) framework de IBM para Empresa y de largo plazo. implementar colas de mensajes. Portlet: sección o módulo gráfico con una funcionalidad bien definida, Java: lenguage de programación orientado a objetos. servicio de presentación, componente gráfico reutilizable, ej. “Calendario Clase Java: componente funcional programado en Java, esta Agente Ventas”. compuesto por funciones, y variables. Portal: aplicación Web compuesta por Portlets, ej. “www.emol.cl”. J2EE (Java 2 Enterprise Edition) framework para implementar Aplicación SOA: aplicación compuesta de servicios: portlets, procesos de aplicaciones de complejidad empresarial, estandar e independiente de negocio, servicios de negocio. plataforma (Windows, Mac, Linux, Unix). XML: (eXtensible Markup Language) estructura de datos basada en tags, ETL: (Extract, Transform, and Load) framework que permite ej. “<rut>8602345-K</rut>” implementar procesos basados en fuentes de datos (principalmente SOAP: (Simple Object Access Protocol) protocolo estandar basado en XML bases de datos), permite implementar “servicios de información”. para implementar servicios. Basado en modelamiento del proceso (simil BPMS pero solo procesos WebService: implementación de un servicio, basado en SOAP, totalmente Base de Datos). Ej. “IBM Datastage”. estandar. Deploy: publicar un componente en el servidor web, subir un Stub: modulo que permite ejecutar (consumir) un WebService. componente a producción, ej. “subir webservice a producción”. WSDL: (WebService Definition Language) documento XML que describe la estructura de un WebService, contrato que define como implementar y ejecutar un WebService. IDE: (Integrated Development Enviroment) herramienta de desarrollo integrada, ej. “Visual Studio”, “JBuilder”, “Eclipse”. 14
  • 15.
    Algunos Principios SOA ES: NO ES: Una Pieza de Lego: sirve para Una Pieza de Rompecabezas: crear varios juegos distintos. sirve para crear un solo juego. Una funcionalidad del negocio. Funcionalidad genérica: Ej. Ej.“dar de alta un cliente”, “validar Rut” “consulta pólizas vida de un cliente” Aislado: solo sirve para una Reutilizable: se puede utilizar en aplicación. Ej. “consulta pólizas por otros aplicaciones. Ej. “consulta id SAP” cliente”, “consulta pólizas grles de un rut” Propietario: solo se puede usar bajo una tecnología. Ej. “una clase Estándar: independiente de Java”, “un Webservice que plataforma, se puede integrar a devuelve dato tipo Visual Basic” distintos tecnologias. Ej. “Webservices” cumple SOA. Rígido: fuerte impacto de los cambios. Ejemplo “consulta cliente Flexible: impacto de los cambios con campo entrada solo rut”. es menor. “XML” marca la diferencia. Ej.:“Consulta clientes con objeto cliente como entrada” 15
  • 16.
    Algunos Patrones DiseñoServicios SOA Servicio se nombra para maximizar consumo. – Erróneo: insertarRegistroCliente() – Correcto: crearNuevoCliente() Servicio tienen parámetros abultados (coarse grained) – Erróneo : crearNuevoCliente (rut, nombre, apellidos, email, fono, direccion) – Correcto: crearNuevoCliente (objetoCliente) Servicio encapsula detalles de implementación. – Erróneo : crearNuevoClientePsoft (schemaOracle, registroTablaCliente ) – Correcto: crearNuevoCliente (objetoCliente) AntiPatrón, Servicio Parlanchines (Chatty Services) – Erróneo: consultaUF() – Correcto: (NO implementar ese tipo funciones como servicios) IBM SOA Antipatterns http://www.ibm.com/developerworks/webservices/library/ws-antipatterns/ IBM SOA realization, Service design principles http://www-128.ibm.com/developerworks/webservices/library/ws-soa-design/ 16