Servicios Web y Arquitectura 4+1 Vistas M.C. Juan Carlos Olivares Rojas.

Post on 24-Jan-2016

216 views 0 download

Transcript of Servicios Web y Arquitectura 4+1 Vistas M.C. Juan Carlos Olivares Rojas.

Servicios Web y Arquitectura 4+1 Vistas

M.C. Juan Carlos Olivares Rojas

Arquitectura 4+1 Vistas• En esta arquitectura de desarrollo de

software un producto a ser desarrollado tiene 4 puntos de vistas dependiendo del tipo de personal involucrado en el proyecto.

• Las 4 vistas se concentran en el desarrollo de escenarios que describen el análisis y los requerimientos del sistema.

Arquitectura 4+1 Vistas

Vista Lógica Vista de Desarrollo

Vista del Proceso Vista Física

Escenarios

Arquitectos Desarrolladores

Integradores Ingenieros deInfraestructura

Analistas Del

Negocio

Vista Lógica• Se maneja el estilo arquitectónico de la

aplicación:– Orientado a objeto– Basado en Componentes– Basado en servicios

• La implementación de esta vista utiliza generalmente patrones arquitectónicos como el MVC (Modelo-Vista-Controlador)

Modelo MVC

Vista de Desarrollo• Define los módulos de software ha ser

construidos.

• Se deben definir con claridad las interfaces de E/S de los módulos.

• La modularización de componentes depende del estilo arquitectónico seleccionado en la vista lógica

Vista Física• Mapea los componentes de software con

el hardware (fase de despliegue)

• Un buen diseño promueve la flexibilidad de mapear componentes de software con diferentes confiuraciones físicas dentro de las diferentes fases del ciclo de vida del software.

• La vista de proceso está relacionada en la forma de darle seguimiento, control y dirección a las etapas del desarrollo del producto.

Escenarios• Son abstracciones de los requerimientos

más importantes.

• Están estrechamente relacionados con el uso de casos de uso

• La vista del escenario es redundante entre las otras vistas.

9

La nueva arquitectura 4+1 SOA

Estructural Empaquetado/Implementación

Comportamiento Infraestructura/Entorno

Requerimientos, Pruebas/Criterios de Validación

Contratos de Servicios

Clases y Componentesque representan el servicio

Flujos de trabajo que muestranla forma de trabajo de una unidadorganizativa guiada por procesosde negocios

Interfaz del Servicio

Despliegue en .NET o J2EE considerando aspectos como laseguridad y el rendimiento

Modelo de servicios Web

Servicios SOServicios SOServicios SOServicios SO

BrowsersBrowsersestándarestándar

BrowsersBrowsersestándarestándar

DispositivosDispositivosmóvilesmóviles

DispositivosDispositivosmóvilesmóviles

ClientesClientesricosricos

ClientesClientesricosricos

Lógica aplicaciónLógica aplicaciónLógica aplicaciónLógica aplicación

Servicios WebServicios WebServicios WebServicios Web

OtrosOtrosserviciosservicios

OtrosOtrosserviciosservicios

Formularios WebFormularios WebFormularios WebFormularios Web

XMLXML

Servicios Web• Los servicios Web van de la mano de las

tecnologías XML.

• XML nos sirve para estandarizar el marshalling de los datos.

• Utilizar la Web nos permite tener un puerto no bloqueando por Firewall

Servicios Web

• Son la invocación de código remoto utilizando protocolos estandarizados.

• En conclusión, realizan la misma función que los sockets, RPC, RMI, Corba y demás tecnologías distribuidas.

• Se puede ver a los servicios Web como una analogía de un procedimiento almacenado en una base de datos.

¿Qué son los Servicios Web?• "A Web service is a software system designed

to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP-messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards."

Definición de SW• La aplicación que actúa como cliente

debe conocer:–La URL del servidor remoto que ofrece

el servicio, –El nombre del servicio que se solicita, y –Los parámetros que se deben enviar

junto con la llamada al servicio.

• Estos datos se enviarán mediante HTTP

Definición de SW• El servidor que ofrece el servicio web

leerá los parámetros que se le han enviado, llamará a un componente o programa encargado de implementar el servicio, y los resultados que se obtengan de su ejecución serán devueltos al servidor que solicitó la ejecución del servicio.

