CONCEPTES AVANÇATS DE SISTEMES OPERATIUS Departament d Arquitectura de Computadors (Seminaris de CASO) Autors Alberto Guirao Rico Jesús Barahona Esteve Agenda Visión general Infraestructura Desarrollo de un servicio Web Invocación de un servicio Web Bibliografía 2 1
Visión general - Qué es un web Service? Definición: Es una unidad de lógica de aplicación que ofrece datos y servicios a otras aplicaciones. Cómo funciona? Las aplicaciones acceden a los servicios Web a través de estándares como HTTP, XML y SOAP. Independencia de cómo se haya implementado el servicio Web y acceso desde cualquier dispositivo. Servicios Web HTML, XML HTML, XML Servicios Web 3 Visión general - Escenario Otros servicios Web Internet + XML Servicios Web de tus socios Usuarios finales TuCompañia.com Capa de lógica de negocio de la aplicación Capa de acceso a datos y almacenamiento Otras aplicaciones 4 2
Visión general - Para qué sirven? Permiten interconectar Aplicaciones Diferentes clientes No sólo browsers Cualquier dispositivo PC, móvil, PDA,... Distribución de la lógica de la aplicación Permiten una Web programable No sólo puramente interactiva 5 Visión general - Qué aporta? Nuevas oportunidades empresariales: facilitan la comunicación con los socios. Ofrecen a los usuarios experiencias mucho más personalizadas e integradas, por medio de la nueva gama de dispositivos inteligentes. Reducen la duración del ciclo de creación. Ponen fácilmente sus propios servicios Web XML a disponibilidad de otros. 6 3
Visión general - Ejemplos E-commerce: venta de libros, música online y otros productos Seguimiento de mercancías: UPS, FedEx Parte meteorológico Consulta de mapas online TerraServer: TerraServer.Microsoft.Net Servicios web gratuitos en: www.xmethods.com 7 Agenda Visión general Infraestructura Desarrollo de un servicio Web Invocación de un servicio Web Bibliografía 8 4
Infraestructura - Tecnologías subyacentes Direcory: Publish & Find Services: Inspection: Find Services on server: Description: Formal Service Descriptions: Wire Format: Service Interactions: Universal Data Format: UDDI DISCO WSDL SOAP XML Communications: Internet Simple, Open, Broad Industry Support 9 Infraestructura - Tecnologías subyacentes XML (extensible Markup Language) Formato universal para documentos estructurados y datos en la Web administrado por W3C UDDI (Universal Description, Discovery and Integration) Servicio de directorio que permite publicar y/o describir servicios Web DISCO Permite encontrar servicios Web en un sitio dado WSDL (Web Service Description Language) Una gramática basada en XML que permite describir las capacidades de un servicio Web SOAP (Simple Object Access Protocol) Protocolo ligero para el intercambio de información en entornos distribuidos y descentralizados administrado por W3C 10 5
Infraestructura - Cómo acceder? Cliente del servicio Web Directory http://www.uddi.org Localiza un servicio Enlace al Discovery Document (XML) Inspection http://www.ibuyspy.com/ibuyspy.disco Pide un Discovery Document Devuelve el Discovery Document (XML) UDDI DISCO WSDL Description http://www.ibuyspy.com/ibuyspycs/instantorder.asmx?wsdl Pide una descripción del servicio Devuelve la descripción del servicio (XML) Wire Format Pide un servicio Devuelve la respuesta del servicio (XML) SOAP UDDI u otro servicio de directorio Servicio Web 11 Agenda Visión general Infraestructura Desarrollo de un servicio Web Invocación de un servicio Web Bibliografía 12 6
Desarrollo de un servicio Web - Introducción Tiene extensión.asmx Contiene código pero no la interficie de usuario Herramientas: Notepad Simplemente crear el archivo.asmx Visual Studio.NET Crear un proyecto ASP.NET Web Service Sun ONE y otras plataformas 13 Desarrollo de un servicio Web - Código ServicioMates.asmx <%@ WebService Language= c# Class= ServicioMates %> Using System.Web.Services; Public class ServicioMates : WebService { } [WebMethod] public int suma( int num1, int num2 ) { return num1 + num2; } [WebMethod] public int resta( int num1, int num2 ) { return num1 - num2; } 14 7
Desarrollo de un servicio Web - Publicación Visual Studio.NET hace todo lo necesario Genera un proxy del servicio Web Permitirá a los desarrolladores programar contra el servicio Web Publica el contrato WSDL Genera el fichero.vsdisco Enlace al recurso que proporcionará el WSDL Si tenemos instalado.net Framework Colocamos el fichero.asmx en el root de nuestro servidor Web. Cuando alguien haga una petición a nuestro servicio Web,.NET generará todo lo necesario y dará una respuesta. 15 Agenda Visión general Infraestructura Desarrollo de un servicio Web Invocación de un servicio Web Bibliografía 16 8
Invocación de un servicio Web Desde cualquier browser http://servidor/serviciomates.asmx Resultado: 17 Invocación de un servicio Web Desde cualquier browser http://servidor/serviciomates.asmx?op=suma 18 9
Invocación de un servicio Web Desde cualquier browser http://servidor/serviciomates.asmx/suma?num1=4&num2=2 Equivale a un HTTP-GET GET /ServicioMates.asmx/suma?num1=string&num2=string HTTP/1.1 Host: servidor Devuelve un mensaje en XML con el resultado: <?xml version="1.0" encoding="utf-8"?> <int xmlns="http://servidor/">6</int> 19 Invocación de un servicio Web Desde cualquier browser http://servidor/serviciomates.asmx?wsdl Devuelve un mensaje en XML con el resultado: <?xml version="1.0" encoding="utf-8"?> <definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"... xmlns="http://schemas.xmlsoap.org/wsdl/"> <types> <s:schema elementformdefault="qualified" targetnamespace="http://servidor/"> <s:element name="suma"> <s:complextype> <s:sequence> <s:element minoccurs="1" maxoccurs="1" name="num1" type="s:int" /> <s:element minoccurs="1" maxoccurs="1" name="num2" type="s:int" /> </s:sequence> </s:complextype> </s:element>... 20 10
Invocación de un servicio Web Desde una aplicación Crear el proxy de acceso al servicio Web remoto Añadir una referencia Web al sitio donde se encuentra el servicio o Crear el proxy manualmente wsdl http://servidor/serviciomates.asmx?wsdl Acceder de forma normal ClienteMates.cs Using System; class App { public static void Main() { ServicioMates sm = new ServicioMates(); int suma = sm.suma( 3, 5 ); Console.WriteLine( suma ); } } 21 Invocación de un servicio Web Cliente... int suma = sm.suma( 3, 5 );... Servicio Web Internet XML... [WebMethod] public int suma(int num1,int num2){ return num1 + num2; }... 22 11
Invocación de un servicio Web Desde una página web ASP.NET ClienteMates.aspx ASP.NET UI Operandos: Text Box Metodos: Botones Resultado: Label Manipulador de eventos OnServerClick 23 Agenda Visión general Infraestructura Desarrollo de un servicio Web Invocación de un servicio Web Bibliografía 24 12
Bibliografia Microsoft XML Web Services http://msdn.microsoft.com/library/default.asp?url=/nhp/default.asp?contentid=28000442 XML http://www.w3.org/tr/rec-xml Especificación de SOAP http://www.w3.org/tr/soap Especificación de WSDL http://www.w3.org/tr/wsdl UDDI www.uddi.org 25 Bibliografia - Servicios Web gratuitos XMethods Servicios Web implementados desde diversas plataformas http://www.xmethods.com TerraServer Conjunto de servicios, como por ejemplo un visor de mapas topográficos de Estados Unidos http://www.terraserver.com/ 26 13