SlideShare ist ein Scribd-Unternehmen logo
1 von 47
Downloaden Sie, um offline zu lesen
Construyendo una AOS con PHP:
     Patrones de Diseño de
     Servicios Web en PHP


      Jesús M. Castagnetto, Ph.D.

              Latinoware 2008
     30 de Octubre – 1 de Noviembre, 2008

        Parque Tecnológico Itaipu (PTI)
           Foz do Iguaçu PR/Brasil


                           Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
               Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Agenda
●   ¿Qué es una Arquitectura Orientada a
    Servicios (AOS)?
●   ¿Qué es un Patrón de Diseño?
●   Uso de Servicios Web en una AOS
●   Ejemplos de patrones usando PHP
●   Recomendaciones


                            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Arquitectura Orientada a
Servicios (AOS)
●   Un diseño arquitectural para el
    desarrollo e integración de sistemas.
●   La funcionalidad del sistema se
    organiza en función a los procesos
    de negocios.
●   Los procesos se implementan como
    servicios interoperables, usando
    interfaces y protocolos homogéneos.
                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Características de una AOS
                           ●    Acoplamiento
                                débil/laxo entre
                                componentes.

                           ●    “Contratos de
                                servicio” para
                                definir interfaces.


                      Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
          Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Características de una AOS
●   Intermediarios
    para el reuso de
    sistemas
    existentes.
●   Composición de
    servicios
    mediante la
    coordinación de
    acciones.
                            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Características de una AOS
                           ●    Los servicios
                                tienen lógica
                                autónoma.
                           ●    La descripción de
                                cada servicio se
                                puede descubrir,
                                simplificando su
                                uso.

                      Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
          Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Características de una AOS
●   Se pueden usar
    entornos y
    componentes
    heterogéneos,
    siempre que se
    cumplan los
    estándares para
    la comunicación
    entre servicios.
                            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
... Y algo muy importante


   El usar una AOS
   no implica el uso
   de Servicios Web

                      Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
          Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Patrones de Diseño

“... Cada patrón describe un problema que
 ocurre una y otra vez en nuesto entorno, y
 luego describe el meollo de la solución al
 problema, de tal manera que puedas usar
 esta solución millones de veces, sin tener
 que hacerlo de forma exactamente igual
 dos veces ...”
                       Christopher Alexander


                            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Patrones de Diseño
●   Son soluciones generales y reusables
    a problemas comunes.
●   Se hacen evidente en la arquitectura,
    al construir edificios basados en
    principios clave.
●   En software, la idea se traduce en
    soluciones pragmáticas, que nos
    ayudan a hacer frente a problemas
    recurrentes.
                            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Patrones de Diseño
●   Escribir programas, es una mezcla de
    teoría, técnica y arte, y los patrones
    de diseño surgen de la experiencia.
●   Las comunidades de programadores,
    han descrito decenas de patrones
    básicos y derivados.
●   Aprender a usar patrones de diseño
    efectivamente, toma tiempo.
                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Patrones y Anti-patrones
●   Los patrones de diseño, nos
    orientan hacia que debemos hacer
    para resolver un problema.
●   Los anti-patrones nos alertan
    acerca de qué evitar hacer, y nos
    enseñan que en ocasiones, una
    aparente solución es un problema
    más grave disfrazado.

                            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Servicios Web
“... (U)n sistema de software diseñado
para permitir la interacción
interoperable de máquina-a-máquina
en una red. Tiene una interfaz descrita
en formato procesable-por-máquina ...
Otros sistemas interaccionan con el
Servicio Web de la manera prescrita en
su descripción ... usando HTTP con
serialización XML ...”
                                Definición del W3C
                          Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
              Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Protocolos de Servicios Web
SOAP:
●   Puede usar múltiples medios de
    transporte: SMTP, HTTP/HTTPS, etc.
●   Usa XML como formato del mensaje.
●   Puede combinar múltiples estándares
    que abarcan otras facetas: seguridad,
    confiabilidad, transacciones, etc.
●   Es flexible, extensible, y complejo.
                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Protocolos de Servicios Web
XML-RPC:
●   Usa HTTP como transporte (no es
    común que use HTTPS)
●   Usa XML como formato del mensaje,
    y describe formas de codificar datos.
●   Es una implementación en XML de
    una llamada remota a procedimiento.
●   Es simple, pero inflexible.
                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Protocolos de Servicios Web

REST:
●   Es más un estilo de arquitectura de
    sistemas que un protocolo per se.
●   Es la Web, con recursos abstraídos en
    URLs, y acciones en operaciones de
    HTTP (GET, POST, PUT, DELETE)
●   Es escalable, simple, y robusto, y es
    algo que ya sabemos cómo hacer.
                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
REST y AOS
●   En principio una AOS puede ser (y ha
    sido) implementada usando
    diferentes tecnologías.
●   Los Servicios Web con todas sus
    ventajas son una excelente forma de
    implementar una AOS.
●   Y, por supuesto, REST es la forma de
    hacerlo bien y en forma simple.
                            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Anatomía de un patrón de
diseño
Generalmente se describen usando:
●   Un nombre descriptivo.
●   Una descripción corta que incluye la
    intención (el objetivo del mismo y la
    razón de su uso) y su aplicabilidad (el
    contexto de uso).
●   Las consecuencias de su uso.
●   Descripción de cómo implementarlo.
                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Patrones a discutir
●   Búsqueda asincrónica
    (Asynchronous query)

●   Servicios de fachada
    (Facade services)

●   Envoltura para lo anticuado
    (Legacy wrapper)
                            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Búsqueda asincrónica
Intención:
●   Permitir que se puedan realizar
    búsquedas o procesos de larga
    duración, sin impactar en forma
    negativa en el funcionamiento de
    quienes usen el servicio.
●   Tratar de reducir el problema de
    agotamiento de tiempo y bloqueo de
    recursos.
                            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Búsqueda asincrónica

Consecuencias:
●   No hay un tiempo precisamente
    determinado para obtener la
    respuesta.
●   El cliente del servicio tiene que
    implementar la lógica de reintentar
    obtener la respuesta, hasta que ésta
    se encuentre disponible.
                            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Búsqueda asincrónica

Implementación:
●   El cliente envía un pedido de
    búsqueda al proveedor del servicio,
    el cual lo pone en una cola de
    proceso, y retorna un ID del pedido.
●   Un proceso secundario ejecuta el
    pedido en cola, y al terminar, pone la
    respuesta en otra cola de mensajes.
                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Búsqueda asincrónica

Implementación: (cont.)
●   El cliente le pide la respuesta al
    servicio. Si el servicio no la encuentra
    en la cola, le dice al cliente que
    regrese luego, de otro modo la saca
    de la cola de mensajes, y la entrega
    al cliente.


                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Búsqueda asincrónica
(Ejemplo)
●   Vamos a generar un reporte de notas
    para alumnos y cursos.
●   Usaremos REST para definir las URLs
    de búsqueda:
    ●   http://[dominio]/notas/curso/[CURSOID]
    ●   http://[dominio]/notas/cursos/[CURSOLISTA]
    ●   http://[dominio]/notas/alumno/[ALUMID]
    ●   http://[dominio]/notas/alumnos/[ALUMLISTA]

                                 Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                     Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Búsqueda asincrónica
(Ejemplo)
●   Y definiremos:
    ●   CURSOID:
        Identificador del curso, ej. Q0415
    ●   CURSOLISTA:
        Lista de cursos, ej. M0101,B0203
    ●   ALUMNID:
        Identificador del alumno, ej. 65782
    ●   ALUMNOLISTA:
        Lista de alumnos, ej. 34291,78239,12033

                                  Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                      Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Búsqueda asincrónica
(Ejemplo)
●   La estructura del URL nos da el tipo
    general de acción, los límites de la
    búsqueda y sus parámetros:
         /notas/alumno/05644

●   De esta manera el URL es único y
    explícito.
●   Para nuestro ejemplo asumimos que
    usaremos sólo HTTP GET.
                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Búsqueda asincrónica
(Ejemplo)
●   Al llamar una URL, el cliente recibe
    un identificador de búsqueda en XML:
➔   http://.../notas/alumno/30462
<notas>
 <id>12345678901234567890<id>
 <query>/alumno/30462</query>
 <result/>
</notas>
                            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Búsqueda asincrónica
(Ejemplo)
●   El servicio lo envía a ser procesado
    en una cola, y de ahí en adelante, el
    cliente se encargará de pedir el
    resultado usando el URL apropiado.
●   Hay dos opciones de diseño:
    ●   Un servicio de resultados general, que sólo
        use el ID para obtener la información.
    ●   Uno específico al servicio inicial, usando una
        variante del URL original.
                                  Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                      Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Búsqueda asincrónica
(Ejemplo)
Usando un procesador genérico:
➔   http://.../resultados/[RESULTID]
●   Nos permite unificar resultados de
    varios servicios, y no multiplicar
    innecesariamente los recursos.
●   Pero, perdemos el contexto del
    servicio original, lo cual puede ser
    confuso para los usuarios.
                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Búsqueda asincrónica
(Ejemplo)
Usando una variante del URL original:
➔   http://.../notas/resultado/[RESULTID]
●   Nos permite conservar el contexto de
    la interacción, añadiendo sólo una
    nueva acción dentro del servicio.
●   Podemos evitar duplicación de código
    delegando responsabilidades a un
    servicio interno.
                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Búsqueda asincrónica
