SlideShare uma empresa Scribd logo
1 de 61
Programador PHP.ORG – Juan Belón
   Composición de servicios Web:
        “Battlestar Galactica”

para el Curso de Arquitectura de Servicios
en Java en comunicación con PHP
¿Qué vamos a aprender?
  o Composición de servicios web para obtener un
    funcionamiento complejo
      Invocaciones de los servicios Web para construir flujo de
       trabajo en servidor.
         Cloud computing → Procesamiento distribuido
El modelo de datos
El modelo de datos
     El objeto Elemento nos permite poder atacar a todos los
     objetos del modelo ya que están todos referenciados por
     un identificador
     En universo están todas las galaxias
     Las estrellas de combate están en las galaxias
     Los vipers necesitan pilotos para volar
     Los pilotos pueden estar inactivos
¿Que vamos a hacer?
  o Vamos a envolver el modelo con una capa de integración
    de servicios para
      Crear una estrella de combate
      Preparar una estrella de combate, para un enfrentamiento
       entre “vipers” (para los no profanos como yo, “cazas”)
      Lanzar los vipers al combate.
      Conocer el estado de las estrellas de combate después del
       enfrentamiento 1.
Creamos el proyecto web
  o Lo llamamos “BattlestarGalacticaWeb”
      Creamos un paquete nuevo para contener los servicios
         es.ugr.cursows.battlestar.service
      Añadimos la referencia al modelo
AstilleroService
  o La clase “EstrellaDeCombate” posee 2 métodos para
    crear estrellas de combate
      SalirDelAstillero() → Crea una nueva estrella de combate en
      la galaxia “Andromeda” llamada “Galactica”
     SalirDelAstillero(String nombre) → Crea una nueva estrella
     de combate llamada como el parámetro “nombre” en
   Galaxia
AstilleroService (2)
  o Creamos el servicio web: “AstilleroService”
      Creamos la operación nuevaEstrellaDeCombate
         Parámetro de entrada: ninguno
         Salida: Estrella de combate
      Creamos la operación nuevaEstrellaDeCombateNombrada
         Parámetro de entrada:
           String nombre
         Salida:
           Estrella de combate
AstilleroService (3)
Creamos el cliente
o Creamos un nuevo proyecto java, lo llamamos
  BattlestarGalacticaClient
    Creamos un nuevo “package”
       es.ugr.cursows.battlestar.client
    Añadimos como dependencia el modelo
    Registramos el servicio Astillero
     previamente creado como aprendimos
     en la lección anterior
Astillero
 o Creamos la clase Astillero en
   es.ugr.cursows.battlestar.client
 o La clase astillero será un cliente de AstilleroService por lo
   que tendrá dos métodos equivalente a las operaciones de
   AstilleroService
     nuevaEstrellaDeCombate
     nuevaEstrellaDeCombateNombrada
Astillero (2)
       Creamos un test (Junit) para probar nuestro Astillero
       En “Test packges” creamos un “package”
    es.ugr.cursows.test.battlestar.client
       Sobre este nuevo “package” creamos un nuevo Junit
    llamado “TestAstillero”
       Añadimos dos test (recordad que un test es un método que está
    precedido por @Test)
           NuevaEstrella
           NuevaEstrellaNombrada
Astillero (3)
Astillero (4)
  Los resultados
EstrellaDeCombateService
  o Vamos a hacer un servicio que nos permita manejar la
    estrella de combate del servidor.
      Obtener vipers
      Obtener vipers preparadas
      Obtener pilotos
      Obtener pilotos activos
      Preparar viper
      Lanzar Vipers
EstrellaDeCombateService
  o Volvemos al proyecto BattlestarGalacticaWeb
  o Creamos un nuevo servicio web para controlar las
    estrellas de combate.
      Lo llamamos EstrellaDeCombateService
  o Creamos una nueva operación para cada una de las
    necesidades vista en la transparencia anterior
      Todos los métodos empiezan en por buscar la estrella de
       combate solicitada.
EstrellaDeCombateService (2)
   Obtener pilotos
EstrellaDeCombateService (3)
     Obtener pilotos Activos
EstrellaDeCombateService (4)
     Obtener vipers
EstrellaDeCombateService (5)
     Obtener Vipers preparados
EstrellaDeCombateService (6)
     Preparar un viper
EstrellaDeCombateService (7)
     Lanzar el escuadrón de vipers preparados
ComputadoraDeCombateService
  o Hemos creado un servicio Web para crear estrellas de
    combate que serán nuestros almacenes de vipers.
  o Hemos creado un servicio Web para gestionar cada una
    de estos almacenes de vipers las “Estrellas de combate”
  o Ahora vamos a crear un servicio web que nos permita
    decidir un combate entre dos escuadrones de una estrella
    de combate:
      Creamos un nuevo servicio web llamado
      CalculadorDeCombateService que será la interfaz del objeto
      “ComputadoraDeCombate”
CalculadorDeCombateService (2)
  o Posee una única operación
      Combate
         Parámetros de entrada
           o Listado de vipers. Escuadrón Rojo
           o Listado de vipers. Escuadrón Azul
         Parámetro de salida
           o InformeDeCombate. Objeto que describe que es lo que ha
             sucedido en un combate
CalculadorDeCombateService (3)
     El combate:
Todo listo en el servidor
 Una vez completados los 3 servicios web el modelo de
 battlestar galactica y su simulación de combate está lista para
 ser usada por un cliente.
Cliente
  o Creamos un proyecto java.
      En mi caso BattlestarClient
  o Creamos un “package” en “source packge” donde
    crearemos nuestras clases clientes.
      es.ugr.cursows.battlestar.client
  o Creamos un “package” en “Test packge” donde creamos
    los test de los cliente.
      es.ugr.cursows.test.battlestar.client
Registramos los servicios
  o Como aprendimos anteriormente, vamos a registrar los 3
    servicios Web que hemos realizado.
      AstilleroService
       EstrellaDeCombateService
       ComputadoraDeCombateService
  o El proyecto debe quedar así:
Astillero
       Creamos una clase Astillero en
       “es.ugr.cursows.battlestar.client” que será nuestra interfaz
    hacia el servicio web “AstilleroService”
Astillero (2)
        Creamos un método por cada una de las operaciones de
  construcción de Estrellas de combate.
    Recordad que para añadir el código de llamada solo debéis arrastrar
    la definición de la “operación” que encontráis en
    “Web services references”
Astillero (3)
      nuevaEstrellaDeCombate
Astillero (4)
      NuevaEstrellaDeCombateNombrada
Astillero (5)
        Construimos un Junit en
  “es.ugr.cursows.test.battlestar.client” llamado TestAstillero para
  probar los métodos de Astillero
Lanzamos los test
 A lanzar los test deben ser creadas dos nuevas estrellas
 de combate. “Galactica” creada por el método
 nuevaEstrella de combate y “Pegasus” que es el nombre
 escogido para el método
 nuevaEstrellaDeCombateNombrada.
CentroDeControlEstrellaDeCombate
        Creamos una clase CentroDeControlEstrellaDeCombate
 en “es.ugr.cursows.battlestar.client” que será nuestra
 interfaz hacia el servicio web “EstrellaDeCombateService”
CentroDeControlEstrellaDeCombate (2)
        Creamos un método por cada operación que hemos
 definido en el servidor. Con lo que tendremos:
          getPilotos
          getPilotosActivos
          getVipers
          getVipersPreparadas
          prepararViper
          lanzarEscuadron
          Combate *Incorporada del servicio ComputadorDeCombate”
CentroDeControlEstrellaDeCombate (3)
     GetPilotos
CentroDeControlEstrellaDeCombate (4)
     getPilotosActivos
CentroDeControlEstrellaDeCombate (5)
     getVipers
CentroDeControlEstrellaDeCombate (6)
     getVipersPreparadas
CentroDeControlEstrellaDeCombate (7)
     prepararViper
CentroDeControlEstrellaDeCombate (8)
     lanzarEscuadron
CentroDeControlEstrellaDeCombate (9)
 Combate: Preparar los parámetros de entrada
CentroDeControlEstrellaDeCombate (10)
       Combate
   Devolver el resultado
CentroDeControlEstrellaDeCombate (11)

          Construimos un Junit llamado “TestCentroDeControl” en
 “es.ugr.cursows.test.battlestar.client” para probar el
 cliente.
       Creamos un test por cada método de la clase
    CentroDeControlEstrellaDeCombate.
 NOTA IMPORTANTE:
    Cada vez que modifiquemos el servidor se “redespliege” y limpia su
    memoria de ejecución por lo que el identificador 4
    de estrella de combate se pierde. Para recuperar este identificador
    solo tenemos que volver a lanzar TestAstillero
CentroDeControlEstrellaDeCombate (12)

     Test de getPilotos
CentroDeControlEstrellaDeCombate (13)

     Test de getPilotosActivos
CentroDeControlEstrellaDeCombate (14)

     Test de getVippers
CentroDeControlEstrellaDeCombate (15)

     Test de getVipersPreparadas
CentroDeControlEstrellaDeCombate (16)

     Test de prepararViper
CentroDeControlEstrellaDeCombate (17)

     Test de lanzarEscuadron
Composición de servicios

  Una vez todos nuestro servicios y clientes han sido
 implementados y probados podemos construir un cliente
 que a partir de la composición de estos servicios realice
 un trabajo.
    En nuestro caso mostrar un listado de la resolución de un
    combate entre cazas
Composición de servicios (2)

      El pseudo código de nuestra composición será:
      Crear las estrellas de combate
      Solicitar un listado de sus vipers
      Preparar las vipers hasta que nos quedemos sin pilotos o
      sin vipers
      Lanzar las vipers ← Se marcan como que están en el aire
      Procesar el combate de vipers
Composición de servicios (2)
 Contruimos un nuevo Junit al que llamaremos
 TestBattleStar en “es.ugr.cursows.test.battlestar.client”
 Sobre su un Test llamado testBattlestarGalactica
 realizaremos la composición de servicios
Composición de servicios (3)
        Creamos los clientes con los que invocaremos al servicio:




 Creamos las estrellas de combate en el servidor haciendo uso del
 Astillero
Composición de servicios (4)
        Solicitamos los vipers de las estrellas de combate, y
 preparamos todos los vipers posibles
Composición de servicios (5)
     Lanzamos los vipers preparados para el combate
Composición de servicios (6)
         Y por último, teniendo la escuadras preparadas invocamos
 a la computadora de combate para conocer el desenlace
Composición de servicios (7)
        Tras la ejecución de este test todos lo métodos son
 invocados y su composición constituye la resolución del
 combate
Composición de servicios (5)
 Lanzamos los vipers preparados para el combate
Comprueba que todo funciona
Asegúrate de que funcionan los servicios ya que los vamos a
utilizar para la próxima lección en la que realizaremos una
orquestación de los mismos combinándolos para crear
operaciones mediante un flujo complejo de información
usando BPEL.

                http://programadorphp.org

Mais conteúdo relacionado

Semelhante a Composicion de servicios web, un ejemplo

Semelhante a Composicion de servicios web, un ejemplo (20)

Ebook tutorialspringbootheroku
Ebook tutorialspringbootherokuEbook tutorialspringbootheroku
Ebook tutorialspringbootheroku
 
Presentacion de la práctica de Ajax 2016
Presentacion de la práctica de Ajax 2016Presentacion de la práctica de Ajax 2016
Presentacion de la práctica de Ajax 2016
 
C# Nuevas características en C# 6
C# Nuevas características en C# 6C# Nuevas características en C# 6
C# Nuevas características en C# 6
 
NameSpace
NameSpaceNameSpace
NameSpace
 
Socket
SocketSocket
Socket
 
Computación 3
Computación 3Computación 3
Computación 3
 
CONECTAR C# CON POSTGRESQL USANDO NPGSQL 2.0.11
CONECTAR  C# CON POSTGRESQL  USANDO NPGSQL 2.0.11CONECTAR  C# CON POSTGRESQL  USANDO NPGSQL 2.0.11
CONECTAR C# CON POSTGRESQL USANDO NPGSQL 2.0.11
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Cache del Contenedor de Symfony
Cache del Contenedor de SymfonyCache del Contenedor de Symfony
Cache del Contenedor de Symfony
 
ESPACIO DE NOMBRES SYSTEM.DATA.SQLCLIENT
ESPACIO DE NOMBRES SYSTEM.DATA.SQLCLIENTESPACIO DE NOMBRES SYSTEM.DATA.SQLCLIENT
ESPACIO DE NOMBRES SYSTEM.DATA.SQLCLIENT
 
Presentacion servlets
Presentacion servletsPresentacion servlets
Presentacion servlets
 
As3 unidad 12 cinematica inversa
As3 unidad 12 cinematica inversaAs3 unidad 12 cinematica inversa
As3 unidad 12 cinematica inversa
 
Computación 3
Computación 3Computación 3
Computación 3
 
GWT - Una introducción
GWT - Una introducciónGWT - Una introducción
GWT - Una introducción
 
Unit Testing - Trovit
Unit Testing - TrovitUnit Testing - Trovit
Unit Testing - Trovit
 
TDD: ¿Cómo escribir código testeable?
TDD: ¿Cómo escribir código testeable?TDD: ¿Cómo escribir código testeable?
TDD: ¿Cómo escribir código testeable?
 
Tema 9 aplicaciones de dos capas por gio
Tema 9   aplicaciones de dos capas por gioTema 9   aplicaciones de dos capas por gio
Tema 9 aplicaciones de dos capas por gio
 

Mais de Juan Belón Pérez

Aplicaciones y juegos para móbiles 2011: iOS, Android, Bada, Palm
Aplicaciones y juegos para móbiles 2011: iOS, Android, Bada, PalmAplicaciones y juegos para móbiles 2011: iOS, Android, Bada, Palm
Aplicaciones y juegos para móbiles 2011: iOS, Android, Bada, PalmJuan Belón Pérez
 
Yahoo! pipes + Wordpress plugin - RSS POWER to your blog
Yahoo! pipes + Wordpress plugin - RSS POWER to your blogYahoo! pipes + Wordpress plugin - RSS POWER to your blog
Yahoo! pipes + Wordpress plugin - RSS POWER to your blogJuan Belón Pérez
 
Proyecto Campos Electricos - Programador Servicios 3d
Proyecto Campos Electricos - Programador Servicios 3dProyecto Campos Electricos - Programador Servicios 3d
Proyecto Campos Electricos - Programador Servicios 3dJuan Belón Pérez
 
Aecem - Libro Blanco - Para Programador Php.org
Aecem - Libro Blanco  - Para Programador Php.orgAecem - Libro Blanco  - Para Programador Php.org
Aecem - Libro Blanco - Para Programador Php.orgJuan Belón Pérez
 
Memoria Zenphp - Programador PHP
Memoria Zenphp - Programador PHPMemoria Zenphp - Programador PHP
Memoria Zenphp - Programador PHPJuan Belón Pérez
 
Depurando Java Script - Programador PHP
Depurando Java Script - Programador PHPDepurando Java Script - Programador PHP
Depurando Java Script - Programador PHPJuan Belón Pérez
 
Zenphp - Presentación de Septiembre en la Etsiit - Programador PHP
Zenphp - Presentación de Septiembre en la Etsiit - Programador PHPZenphp - Presentación de Septiembre en la Etsiit - Programador PHP
Zenphp - Presentación de Septiembre en la Etsiit - Programador PHPJuan Belón Pérez
 
Tutorial A Z A - Programador PHP
Tutorial A Z A - Programador PHPTutorial A Z A - Programador PHP
Tutorial A Z A - Programador PHPJuan Belón Pérez
 
Ensayo Cientifico - Programador PHP
Ensayo Cientifico - Programador PHPEnsayo Cientifico - Programador PHP
Ensayo Cientifico - Programador PHPJuan Belón Pérez
 
Zen Scaffolding - Programador PHP
Zen Scaffolding - Programador PHPZen Scaffolding - Programador PHP
Zen Scaffolding - Programador PHPJuan Belón Pérez
 
Rendimiento Java Script - Programador PHP
Rendimiento  Java Script - Programador PHPRendimiento  Java Script - Programador PHP
Rendimiento Java Script - Programador PHPJuan Belón Pérez
 
Bibliografia Y Menciones - Programador PHP
Bibliografia Y Menciones - Programador PHPBibliografia Y Menciones - Programador PHP
Bibliografia Y Menciones - Programador PHPJuan Belón Pérez
 
Tutorial MVC - Zenphp - Programador PHP
Tutorial MVC - Zenphp - Programador PHPTutorial MVC - Zenphp - Programador PHP
Tutorial MVC - Zenphp - Programador PHPJuan Belón Pérez
 
