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

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

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

    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

    + Jesus CastagnettoJesus Castagnetto, 2 years ago

    custom

    2479 views, 0 favs, 2 embeds more stats

    More info about this document

    CC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike LicenseCC Attribution-NonCommercial-ShareAlike License

    Go to text version

    • Total Views 2479
      • 2455 on SlideShare
      • 24 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 73
    Most viewed embeds
    • 14 views on http://www.castagnetto.com
    • 10 views on http://www.castagnetto.org

    more

    All embeds
    • 14 views on http://www.castagnetto.com
    • 10 views on http://www.castagnetto.org

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories