Servicios Web ligeros
description
Transcript of Servicios Web ligeros
![Page 1: Servicios Web ligeros](https://reader031.fdocument.pub/reader031/viewer/2022020111/56813c71550346895da60637/html5/thumbnails/1.jpg)
Servicios Web ligerosServicios Web ligerosAlternativas al protocoloAlternativas al protocolo
SOAP para la creación de SOAP para la creación de servicios distribuidosservicios distribuidos
Noé Fernández IglesiasNoé Fernández Iglesias
![Page 2: Servicios Web ligeros](https://reader031.fdocument.pub/reader031/viewer/2022020111/56813c71550346895da60637/html5/thumbnails/2.jpg)
IntroducciónIntroducción
Popularización de los Servicios WebPopularización de los Servicios Web HTTPHTTP XMLXML
Protocolo SOAPProtocolo SOAP
![Page 3: Servicios Web ligeros](https://reader031.fdocument.pub/reader031/viewer/2022020111/56813c71550346895da60637/html5/thumbnails/3.jpg)
SOAPSOAP
Protocolo de referencia para la creación Protocolo de referencia para la creación de SWde SW
Mensajes XML sobre HTTPMensajes XML sobre HTTP
Fichero de definición WSDLFichero de definición WSDL
UDDI UDDI
![Page 4: Servicios Web ligeros](https://reader031.fdocument.pub/reader031/viewer/2022020111/56813c71550346895da60637/html5/thumbnails/4.jpg)
SOAPSOAP
Principales críticas al protocoloPrincipales críticas al protocolo ComplejoComplejo
Mensajes XML Mensajes XML Sobrecarga de redSobrecarga de red
WSDLWSDL
Demasiado pesado para pequeños dispositivosDemasiado pesado para pequeños dispositivos
![Page 5: Servicios Web ligeros](https://reader031.fdocument.pub/reader031/viewer/2022020111/56813c71550346895da60637/html5/thumbnails/5.jpg)
Alternativas a SOAPAlternativas a SOAP
Caucho TechnologyCaucho Technology HessianHessian BurlapBurlap
Spring frameworkSpring framework HTTP invokerHTTP invoker
![Page 6: Servicios Web ligeros](https://reader031.fdocument.pub/reader031/viewer/2022020111/56813c71550346895da60637/html5/thumbnails/6.jpg)
HessianHessian
Protocolo binario sobre HTTPProtocolo binario sobre HTTP
LigeroLigero
Los servicios son desplegados como servletsLos servicios son desplegados como servlets
No necesita fichero de descripción (WSDL, IDL, …)No necesita fichero de descripción (WSDL, IDL, …)
Usa un mecanismo propio de serializaciónUsa un mecanismo propio de serialización
Implementado en varias plataformasImplementado en varias plataformas Java, C++, C#, PHP, Ruby, PythonJava, C++, C#, PHP, Ruby, Python
![Page 7: Servicios Web ligeros](https://reader031.fdocument.pub/reader031/viewer/2022020111/56813c71550346895da60637/html5/thumbnails/7.jpg)
HessianHessian
Creación de un servicio con Hessian:Creación de un servicio con Hessian:
Creación de una interfaz Java a modo de API Creación de una interfaz Java a modo de API pública.pública.
Creación de un cliente del servicio mediante Creación de un cliente del servicio mediante HessianProxyFactoryHessianProxyFactory..
Creación de la clase de implementación del Creación de la clase de implementación del servicio.servicio.
Despliegue y configuración del servicio en un Despliegue y configuración del servicio en un contenedor de servlets.contenedor de servlets.
![Page 8: Servicios Web ligeros](https://reader031.fdocument.pub/reader031/viewer/2022020111/56813c71550346895da60637/html5/thumbnails/8.jpg)
HessianHessian
Creación de una interfaz Java a modo de Creación de una interfaz Java a modo de API públicaAPI pública
public interface HWService { public String helloWorld(); }
![Page 9: Servicios Web ligeros](https://reader031.fdocument.pub/reader031/viewer/2022020111/56813c71550346895da60637/html5/thumbnails/9.jpg)
HessianHessian
Creación de un cliente del servicio Creación de un cliente del servicio mediante mediante HessianProxyFactoryHessianProxyFactory
public class BasicClient { public static void main(String []args) throws Exception {
String url = "http://localhost/helloWorld";
HessianProxyFactory factory = new HessianProxyFactory();
HWService service = (HWService) factory.create(HWService.class, url);
System.out.println("Hello: " + basic.hello()); }}
![Page 10: Servicios Web ligeros](https://reader031.fdocument.pub/reader031/viewer/2022020111/56813c71550346895da60637/html5/thumbnails/10.jpg)
HessianHessian
Creación de la clase de implementación Creación de la clase de implementación del serviciodel servicio
public class MyService implements HWService {
public String hello() { return "Hello, world"; } }
![Page 11: Servicios Web ligeros](https://reader031.fdocument.pub/reader031/viewer/2022020111/56813c71550346895da60637/html5/thumbnails/11.jpg)
HessianHessian
Despliegue y configuración del servicio en Despliegue y configuración del servicio en un contenedor de servletsun contenedor de servlets
<web-app> <servlet> <servlet-name>hello</servlet-name> <servlet-class>com.framework.HessianServlet</servlet-class> <init-param> <param-name>home-class</param-name> <param-value>MyService</param-value> </init-param> <init-param> <param-name>home-api</param-name> <param-value>HWService</param-value> </init-param> </servlet>
<servlet-mapping> <url-pattern>/helloWorld</url-pattern> <servlet-name>hello</servlet-name> </servlet-mapping></web-app>
![Page 12: Servicios Web ligeros](https://reader031.fdocument.pub/reader031/viewer/2022020111/56813c71550346895da60637/html5/thumbnails/12.jpg)
BurlapBurlap
Versión XML de HessianVersión XML de Hessian
Mensajes SML sobre HTTPMensajes SML sobre HTTP
Los servicios son desplegados como servletsLos servicios son desplegados como servlets
No necesita fichero de descripción (WSDL, IDL, …)No necesita fichero de descripción (WSDL, IDL, …)
Usa un mecanismo propio de serializaciónUsa un mecanismo propio de serialización
Implementado actualmente sólo en JavaImplementado actualmente sólo en Java
![Page 13: Servicios Web ligeros](https://reader031.fdocument.pub/reader031/viewer/2022020111/56813c71550346895da60637/html5/thumbnails/13.jpg)
BurlapBurlap
Creación de un servicio con Burlap:Creación de un servicio con Burlap:
Creación de una interfaz Java a modo de API Creación de una interfaz Java a modo de API pública.pública.
Creación de un cliente del servicio mediante Creación de un cliente del servicio mediante BurlapBurlapProxyFactoryProxyFactory..
Creación de la clase de implementación del Creación de la clase de implementación del servicio.servicio.
Despliegue y configuración del servicio en un Despliegue y configuración del servicio en un contenedor de servlets.contenedor de servlets.
![Page 14: Servicios Web ligeros](https://reader031.fdocument.pub/reader031/viewer/2022020111/56813c71550346895da60637/html5/thumbnails/14.jpg)
HTTP invokerHTTP invoker
Solución del framework Spring para el desarrollo Solución del framework Spring para el desarrollo de servicios remotos.de servicios remotos.
Funciona sobre HTTPFunciona sobre HTTP
Utiliza la serialización de JavaUtiliza la serialización de Java
Sencilla implementación y despliegue de Sencilla implementación y despliegue de servicios (pasos similares a Hessian y Burlap)servicios (pasos similares a Hessian y Burlap)
![Page 15: Servicios Web ligeros](https://reader031.fdocument.pub/reader031/viewer/2022020111/56813c71550346895da60637/html5/thumbnails/15.jpg)
HTTP invokerHTTP invoker
Creación de un servicio con HTTP Creación de un servicio con HTTP invoker:invoker:
Creación de una interfaz del servicio e Creación de una interfaz del servicio e implementación de la misma.implementación de la misma.
Exportación del servicio mediante la Exportación del servicio mediante la definición de un bean de Spring.definición de un bean de Spring.
Despliegue del servicio en un contenedor de Despliegue del servicio en un contenedor de servlets.servlets.
Creación del bean de Spring para el cliente.Creación del bean de Spring para el cliente.
![Page 16: Servicios Web ligeros](https://reader031.fdocument.pub/reader031/viewer/2022020111/56813c71550346895da60637/html5/thumbnails/16.jpg)
HTTP invokerHTTP invoker
Exportación del servicio mediante la Exportación del servicio mediante la definición de un bean de Spring :definición de un bean de Spring :
<bean name="/MyService" class="org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter">
<property name="service"> <ref bean="myService"/> </property>
<property name="serviceInterface"> <value>com.httpInvoker.example.MyService</value> </property>
</bean>
![Page 17: Servicios Web ligeros](https://reader031.fdocument.pub/reader031/viewer/2022020111/56813c71550346895da60637/html5/thumbnails/17.jpg)
HTTP invokerHTTP invoker
Despliegue del servicio en un contenedor Despliegue del servicio en un contenedor de servlets :de servlets :
<servlet> <servlet-name>myServiceHttpInvoker</servlet-name> <servlet-class>
org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>3</load-on-startup> </servlet>
<servlet-mapping> <servlet-name>myServiceHttpInvoker</servlet-name> <url-pattern>/remoting/*</url-pattern> </servlet-mapping>
![Page 18: Servicios Web ligeros](https://reader031.fdocument.pub/reader031/viewer/2022020111/56813c71550346895da60637/html5/thumbnails/18.jpg)
HTTP invokerHTTP invoker
Creación del bean de Spring para el Creación del bean de Spring para el cliente :cliente :
<bean id="service" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean"> <property name="serviceUrl"> <value>http://localhost/remoting/MyService</value> </property> <property name="serviceInterface"> <value>com.httpInvoker.example.MyService</value> </property> <property name="httpInvokerRequestExecutor"> <bean class="org.springframework.remoting.httpinvoker.CommonsHttpInvokerRequestExecutor"/> </property> </bean>
![Page 19: Servicios Web ligeros](https://reader031.fdocument.pub/reader031/viewer/2022020111/56813c71550346895da60637/html5/thumbnails/19.jpg)
HTTP invokerHTTP invoker
Invocación del servicio:Invocación del servicio:
MyService service = (MyService)context.getBean("service");service.hello();
![Page 20: Servicios Web ligeros](https://reader031.fdocument.pub/reader031/viewer/2022020111/56813c71550346895da60637/html5/thumbnails/20.jpg)
ConclusionesConclusiones
¿Cuándo usar cada protocolo?¿Cuándo usar cada protocolo? Tenemos control sobre el servicio y el clienteTenemos control sobre el servicio y el cliente
Hessian, Burlap, HTTP invokerHessian, Burlap, HTTP invoker
Poco ancho de banda: Hessian, BurlapPoco ancho de banda: Hessian, Burlap
Clientes de diversas plataformasClientes de diversas plataformasHessianHessian
Aplicaciones complejas, diversos protocolos, Aplicaciones complejas, diversos protocolos, funcionalidad prima sobre la velocidadfuncionalidad prima sobre la velocidad
SOAPSOAP