Aceleradores PHP Final - Programador PHP
Aceleradores PHP Final - Programador PHPAceleradores PHP Final - Programador PHP
Aceleradores PHP Final - Programador PHPJuan Belón Pérez
 

Mais de Juan Belón Pérez (20)

Aplicaciones y juegos para móbiles 2011: iOS, Android, Bada, Palm
Aplicaciones y juegos para móbiles 2011: iOS, Android, Bada, PalmAplicaciones y juegos para móbiles 2011: iOS, Android, Bada, Palm
Aplicaciones y juegos para móbiles 2011: iOS, Android, Bada, Palm
 
¿Cómo elegir servidor web?
¿Cómo elegir servidor web?¿Cómo elegir servidor web?
¿Cómo elegir servidor web?
 
Yahoo! pipes + Wordpress plugin - RSS POWER to your blog
Yahoo! pipes + Wordpress plugin - RSS POWER to your blogYahoo! pipes + Wordpress plugin - RSS POWER to your blog
Yahoo! pipes + Wordpress plugin - RSS POWER to your blog
 
Proyecto Campos Electricos - Programador Servicios 3d
Proyecto Campos Electricos - Programador Servicios 3dProyecto Campos Electricos - Programador Servicios 3d
Proyecto Campos Electricos - Programador Servicios 3d
 
Aecem - Libro Blanco - Para Programador Php.org
Aecem - Libro Blanco  - Para Programador Php.orgAecem - Libro Blanco  - Para Programador Php.org
Aecem - Libro Blanco - Para Programador Php.org
 
Presentación: xUnit y Junit
Presentación: xUnit y JunitPresentación: xUnit y Junit
Presentación: xUnit y Junit
 
Cómo elegir un servidor Web
Cómo elegir un servidor WebCómo elegir un servidor Web
Cómo elegir un servidor Web
 
Memoria Zenphp - Programador PHP
Memoria Zenphp - Programador PHPMemoria Zenphp - Programador PHP
Memoria Zenphp - Programador PHP
 
Depurando Java Script - Programador PHP
Depurando Java Script - Programador PHPDepurando Java Script - Programador PHP
Depurando Java Script - Programador PHP
 
Zenphp - Presentación de Septiembre en la Etsiit - Programador PHP
Zenphp - Presentación de Septiembre en la Etsiit - Programador PHPZenphp - Presentación de Septiembre en la Etsiit - Programador PHP
Zenphp - Presentación de Septiembre en la Etsiit - Programador PHP
 
Zenphp - Programador PHP
Zenphp - Programador PHPZenphp - Programador PHP
Zenphp - Programador PHP
 
Tutorial A Z A - Programador PHP
Tutorial A Z A - Programador PHPTutorial A Z A - Programador PHP
Tutorial A Z A - Programador PHP
 
Ensayo Cientifico - Programador PHP
Ensayo Cientifico - Programador PHPEnsayo Cientifico - Programador PHP
Ensayo Cientifico - Programador PHP
 
Zen AJAX - Programador PHP
Zen AJAX - Programador PHPZen AJAX - Programador PHP
Zen AJAX - Programador PHP
 
Zen Scaffolding - Programador PHP
Zen Scaffolding - Programador PHPZen Scaffolding - Programador PHP
Zen Scaffolding - Programador PHP
 
Rendimiento Java Script - Programador PHP
Rendimiento  Java Script - Programador PHPRendimiento  Java Script - Programador PHP
Rendimiento Java Script - Programador PHP
 
Bibliografia Y Menciones - Programador PHP
Bibliografia Y Menciones - Programador PHPBibliografia Y Menciones - Programador PHP
Bibliografia Y Menciones - Programador PHP
 
Tutorial MVC - Zenphp - Programador PHP
Tutorial MVC - Zenphp - Programador PHPTutorial MVC - Zenphp - Programador PHP
Tutorial MVC - Zenphp - Programador PHP
 
M V C - Programador PHP
M V C - Programador PHPM V C - Programador PHP
M V C - Programador PHP
 
Aceleradores PHP Final - Programador PHP
Aceleradores PHP Final - Programador PHPAceleradores PHP Final - Programador PHP
Aceleradores PHP Final - Programador PHP
 

Último

Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptxolgakaterin
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfMaritzaRetamozoVera
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptxFelicitasAsuncionDia
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Carlos Muñoz
 
CLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfCLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfJonathanCovena1
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxzulyvero07
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
Éteres. Química Orgánica. Propiedades y reacciones
Éteres. Química Orgánica. Propiedades y reaccionesÉteres. Química Orgánica. Propiedades y reacciones
Éteres. Química Orgánica. Propiedades y reaccionesLauraColom3
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfNancyLoaa
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptxdeimerhdz21
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAEl Fortí
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfPaolaRopero2
 

Último (20)

Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
Ecosistemas Natural, Rural y urbano 2021.pptx
Ecosistemas Natural, Rural y urbano  2021.pptxEcosistemas Natural, Rural y urbano  2021.pptx
Ecosistemas Natural, Rural y urbano 2021.pptx
 
Medición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptxMedición del Movimiento Online 2024.pptx
Medición del Movimiento Online 2024.pptx
 
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdfEjercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
Ejercicios de PROBLEMAS PAEV 6 GRADO 2024.pdf
 
Registro Auxiliar - Primaria 2024 (1).pptx
Registro Auxiliar - Primaria  2024 (1).pptxRegistro Auxiliar - Primaria  2024 (1).pptx
Registro Auxiliar - Primaria 2024 (1).pptx
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
Plan Refuerzo Escolar 2024 para estudiantes con necesidades de Aprendizaje en...
 
CLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdfCLASE - La visión y misión organizacionales.pdf
CLASE - La visión y misión organizacionales.pdf
 
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptxACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
ACUERDO MINISTERIAL 078-ORGANISMOS ESCOLARES..pptx
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
Éteres. Química Orgánica. Propiedades y reacciones
Éteres. Química Orgánica. Propiedades y reaccionesÉteres. Química Orgánica. Propiedades y reacciones
Éteres. Química Orgánica. Propiedades y reacciones
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdf
 
Unidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la InvestigaciónUnidad 3 | Metodología de la Investigación
Unidad 3 | Metodología de la Investigación
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.Fe contra todo pronóstico. La fe es confianza.
Fe contra todo pronóstico. La fe es confianza.
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
INSTRUCCION PREPARATORIA DE TIRO .pptx
INSTRUCCION PREPARATORIA DE TIRO   .pptxINSTRUCCION PREPARATORIA DE TIRO   .pptx
INSTRUCCION PREPARATORIA DE TIRO .pptx
 
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURAFORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
FORTI-MAYO 2024.pdf.CIENCIA,EDUCACION,CULTURA
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
 