(Ejemplo)
El código que implemente el patrón no
es complicado, se necesita:
●   Código que implemente la recepción
    de búsquedas, y puesta en cola.
●   Código para obtener la búsqueda de
    la cola, ejecutarla, y luego poner los
    resultados en cola.
●   Código para obtener los resultados.
                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Servicios de fachada
Intención
●   Permitir un acceso simplificado a un
    sistema con una interfaz compleja.
●   Combinar en una, varias operaciones
    relacionadas en la API existente.
●   Reducir el número de parámetros.
●   Aislar cambios del sistema interno, y
    desacoplar el uso externo.
                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Servicios de fachada
Consecuencias
●   Si bien simplifica el uso de una
    interfaz, puede llevar a complejidad
    en la lógica de implementación.
●   Puede haber más de una forma de
    combinar interfaces, y no todas
    pueden ser óptimas.
●   Impacta el rendimiento del servicio.
                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Servicios de fachada

Implementación
●   Una capa que implementa el API del
    servicio que será visto por los
    clientes externos.
●   Código específico que use las
    librerías o sistemas internos (con
    todas sus condiciones) para que se
    pueda cumplir la API simplificada del
    servicio.
                             Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                 Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Envoltura para lo anticuado

Intención
●   Permitir el acceso a un sistema
    anticuado (legacy), a través de una
    tecnología o protocolo nuevo.
●   Integrar sistemas heterogéneos
    existentes, dentro de una nueva
    arquitectura, sin necesidad de
    rehacer la funcionalidad.
                            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Envoltura para lo anticuado
Consecuencias
●   La “envoltura” tiene que encargarse
    de posibles trasformaciones de datos,
    para que el sistema anticuado pueda
    funcionar correctamente.
●   Aumenta la vida útil del sistema
    anticuado, pero eso puede
    convertirse en un defecto grave en la
    evolución futura de la arquitectura.
                            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Envoltura para lo anticuado
Implementación
●   Una capa que exponga la API del
    sistema anticuado usando REST.
●   Rutinas de transformación de datos
    de entrada y salida, para que
    funcionen con el sistema anticuado.
●   Código para manejar los errores
    originados en el sistema anticuado.
                            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
¿Cómo hacemos el código?
●   Podemos hacerlo “a mano”,
    implementando mapeos apropiados,
    y lógica de redirección.

                            O

●   Podemos usar librerías que hagan el
    manejo rutinario y concentrarnos en
    la funcionalidad a proveer.
                            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Tonic (tonic.sf.net)




                       Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
           Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Konstrukt
(www.konstrukt.dk)




                     Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
         Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
WSO2 WSF/PHP
(wso2.org/projects/wsf/php)




                      Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
          Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
WSO2 WSF/PHP
●   Un proyecto de WSO2: herramientas
    y librerías para Servicios Web.
●   Soporte para SOAP y WSDL, y una
    serie de estándares WS-*.
●   Interoperable con otras
    implementaciones de SOAP.
●   Soporte para REST, incluyendo
    mapeo específico de URIs.
                            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Ideas finales
●   Es posible hacer una AOS simple
    usando REST, y diseñándola bien.
●   Los patrones comunes de diseño no
    son tan complicados, pero su
    implementación sí puede serla.
●   Si entendemos el uso de REST y de
    patrones de diseño, podemos
    escribirlo en PHP (o cualquier otro
    lenguaje de programación).
                            Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Más información: Patrones