Servicios Web• Un servicio Web no es un XML RPC como

tal, se diferencia en la forma en que trabajan.

• Los servicios Web forman la base de la arquitectura orientada a servicios (SOA)

• Los servicio Web utilizan generalmente el método POST de HTTP para enviar los datos de la invocación del servicio.

SOA (Arquitectura Orientada a Servicios)

Proveedor de Servicios

Registro de Servicios Solicitante de Servicio

PublicarPublicar ConectarConectar

EncontrarEncontrar

ClienteClienteDescripciónDescripción

ServicioServicio

Arquitectura de Servicios Web

Proveedor del Servicio

Consumidor el Servicio

Directorio de Servicios

Publicación del Servicio

Descubrimiento del Servicio

Invocación y respuesta

1

3

2

UDDI

4

SOAP

Definición del Servicio

WSDL

Servicios Web• Los datos viajan envueltos en un protocolo

llamado SOAP (Simple Object Access Protcol) que hace el marshalling de los datos.

• Una de las principales características que tienen los servicios Web radica en su ubicuidad, ya que pueden ser accedidos desde cualquier sitio, utilizando inclusive cualquier otro protocolo de transporte SMTP, FTP, etc.

SOAP• Indica cómo se deben codificar los

mensajes que circularán entre las dos aplicaciones.

• SOAP define dos modelos de mensajes:– Un mensaje de solicitud.– Un mensaje de respuesta.

Mensaje de solicitud<?xml version="1.0" encoding="UTF-8" ?><SOAP-ENV:Envelope

xmlns:SOAP-ENV=”http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Header> </SOAP-ENV:Header> <SOAP-ENV:Body>

<catalogo:buscaIsbn xmlns:catalogo="http://catalogo.org/cat">

<catalogo:isbn>84-4553-3334-2X

</catalogo:isbn> </catalogo:buscaIsbn>

</SOAP-ENV:Body></SOAP-ENV:Envelope>

Mensaje de respuesta<?xml version="1.0" encoding="UTF-8" ?><SOAP-ENV:Envelope

xmlns:SOAP-ENV=”http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Header> </SOAP-ENV:Header> <SOAP-ENV:Body>

<catalogo:buscaIsbnResponse xmlns:catalogo="http://catalogo.org/cat">

<catalogo:titulo>Catalogar materiales especiales

</catalogo:titulo> <catalogo:autor>Marta de Juanes</catalogo:autor> </catalogo:buscaIsbnResponse>

</SOAP-ENV:Body></SOAP-ENV:Envelope>

Servicios Web• Los servicios Web necesitan ser descritos (saber

que parámetros reciben, devuelven) para poderlos utilizar en diversos clientes. Esta descripción se realiza a través de WSDL (Web Service Definition Language).

• Generalmente esas descripciones los clientes las conocen o bien, puede descubrirlas haciendo uso de UDDI (Universal Description, Discovery and Integration).

Servicios Web• La UDDI no es otra cosa que un

repositorio en donde se almacenan servicios Web que pueden ser invocados por diversos clientes.

• Muchas empresas ofrecen servicios Web como amazon, google, http://www.xmethods.com

¿Por qué utilizar Servicios Web?

• Múltiples tecnologías para hacer lo mismo: – No interoperables entre sí.

– Ligados a una plataforma.

DCOM CORBA

RPC IIOP

NDR CDR

IDL OMG IDL

Protocolo

Formato del mensaje

Descripción

Windows Registry Naming ServiceDescubrimiento

Java RMI

IIOP or JRMP

Java Ser. Format

Java

RMI Registry or JNDI

Pila de protocolos de SW

• Redefinición de toda la pila de comunicaciones– Basado en tecnologías estándares

Servicio web

HTTP

SOAP

WSDL

Protocolo

Formato del mensaje

Descripción

UDDIDescubrimiento

Ventajas de los Servicios Web• Basados en estándares.

– Fácil integración.

• Desarrollo de actividades modularizadas.

• Independencia de plataforma.

• Puede ser usado tanto en clientes ligeros como pesados (clientes heterogéneos).

Desventajas de los Servicios Web

• Es que no son seguros...

• Es que no tienen estado...

• Es que no son transaccionales...

• “Los servicios Web no hacen más que reinventar la rueda, pero esta vez usando XML”.

Protocolos Servicios Web

Comunicaciones ubicuasComunicaciones ubicuas: Internet: Internet

Formato de datosFormato de datos universal: universal: XMLXML

Interacción de servicios:Interacción de servicios: SOAPSOAP

Publicar, buscar serviciosPublicar, buscar servicios: UDDI: UDDI

Descripción de servicios:Descripción de servicios: WSDLWSDL

Creando Servicios Web• Los servicios Web XML se exponen en el

Framework .NET como archivos con una extensión .asmx.

• Los servicios se pueden consumir a través de páginas Web, clientes ligeros en una PC o clientes inteligentes en dispositivos móviles.

Hola mundo!!!<%@ WebService Language="C#“

class="Helloweb" %>using System.Web.Services;[WebService

(Namespace="http://sybex.com/webservices")]public class Helloweb: WebService{[WebMethod]public string HelloWebService() {return "Holla Mundo!";}

Otro servicio Web<%@ WebService Language="C#" class="Fibonacci" %>using System.Web.Services;public class Fibonacci : WebService{[WebMethod]public int GetSeqNumber(int fibIndex){if (fibIndex < 2)return fibIndex;int[] FibArray = {0,1};for (int i = 1; i< fibIndex; i++){FibArray[1] = FibArray[0] + FibArray[1];FibArray[0] = FibArray[1] - FibArray[0];}return FibArray[1];}}

Cliente del serviciousing System;

class ClienteFecha{

public static void Main(){

ServicioFecha s = new ServicioFecha();

Console.WriteLine(“Fecha actual: {0}”, s.Fecha(false));Console.WriteLine(“Fecha actual detallada: {0}”,

s.Fecha(true));}

}

Cliente de servicio Web Windows C# .NET

Agregar referencia Web

Cliente de servicio Web en una Pocket PC

Página Web del Servicio HelloWorld

Respuesta del servicio Web par

Página Web del Servicio 1

WSDL del servicio Web 1

Ejecución del servicio Web suma

Ejecución del servicio Web par

Crear proxy del servicio Web

Servicios Web• Ejemplo de archivo WSDL de amazon

• <operation name=“AuthorSearchRequest”/>

• <input message=“typens:AuthorSearchRequest”/>

• <output message=“typens:AuthorSearchResponse”>

• </operation> ….

Servicios WebLos tipos de datos se definen en otra parte

<xsd:complexType name=“AuthorRequest”> <xsd:all> <xsd:element name=“autor”

type=“xsd:string”/><xsd:element name=“sort” type=“xsd:string”

minOccurs=“0”/> </xsd:all></xsd:complexType>

Servicios Web• Cuando se traduce a Java queda:

public class AuthorRequest {public AuthorRequest(String author, String

page, String mode, String tag, String sort, String locale, String word, String price) {…}

public String getAuthor() {…}public String getPage() {…} ….}

Servicios WebPara ejecutar el servicio se utiliza:

AmazonSearchPort puerto = (AmazonSearchPort) (new AmazonSearchService_Impl().getAmazonSearchPort());

AuthorRequest solicitud = new AuthorRequest(name, “1”, books, “”, “lite”, “”, token, “”, “”, “”);

ProductInfo res= puerto.autorSearchRequest(solicitud);

Servicios Web• Se ocupa en las versiones viejas el JWSDP

(Java Web Service Developer Pack)

• Se necesita un archivo config.xml

<?xml version=“1.0” encoding=“UTF-8”?><configuration xmlns=

http://java.sun.com/xml/ns/jax-rpc/ri/config>

Servicios Web• <wsdl location=

“http://soap.amazon.com/schemas3/AmazonWebServices.wsdl” packageName=“com.amazon” />

• </configuration>

• wscompile –import config.xml• wscompile –gen –keep config.xml

Tarea• Próximo Jueves:

• Presentación sobre diferencias entre arquitecturas WOA, Clound Computing y Software as a Service.

• Repaso de metodologías ágiles.

¿Preguntas?