Composicion de servicios web, un ejemplo

  • 1. Programador PHP.ORG – Juan Belón Composición de servicios Web: “Battlestar Galactica” para el Curso de Arquitectura de Servicios en Java en comunicación con PHP
  • 2. ¿Qué vamos a aprender? o Composición de servicios web para obtener un funcionamiento complejo  Invocaciones de los servicios Web para construir flujo de trabajo en servidor.  Cloud computing → Procesamiento distribuido
  • 3. El modelo de datos
  • 4. El modelo de datos El objeto Elemento nos permite poder atacar a todos los objetos del modelo ya que están todos referenciados por un identificador En universo están todas las galaxias Las estrellas de combate están en las galaxias Los vipers necesitan pilotos para volar Los pilotos pueden estar inactivos
  • 5. ¿Que vamos a hacer? o Vamos a envolver el modelo con una capa de integración de servicios para  Crear una estrella de combate  Preparar una estrella de combate, para un enfrentamiento entre “vipers” (para los no profanos como yo, “cazas”)  Lanzar los vipers al combate.  Conocer el estado de las estrellas de combate después del enfrentamiento 1.
  • 6. Creamos el proyecto web o Lo llamamos “BattlestarGalacticaWeb”  Creamos un paquete nuevo para contener los servicios  es.ugr.cursows.battlestar.service  Añadimos la referencia al modelo
  • 7. AstilleroService o La clase “EstrellaDeCombate” posee 2 métodos para crear estrellas de combate  SalirDelAstillero() → Crea una nueva estrella de combate en  la galaxia “Andromeda” llamada “Galactica”  SalirDelAstillero(String nombre) → Crea una nueva estrella  de combate llamada como el parámetro “nombre” en Galaxia
  • 8. AstilleroService (2) o Creamos el servicio web: “AstilleroService”  Creamos la operación nuevaEstrellaDeCombate  Parámetro de entrada: ninguno  Salida: Estrella de combate  Creamos la operación nuevaEstrellaDeCombateNombrada  Parámetro de entrada: String nombre  Salida: Estrella de combate
  • 10. Creamos el cliente o Creamos un nuevo proyecto java, lo llamamos BattlestarGalacticaClient  Creamos un nuevo “package”  es.ugr.cursows.battlestar.client  Añadimos como dependencia el modelo  Registramos el servicio Astillero previamente creado como aprendimos en la lección anterior
  • 11. Astillero o Creamos la clase Astillero en es.ugr.cursows.battlestar.client o La clase astillero será un cliente de AstilleroService por lo que tendrá dos métodos equivalente a las operaciones de AstilleroService  nuevaEstrellaDeCombate  nuevaEstrellaDeCombateNombrada
  • 12. Astillero (2) Creamos un test (Junit) para probar nuestro Astillero En “Test packges” creamos un “package” es.ugr.cursows.test.battlestar.client Sobre este nuevo “package” creamos un nuevo Junit llamado “TestAstillero” Añadimos dos test (recordad que un test es un método que está precedido por @Test) NuevaEstrella NuevaEstrellaNombrada
  • 14. Astillero (4) Los resultados
  • 15. EstrellaDeCombateService o Vamos a hacer un servicio que nos permita manejar la estrella de combate del servidor.  Obtener vipers  Obtener vipers preparadas  Obtener pilotos  Obtener pilotos activos  Preparar viper  Lanzar Vipers
  • 16. EstrellaDeCombateService o Volvemos al proyecto BattlestarGalacticaWeb o Creamos un nuevo servicio web para controlar las estrellas de combate.  Lo llamamos EstrellaDeCombateService o Creamos una nueva operación para cada una de las necesidades vista en la transparencia anterior  Todos los métodos empiezan en por buscar la estrella de combate solicitada.
  • 17. EstrellaDeCombateService (2) Obtener pilotos
  • 18. EstrellaDeCombateService (3) Obtener pilotos Activos
  • 20. EstrellaDeCombateService (5) Obtener Vipers preparados
  • 21. EstrellaDeCombateService (6) Preparar un viper
  • 22. EstrellaDeCombateService (7) Lanzar el escuadrón de vipers preparados
  • 23. ComputadoraDeCombateService o Hemos creado un servicio Web para crear estrellas de combate que serán nuestros almacenes de vipers. o Hemos creado un servicio Web para gestionar cada una de estos almacenes de vipers las “Estrellas de combate” o Ahora vamos a crear un servicio web que nos permita decidir un combate entre dos escuadrones de una estrella de combate:  Creamos un nuevo servicio web llamado  CalculadorDeCombateService que será la interfaz del objeto  “ComputadoraDeCombate”
  • 24. CalculadorDeCombateService (2) o Posee una única operación  Combate  Parámetros de entrada o Listado de vipers. Escuadrón Rojo o Listado de vipers. Escuadrón Azul  Parámetro de salida o InformeDeCombate. Objeto que describe que es lo que ha sucedido en un combate
  • 26. Todo listo en el servidor Una vez completados los 3 servicios web el modelo de battlestar galactica y su simulación de combate está lista para ser usada por un cliente.
  • 27. Cliente o Creamos un proyecto java.  En mi caso BattlestarClient o Creamos un “package” en “source packge” donde crearemos nuestras clases clientes.  es.ugr.cursows.battlestar.client o Creamos un “package” en “Test packge” donde creamos los test de los cliente.  es.ugr.cursows.test.battlestar.client
  • 28. Registramos los servicios o Como aprendimos anteriormente, vamos a registrar los 3 servicios Web que hemos realizado.  AstilleroService EstrellaDeCombateService ComputadoraDeCombateService o El proyecto debe quedar así:
  • 29. Astillero Creamos una clase Astillero en “es.ugr.cursows.battlestar.client” que será nuestra interfaz hacia el servicio web “AstilleroService”
  • 30. Astillero (2) Creamos un método por cada una de las operaciones de construcción de Estrellas de combate. Recordad que para añadir el código de llamada solo debéis arrastrar la definición de la “operación” que encontráis en “Web services references”
  • 31. Astillero (3) nuevaEstrellaDeCombate
  • 32. Astillero (4) NuevaEstrellaDeCombateNombrada
  • 33. Astillero (5) Construimos un Junit en “es.ugr.cursows.test.battlestar.client” llamado TestAstillero para probar los métodos de Astillero
  • 34. Lanzamos los test A lanzar los test deben ser creadas dos nuevas estrellas de combate. “Galactica” creada por el método nuevaEstrella de combate y “Pegasus” que es el nombre escogido para el método nuevaEstrellaDeCombateNombrada.
  • 35. CentroDeControlEstrellaDeCombate Creamos una clase CentroDeControlEstrellaDeCombate en “es.ugr.cursows.battlestar.client” que será nuestra interfaz hacia el servicio web “EstrellaDeCombateService”
  • 36. CentroDeControlEstrellaDeCombate (2) Creamos un método por cada operación que hemos definido en el servidor. Con lo que tendremos: getPilotos getPilotosActivos getVipers getVipersPreparadas prepararViper lanzarEscuadron Combate *Incorporada del servicio ComputadorDeCombate”
  • 43. CentroDeControlEstrellaDeCombate (9) Combate: Preparar los parámetros de entrada
  • 44. CentroDeControlEstrellaDeCombate (10) Combate Devolver el resultado
  • 45. CentroDeControlEstrellaDeCombate (11) Construimos un Junit llamado “TestCentroDeControl” en “es.ugr.cursows.test.battlestar.client” para probar el cliente. Creamos un test por cada método de la clase CentroDeControlEstrellaDeCombate. NOTA IMPORTANTE: Cada vez que modifiquemos el servidor se “redespliege” y limpia su memoria de ejecución por lo que el identificador 4 de estrella de combate se pierde. Para recuperar este identificador solo tenemos que volver a lanzar TestAstillero
  • 47. CentroDeControlEstrellaDeCombate (13) Test de getPilotosActivos
  • 49. CentroDeControlEstrellaDeCombate (15) Test de getVipersPreparadas
  • 50. CentroDeControlEstrellaDeCombate (16) Test de prepararViper
  • 51. CentroDeControlEstrellaDeCombate (17) Test de lanzarEscuadron
  • 52. Composición de servicios Una vez todos nuestro servicios y clientes han sido implementados y probados podemos construir un cliente que a partir de la composición de estos servicios realice un trabajo. En nuestro caso mostrar un listado de la resolución de un combate entre cazas
  • 53. Composición de servicios (2) El pseudo código de nuestra composición será: Crear las estrellas de combate Solicitar un listado de sus vipers Preparar las vipers hasta que nos quedemos sin pilotos o sin vipers Lanzar las vipers ← Se marcan como que están en el aire Procesar el combate de vipers
  • 54. Composición de servicios (2) Contruimos un nuevo Junit al que llamaremos TestBattleStar en “es.ugr.cursows.test.battlestar.client” Sobre su un Test llamado testBattlestarGalactica realizaremos la composición de servicios
  • 55. Composición de servicios (3) Creamos los clientes con los que invocaremos al servicio: Creamos las estrellas de combate en el servidor haciendo uso del Astillero
  • 56. Composición de servicios (4) Solicitamos los vipers de las estrellas de combate, y preparamos todos los vipers posibles
  • 57. Composición de servicios (5) Lanzamos los vipers preparados para el combate
  • 58. Composición de servicios (6) Y por último, teniendo la escuadras preparadas invocamos a la computadora de combate para conocer el desenlace
  • 59. Composición de servicios (7) Tras la ejecución de este test todos lo métodos son invocados y su composición constituye la resolución del combate
  • 60. Composición de servicios (5) Lanzamos los vipers preparados para el combate
  • 61. Comprueba que todo funciona Asegúrate de que funcionan los servicios ya que los vamos a utilizar para la próxima lección en la que realizaremos una orquestación de los mismos combinándolos para crear operaciones mediante un flujo complejo de información usando BPEL. http://programadorphp.org