●   Portland Pattern Repository:
    http://c2.com/cgi/wiki?
    PortlandPatternRepository
    ➔   Lean también el resto del sitio de Ward
        Cunninhgam (http://c2.com/)
●   “Design Patterns: Elements of Reusable Object-
    Oriented Software” por Erich Gamma, Richard
    Helm, Ralph Johnson, y John Vlissides (ISBN:
    0-201-63361-2)
●   “The Timeless Way of Building” por Christopher
    Alexander (ISBN: 0195024028)
                                  Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                      Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Más información: PHP,
Servicios Web y AOS
●   Do REST in PHP - PHP RESTful Data Services
    (http://www.dimuthu.org/blog/2008/09/18/do-
    rest-in-php-php-restful-data-services/)
●   Why PHP Users should be Serious about SOA?
    (http://phpwebservices.blogspot.com/2008/01/w
    hy-php-uses-should-be-serious-about.html)
●   Open Service Oriented Architecture
    (http://www.osoa.org/display/PHP/SOA+PHP+Ho
    mepage)
●   Using PHP's SDO and SCA extensions
    (http://www.ibm.com/developerworks/web/librar
    y/ws-soa-scasdo/)
                               Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                   Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
Más información: SOA, REST
●   “RESTful Web Services” por Leonard Richardson
    y Sam Ruby (ISBN: 0-596-52926-0)
●   “Basic SOA using REST”
    (http://www.webreference.com/programming/ba
    sic_soa/)
●   SOA Pattern Catalog
    (http://www.soaprpc.com/patterns/soa_pattern_
    catalog.html)
●   SOA Patterns (http://www.soapatterns.org/)


                                Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
                    Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
¡Gracias/Obrigado!

A los organizadores del evento por la
      invitación y el entusiasmo.

  A todos ustedes por soportar mi
    “bla, bla, bla...”, sin dormirse.

        Jesús M. Castagnetto
      jmcastagnetto@php.net
         jesus@upch.edu.pe
                         Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y
             Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

DHCP (Router Cisco y Servidor) ip helper-addrees
DHCP (Router Cisco y Servidor) ip helper-addreesDHCP (Router Cisco y Servidor) ip helper-addrees
DHCP (Router Cisco y Servidor) ip helper-addrees
 
Diagramas de caso de uso
Diagramas de caso de usoDiagramas de caso de uso
Diagramas de caso de uso
 
Two-dimensional array in java
Two-dimensional array in javaTwo-dimensional array in java
Two-dimensional array in java
 
Lenguaje SQL
Lenguaje SQLLenguaje SQL
Lenguaje SQL
 
Files in java
Files in javaFiles in java
Files in java
 
Conexión desde una aplicación en java a un bd en mysql
Conexión desde una aplicación en java a un bd en mysqlConexión desde una aplicación en java a un bd en mysql
Conexión desde una aplicación en java a un bd en mysql
 
Java con base de datos
Java con base de datosJava con base de datos
Java con base de datos
 
Conceptos Fundamentales de Base de Datos
Conceptos Fundamentales de Base de DatosConceptos Fundamentales de Base de Datos
Conceptos Fundamentales de Base de Datos
 
9.herencia en java
9.herencia en java9.herencia en java
9.herencia en java
 
Objeto relacional bases datos 2
Objeto relacional bases datos 2Objeto relacional bases datos 2
Objeto relacional bases datos 2
 
Funcionamiento de un pila
Funcionamiento de un pilaFuncionamiento de un pila
Funcionamiento de un pila
 
Colecciones en java
Colecciones en javaColecciones en java
Colecciones en java
 
Arrays in java
Arrays in javaArrays in java
Arrays in java
 
NORMALIZACIÓN
NORMALIZACIÓN  NORMALIZACIÓN
NORMALIZACIÓN
 
Modelos de datos
Modelos de datosModelos de datos
Modelos de datos
 
Capitulo 8 la tabla de enrutamiento
Capitulo 8 la tabla de enrutamientoCapitulo 8 la tabla de enrutamiento
Capitulo 8 la tabla de enrutamiento
 
JTABLE
JTABLEJTABLE
JTABLE
 
PHP - Introduction to File Handling with PHP
PHP -  Introduction to  File Handling with PHPPHP -  Introduction to  File Handling with PHP
PHP - Introduction to File Handling with PHP
 
Taller no. 1 Base de Datos
Taller no. 1 Base de DatosTaller no. 1 Base de Datos
Taller no. 1 Base de Datos
 
Clases de direcciones IP
Clases de direcciones IPClases de direcciones IP
Clases de direcciones IP
 

Ähnlich wie Construyendo una AOS con PHP: Patrones de Diseño de Servicios Web en PHP

Manteniendo la casa limpia: Probando y depurando aplicativos en PHP
Manteniendo la casa limpia: Probando y depurando aplicativos en PHPManteniendo la casa limpia: Probando y depurando aplicativos en PHP
Manteniendo la casa limpia: Probando y depurando aplicativos en PHPJesus Castagnetto
 
Servicios Web en Bioinformática
Servicios Web en BioinformáticaServicios Web en Bioinformática
Servicios Web en BioinformáticaJesus Castagnetto
 
DIseñando el método de INVESTIGACIÓN.pptx
DIseñando el método de INVESTIGACIÓN.pptxDIseñando el método de INVESTIGACIÓN.pptx
DIseñando el método de INVESTIGACIÓN.pptxANTONIVALLE
 
Nuevas Areas de Investigación en Química
Nuevas Areas de Investigación en QuímicaNuevas Areas de Investigación en Química
Nuevas Areas de Investigación en QuímicaJesus Castagnetto
 
Pt Raul C
Pt Raul CPt Raul C
Pt Raul Covruni
 
Conferencistas magistrales
Conferencistas magistralesConferencistas magistrales
Conferencistas magistralesRoberth Mancilla
 
GXFIT-Especificación de marco de pruebas
GXFIT-Especificación de marco de pruebasGXFIT-Especificación de marco de pruebas
GXFIT-Especificación de marco de pruebasAlejandro Araújo
 
Proyecto de creación del Programa Profesional de Sistemas de Información
Proyecto de creación del Programa Profesional de Sistemas de InformaciónProyecto de creación del Programa Profesional de Sistemas de Información
Proyecto de creación del Programa Profesional de Sistemas de InformaciónUniversidad Católica San Pablo
 
Agentes Inteligentes Fin Aexpo L2
Agentes Inteligentes Fin Aexpo L2Agentes Inteligentes Fin Aexpo L2
Agentes Inteligentes Fin Aexpo L2Manuel Mujica
 
Exposición: Proyecto de Investigación "MACK"
Exposición: Proyecto de Investigación "MACK"Exposición: Proyecto de Investigación "MACK"
Exposición: Proyecto de Investigación "MACK"kerenaradi
 
Trabajo de heramientas informaticas
Trabajo de heramientas informaticasTrabajo de heramientas informaticas
Trabajo de heramientas informaticasthekaival
 
+++Texto de apuntes etabs sap
+++Texto de apuntes etabs sap+++Texto de apuntes etabs sap
+++Texto de apuntes etabs sapJose Vargas
 

Ähnlich wie Construyendo una AOS con PHP: Patrones de Diseño de Servicios Web en PHP (20)

Manteniendo la casa limpia: Probando y depurando aplicativos en PHP
Manteniendo la casa limpia: Probando y depurando aplicativos en PHPManteniendo la casa limpia: Probando y depurando aplicativos en PHP
Manteniendo la casa limpia: Probando y depurando aplicativos en PHP
 
Servicios Web en Bioinformática
Servicios Web en BioinformáticaServicios Web en Bioinformática
Servicios Web en Bioinformática
 
DIseñando el método de INVESTIGACIÓN.pptx
DIseñando el método de INVESTIGACIÓN.pptxDIseñando el método de INVESTIGACIÓN.pptx
DIseñando el método de INVESTIGACIÓN.pptx
 
Nuevas Areas de Investigación en Química
Nuevas Areas de Investigación en QuímicaNuevas Areas de Investigación en Química
Nuevas Areas de Investigación en Química
 
Instalacio y configuracion de un curso en linea
Instalacio y configuracion de un curso en lineaInstalacio y configuracion de un curso en linea
Instalacio y configuracion de un curso en linea
 
Pt Raul C
Pt Raul CPt Raul C
Pt Raul C
 
Conferencistas magistrales
Conferencistas magistralesConferencistas magistrales
Conferencistas magistrales
 
GXFIT-Especificación de marco de pruebas
GXFIT-Especificación de marco de pruebasGXFIT-Especificación de marco de pruebas
GXFIT-Especificación de marco de pruebas
 
Gacetilla Curso Posgrado
Gacetilla Curso PosgradoGacetilla Curso Posgrado
Gacetilla Curso Posgrado
 
Proyecto de creación del Programa Profesional de Sistemas de Información
Proyecto de creación del Programa Profesional de Sistemas de InformaciónProyecto de creación del Programa Profesional de Sistemas de Información
Proyecto de creación del Programa Profesional de Sistemas de Información
 
Creación de programa sistemas de informacion
Creación de programa sistemas de informacionCreación de programa sistemas de informacion
Creación de programa sistemas de informacion
 
Agentes Inteligentes Fin Aexpo L2
Agentes Inteligentes Fin Aexpo L2Agentes Inteligentes Fin Aexpo L2
Agentes Inteligentes Fin Aexpo L2
 
Yolanda
YolandaYolanda
Yolanda
 
Yolanda
YolandaYolanda
Yolanda
 
Exposición: Proyecto de Investigación "MACK"
Exposición: Proyecto de Investigación "MACK"Exposición: Proyecto de Investigación "MACK"
Exposición: Proyecto de Investigación "MACK"
 
Trabajo de heramientas informaticas
Trabajo de heramientas informaticasTrabajo de heramientas informaticas
Trabajo de heramientas informaticas
 
Plan Curricular 2006 De Ingenieria Informatica
Plan Curricular 2006 De Ingenieria InformaticaPlan Curricular 2006 De Ingenieria Informatica
Plan Curricular 2006 De Ingenieria Informatica
 
Plan curricular 2006 de ingenieria informatica
Plan curricular 2006 de ingenieria informaticaPlan curricular 2006 de ingenieria informatica
Plan curricular 2006 de ingenieria informatica
 
+++Texto de apuntes etabs sap
+++Texto de apuntes etabs sap+++Texto de apuntes etabs sap
+++Texto de apuntes etabs sap
 
La usabilidad y los sistemas de ayuda
La usabilidad y los sistemas de ayudaLa usabilidad y los sistemas de ayuda
La usabilidad y los sistemas de ayuda
 

Kürzlich hochgeladen

Clasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxClasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxCarolina Bujaico
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)JuanStevenTrujilloCh
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfKarinaCambero3
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024u20211198540
 
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaYeimys Ch
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptxHugoGutierrez99
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointValerioIvanDePazLoja
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar24roberto21
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDAVIDROBERTOGALLEGOS
 
Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nóminacuellosameidy
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfcristianrb0324
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxhasbleidit
 

Kürzlich hochgeladen (20)

Clasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptxClasificación de Conjuntos de Datos Desequilibrados.pptx
Clasificación de Conjuntos de Datos Desequilibrados.pptx
 
Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)Análisis de los artefactos (nintendo NES)
Análisis de los artefactos (nintendo NES)
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdf
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
 
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guiaORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
ORIENTACIONES DE INFORMÁTICA-2024.pdf-guia
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power Point
 
Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptx
 
Nomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de NóminaNomisam: Base de Datos para Gestión de Nómina
Nomisam: Base de Datos para Gestión de Nómina
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdf
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
 

Construyendo una AOS con PHP: Patrones de Diseño de Servicios Web en PHP

  • 1. Construyendo una AOS con PHP: Patrones de Diseño de Servicios Web en PHP Jesús M. Castagnetto, Ph.D. Latinoware 2008 30 de Octubre – 1 de Noviembre, 2008 Parque Tecnológico Itaipu (PTI) Foz do Iguaçu PR/Brasil Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 2. Agenda ● ¿Qué es una Arquitectura Orientada a Servicios (AOS)? ● ¿Qué es un Patrón de Diseño? ● Uso de Servicios Web en una AOS ● Ejemplos de patrones usando PHP ● Recomendaciones Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 3. Arquitectura Orientada a Servicios (AOS) ● Un diseño arquitectural para el desarrollo e integración de sistemas. ● La funcionalidad del sistema se organiza en función a los procesos de negocios. ● Los procesos se implementan como servicios interoperables, usando interfaces y protocolos homogéneos. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 4. Características de una AOS ● Acoplamiento débil/laxo entre componentes. ● “Contratos de servicio” para definir interfaces. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 5. Características de una AOS ● Intermediarios para el reuso de sistemas existentes. ● Composición de servicios mediante la coordinación de acciones. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 6. Características de una AOS ● Los servicios tienen lógica autónoma. ● La descripción de cada servicio se puede descubrir, simplificando su uso. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 7. Características de una AOS ● Se pueden usar entornos y componentes heterogéneos, siempre que se cumplan los estándares para la comunicación entre servicios. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 8. ... Y algo muy importante El usar una AOS no implica el uso de Servicios Web Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 9. Patrones de Diseño “... Cada patrón describe un problema que ocurre una y otra vez en nuesto entorno, y luego describe el meollo de la solución al problema, de tal manera que puedas usar esta solución millones de veces, sin tener que hacerlo de forma exactamente igual dos veces ...” Christopher Alexander Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 10. Patrones de Diseño ● Son soluciones generales y reusables a problemas comunes. ● Se hacen evidente en la arquitectura, al construir edificios basados en principios clave. ● En software, la idea se traduce en soluciones pragmáticas, que nos ayudan a hacer frente a problemas recurrentes. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 11. Patrones de Diseño ● Escribir programas, es una mezcla de teoría, técnica y arte, y los patrones de diseño surgen de la experiencia. ● Las comunidades de programadores, han descrito decenas de patrones básicos y derivados. ● Aprender a usar patrones de diseño efectivamente, toma tiempo. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 12. Patrones y Anti-patrones ● Los patrones de diseño, nos orientan hacia que debemos hacer para resolver un problema. ● Los anti-patrones nos alertan acerca de qué evitar hacer, y nos enseñan que en ocasiones, una aparente solución es un problema más grave disfrazado. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 13. Servicios Web “... (U)n sistema de software diseñado para permitir la interacción interoperable de máquina-a-máquina en una red. Tiene una interfaz descrita en formato procesable-por-máquina ... Otros sistemas interaccionan con el Servicio Web de la manera prescrita en su descripción ... usando HTTP con serialización XML ...” Definición del W3C Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 14. Protocolos de Servicios Web SOAP: ● Puede usar múltiples medios de transporte: SMTP, HTTP/HTTPS, etc. ● Usa XML como formato del mensaje. ● Puede combinar múltiples estándares que abarcan otras facetas: seguridad, confiabilidad, transacciones, etc. ● Es flexible, extensible, y complejo. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 15. Protocolos de Servicios Web XML-RPC: ● Usa HTTP como transporte (no es común que use HTTPS) ● Usa XML como formato del mensaje, y describe formas de codificar datos. ● Es una implementación en XML de una llamada remota a procedimiento. ● Es simple, pero inflexible. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 16. Protocolos de Servicios Web REST: ● Es más un estilo de arquitectura de sistemas que un protocolo per se. ● Es la Web, con recursos abstraídos en URLs, y acciones en operaciones de HTTP (GET, POST, PUT, DELETE) ● Es escalable, simple, y robusto, y es algo que ya sabemos cómo hacer. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 17. REST y AOS ● En principio una AOS puede ser (y ha sido) implementada usando diferentes tecnologías. ● Los Servicios Web con todas sus ventajas son una excelente forma de implementar una AOS. ● Y, por supuesto, REST es la forma de hacerlo bien y en forma simple. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 18. Anatomía de un patrón de diseño Generalmente se describen usando: ● Un nombre descriptivo. ● Una descripción corta que incluye la intención (el objetivo del mismo y la razón de su uso) y su aplicabilidad (el contexto de uso). ● Las consecuencias de su uso. ● Descripción de cómo implementarlo. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 19. Patrones a discutir ● Búsqueda asincrónica (Asynchronous query) ● Servicios de fachada (Facade services) ● Envoltura para lo anticuado (Legacy wrapper) Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 20. Búsqueda asincrónica Intención: ● Permitir que se puedan realizar búsquedas o procesos de larga duración, sin impactar en forma negativa en el funcionamiento de quienes usen el servicio. ● Tratar de reducir el problema de agotamiento de tiempo y bloqueo de recursos. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 21. Búsqueda asincrónica Consecuencias: ● No hay un tiempo precisamente determinado para obtener la respuesta. ● El cliente del servicio tiene que implementar la lógica de reintentar obtener la respuesta, hasta que ésta se encuentre disponible. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 22. Búsqueda asincrónica Implementación: ● El cliente envía un pedido de búsqueda al proveedor del servicio, el cual lo pone en una cola de proceso, y retorna un ID del pedido. ● Un proceso secundario ejecuta el pedido en cola, y al terminar, pone la respuesta en otra cola de mensajes. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 23. Búsqueda asincrónica Implementación: (cont.) ● El cliente le pide la respuesta al servicio. Si el servicio no la encuentra en la cola, le dice al cliente que regrese luego, de otro modo la saca de la cola de mensajes, y la entrega al cliente. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 24. Búsqueda asincrónica (Ejemplo) ● Vamos a generar un reporte de notas para alumnos y cursos. ● Usaremos REST para definir las URLs de búsqueda: ● http://[dominio]/notas/curso/[CURSOID] ● http://[dominio]/notas/cursos/[CURSOLISTA] ● http://[dominio]/notas/alumno/[ALUMID] ● http://[dominio]/notas/alumnos/[ALUMLISTA] Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 25. Búsqueda asincrónica (Ejemplo) ● Y definiremos: ● CURSOID: Identificador del curso, ej. Q0415 ● CURSOLISTA: Lista de cursos, ej. M0101,B0203 ● ALUMNID: Identificador del alumno, ej. 65782 ● ALUMNOLISTA: Lista de alumnos, ej. 34291,78239,12033 Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 26. Búsqueda asincrónica (Ejemplo) ● La estructura del URL nos da el tipo general de acción, los límites de la búsqueda y sus parámetros: /notas/alumno/05644 ● De esta manera el URL es único y explícito. ● Para nuestro ejemplo asumimos que usaremos sólo HTTP GET. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 27. Búsqueda asincrónica (Ejemplo) ● Al llamar una URL, el cliente recibe un identificador de búsqueda en XML: ➔ http://.../notas/alumno/30462 <notas> <id>12345678901234567890<id> <query>/alumno/30462</query> <result/> </notas> Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 28. Búsqueda asincrónica (Ejemplo) ● El servicio lo envía a ser procesado en una cola, y de ahí en adelante, el cliente se encargará de pedir el resultado usando el URL apropiado. ● Hay dos opciones de diseño: ● Un servicio de resultados general, que sólo use el ID para obtener la información. ● Uno específico al servicio inicial, usando una variante del URL original. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 29. Búsqueda asincrónica (Ejemplo) Usando un procesador genérico: ➔ http://.../resultados/[RESULTID] ● Nos permite unificar resultados de varios servicios, y no multiplicar innecesariamente los recursos. ● Pero, perdemos el contexto del servicio original, lo cual puede ser confuso para los usuarios. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 30. Búsqueda asincrónica (Ejemplo) Usando una variante del URL original: ➔ http://.../notas/resultado/[RESULTID] ● Nos permite conservar el contexto de la interacción, añadiendo sólo una nueva acción dentro del servicio. ● Podemos evitar duplicación de código delegando responsabilidades a un servicio interno. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 31. Búsqueda asincrónica (Ejemplo) El código que implemente el patrón no es complicado, se necesita: ● Código que implemente la recepción de búsquedas, y puesta en cola. ● Código para obtener la búsqueda de la cola, ejecutarla, y luego poner los resultados en cola. ● Código para obtener los resultados. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 32. Servicios de fachada Intención ● Permitir un acceso simplificado a un sistema con una interfaz compleja. ● Combinar en una, varias operaciones relacionadas en la API existente. ● Reducir el número de parámetros. ● Aislar cambios del sistema interno, y desacoplar el uso externo. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 33. Servicios de fachada Consecuencias ● Si bien simplifica el uso de una interfaz, puede llevar a complejidad en la lógica de implementación. ● Puede haber más de una forma de combinar interfaces, y no todas pueden ser óptimas. ● Impacta el rendimiento del servicio. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 34. Servicios de fachada Implementación ● Una capa que implementa el API del servicio que será visto por los clientes externos. ● Código específico que use las librerías o sistemas internos (con todas sus condiciones) para que se pueda cumplir la API simplificada del servicio. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 35. Envoltura para lo anticuado Intención ● Permitir el acceso a un sistema anticuado (legacy), a través de una tecnología o protocolo nuevo. ● Integrar sistemas heterogéneos existentes, dentro de una nueva arquitectura, sin necesidad de rehacer la funcionalidad. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 36. Envoltura para lo anticuado Consecuencias ● La “envoltura” tiene que encargarse de posibles trasformaciones de datos, para que el sistema anticuado pueda funcionar correctamente. ● Aumenta la vida útil del sistema anticuado, pero eso puede convertirse en un defecto grave en la evolución futura de la arquitectura. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 37. Envoltura para lo anticuado Implementación ● Una capa que exponga la API del sistema anticuado usando REST. ● Rutinas de transformación de datos de entrada y salida, para que funcionen con el sistema anticuado. ● Código para manejar los errores originados en el sistema anticuado. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 38. ¿Cómo hacemos el código? ● Podemos hacerlo “a mano”, implementando mapeos apropiados, y lógica de redirección. O ● Podemos usar librerías que hagan el manejo rutinario y concentrarnos en la funcionalidad a proveer. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 39. Tonic (tonic.sf.net) Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 40. Konstrukt (www.konstrukt.dk) Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 41. WSO2 WSF/PHP (wso2.org/projects/wsf/php) Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 42. WSO2 WSF/PHP ● Un proyecto de WSO2: herramientas y librerías para Servicios Web. ● Soporte para SOAP y WSDL, y una serie de estándares WS-*. ● Interoperable con otras implementaciones de SOAP. ● Soporte para REST, incluyendo mapeo específico de URIs. Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 43. Ideas finales ● Es posible hacer una AOS simple usando REST, y diseñándola bien. ● Los patrones comunes de diseño no son tan complicados, pero su implementación sí puede serla. ● Si entendemos el uso de REST y de patrones de diseño, podemos escribirlo en PHP (o cualquier otro lenguaje de programación). Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 44. Más información: Patrones ● Portland Pattern Repository: http://c2.com/cgi/wiki? PortlandPatternRepository ➔ Lean también el resto del sitio de Ward Cunninhgam (http://c2.com/) ● “Design Patterns: Elements of Reusable Object- Oriented Software” por Erich Gamma, Richard Helm, Ralph Johnson, y John Vlissides (ISBN: 0-201-63361-2) ● “The Timeless Way of Building” por Christopher Alexander (ISBN: 0195024028) Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 45. Más información: PHP, Servicios Web y AOS ● Do REST in PHP - PHP RESTful Data Services (http://www.dimuthu.org/blog/2008/09/18/do- rest-in-php-php-restful-data-services/) ● Why PHP Users should be Serious about SOA? (http://phpwebservices.blogspot.com/2008/01/w hy-php-uses-should-be-serious-about.html) ● Open Service Oriented Architecture (http://www.osoa.org/display/PHP/SOA+PHP+Ho mepage) ● Using PHP's SDO and SCA extensions (http://www.ibm.com/developerworks/web/librar y/ws-soa-scasdo/) Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 46. Más información: SOA, REST ● “RESTful Web Services” por Leonard Richardson y Sam Ruby (ISBN: 0-596-52926-0) ● “Basic SOA using REST” (http://www.webreference.com/programming/ba sic_soa/) ● SOA Pattern Catalog (http://www.soaprpc.com/patterns/soa_pattern_ catalog.html) ● SOA Patterns (http://www.soapatterns.org/) Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia
  • 47. ¡Gracias/Obrigado! A los organizadores del evento por la invitación y el entusiasmo. A todos ustedes por soportar mi “bla, bla, bla...”, sin dormirse. Jesús M. Castagnetto jmcastagnetto@php.net jesus@upch.edu.pe Jesús M. Castagnetto M., Ph.D. - Facultad de Ciencias y Filosofía, y Dirección Universitaria de Información, Universidad Peruana Cayetano Heredia