Ruby y las arquitecturas orientadas a servicios (SOA)  Joaqu ín Salvachúa Dit UPM [email_address]
RAILS Y SOAP ¿Tranquilidad?
RAILS <ul><li>No tiene SOAP - XMLRPC integrado. </li></ul><ul><li>Existen versiones en Ruby. </li></ul><ul><li>Funcionan s...
¿cómo integrar aplicaciones distribuidas?
 
USO de “SOCKETS”
<ul><li>require &quot;socket&quot; </li></ul><ul><li>host=(if ARGV.length == 2; ARGV.shift; else &quot;localhost&quot;; en...
Necesidad de un protocolo estandard <ul><li>No es un problema nuevo. </li></ul><ul><li>Necesidad de un entorno nuevo: </li...
Modelo de Llamada Remota a Procedimiento (RPC) int fxx (int a)  { return a * 5; }  10 25 10 25 x = 5; y = fxx (x); z = y +...
XML-RPC
Ejemplo <ul><li>POST /RPC2 HTTP/1.0 </li></ul><ul><li>User-Agent: Frontier/5.1.2 </li></ul><ul><li>Host: xml.colorado.edu ...
Filosofia REST <ul><li>Estado explicito en cada llamada.  </li></ul><ul><li>Cada objeto tiene un URL.  </li></ul><ul><li>S...
Aspectos de diseño <ul><li>Filosofia Rest vs. Soap </li></ul>Recursos URLs Op. Simples
Web Services ¿Qué es un servicio Web? Un servicio Web es una aplicación Web identificada por un URI, cuyos interfaces y en...
Screen Scrape Screen Scrape Screen Scrape Screen Scrape Message Queue Message Queue Message Queue Download File Download F...
Arquitectura orientada a servicios I Service Registry Service Provider Service Requestor Find Publish Bind (HTTP)
Arquitectura orientada a servicios II Service Registry Service Provider Service Requestor Find Publish Bind (to protocol) ...
Tecnologías Usadas <ul><li>XML </li></ul><ul><ul><li>Describe la información a ser usada. </li></ul></ul><ul><li>SOAP </li...
XML – Describe estructuras de datos <ul><li>XML puede describir tanto datos como documentos: </li></ul><ul><ul><li>Cual es...
SOAP <ul><li>SOAP es un protocolo basado en XML para el intercambio de informacion de una forma descentralizada sobre ento...
Estructura de SOAP <ul><li>Requiere un cuerpo (body) soap y un sobre (envelop). </li></ul><ul><li>Cabeceras (header) </li>...
Estructura de SOAP <ul><li>Requiere un cuerpo (body) soap y un sobre (envelop). </li></ul><ul><li>Cabeceras (header) </li>...
SOAP como protocolo <ul><li>SOAP Se basa sobre XML </li></ul>SOAP Envelope XML Framework SOAP Encoding SOAP RPC SOAP Messa...
Modelos de procesado de Servicios Web Básicamente Asíncrono Básicamente Síncrono Tipo de interacción. Centrado en Document...
WSDL ( Web Services Description Language) <ul><li>Información XML para la descripción de servicios de red y de un conjunto...
Funcionamiento <ul><li>Localización de un servicio. </li></ul><ul><li>Localización del interfaz WSDL. </li></ul><ul><li>Pe...
Funcionamiento <ul><li>Localización de un servicio. </li></ul><ul><li>Localización del interfaz WSDL. </li></ul><ul><li>Pe...
Funcionamiento <ul><li>Localización de un servicio. </li></ul><ul><li>Localización del interfaz WSDL. </li></ul><ul><li>Pe...
Funcionamiento <ul><li>Localización de un servicio. </li></ul><ul><li>Localización del interfaz WSDL. </li></ul><ul><li>Pe...
UDDI  ( Universal Description Discovery and Integration) <ul><li>UDDI Estructura de Datos estándar.  </li></ul><ul><li>UDD...
Las nuevas especificaciones Web Services <ul><li>Existe una gran actividad en multiples campos:  </li></ul><ul><ul><li>Mod...
Todo esto nuevo queda fuera de RUBY - The Message Model <ul><li>Concepts & relationships are defined in &quot;mind map&quo...
SOAP4R <ul><li>Paquete Ruby  </li></ul><ul><li>No termina de funcionar bien. </li></ul><ul><li>No  Entiende bien todo el W...
Seguridad WS no integrada
En desarrollo  <ul><li>Integraci ón real con Rails. </li></ul><ul><li>Anoche liberada la aplicación…. </li></ul>
VERSION ACTUAL <ul><li>Integraci ón REST con CRUD </li></ul><ul><li>class WeblogController < ActionController::Base </li><...
SOAP Aun no integrado <ul><li>ActiveWebServices. </li></ul><ul><li>Ya integrado en RAILS. </li></ul><ul><li>Aun en beta (e...
Conclusiones <ul><li>Lo est án cocinando….. </li></ul><ul><li>Orientado a integración rapida de servidores. </li></ul><ul>...
Upcoming SlideShare
Loading in …5
×

Ruby y las arquitecturas orientadas a servicios

7,490 views

Published on

Se presentan diversas soluciones para la integracion de aplicaciones web usando ruby y Rails

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
7,490
On SlideShare
0
From Embeds
0
Number of Embeds
94
Actions
Shares
0
Downloads
0
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Ruby y las arquitecturas orientadas a servicios

  1. 1. Ruby y las arquitecturas orientadas a servicios (SOA) Joaqu ín Salvachúa Dit UPM [email_address]
  2. 2. RAILS Y SOAP ¿Tranquilidad?
  3. 3. RAILS <ul><li>No tiene SOAP - XMLRPC integrado. </li></ul><ul><li>Existen versiones en Ruby. </li></ul><ul><li>Funcionan separadas de RAILS: </li></ul><ul><ul><li>* Problemas de integraci ón. </li></ul></ul>
  4. 4. ¿cómo integrar aplicaciones distribuidas?
  5. 6. USO de “SOCKETS”
  6. 7. <ul><li>require &quot;socket&quot; </li></ul><ul><li>host=(if ARGV.length == 2; ARGV.shift; else &quot;localhost&quot;; end) </li></ul><ul><li>print(&quot;Trying &quot;, host, &quot; ...&quot;) </li></ul><ul><li>STDOUT.flush </li></ul><ul><li>s = TCPsocket.open(host, ARGV.shift) </li></ul><ul><li>print(&quot; done &quot;) </li></ul><ul><li>print(&quot;addr: &quot;, s.addr.join(&quot;:&quot;), &quot; &quot;) </li></ul><ul><li>print(&quot;peer: &quot;, s.peeraddr.join(&quot;:&quot;), &quot; &quot;) </li></ul><ul><li>while gets( ) </li></ul><ul><li>s.write($_) </li></ul><ul><li>print(s.readline) </li></ul><ul><li>end </li></ul><ul><li>s.close </li></ul>
  7. 8. Necesidad de un protocolo estandard <ul><li>No es un problema nuevo. </li></ul><ul><li>Necesidad de un entorno nuevo: </li></ul><ul><ul><li>XML- RPC </li></ul></ul><ul><ul><li>SOAP </li></ul></ul>
  8. 9. Modelo de Llamada Remota a Procedimiento (RPC) int fxx (int a) { return a * 5; } 10 25 10 25 x = 5; y = fxx (x); z = y +1; .... SEND RECV
  9. 10. XML-RPC
  10. 11. Ejemplo <ul><li>POST /RPC2 HTTP/1.0 </li></ul><ul><li>User-Agent: Frontier/5.1.2 </li></ul><ul><li>Host: xml.colorado.edu </li></ul><ul><li>Content-Type: text/xml </li></ul><ul><li>Content-length: 181 </li></ul><ul><li><?xml version=“1.0”?> </li></ul><ul><li><methodCall> </li></ul><ul><li><methodName>examples.getStateName</methodName> </li></ul><ul><li><params> <param> </li></ul><ul><ul><li><value><i4>41</i4></value> </li></ul></ul><ul><ul><li></param></params> </li></ul></ul><ul><li></methodCall> </li></ul>
  11. 12. Filosofia REST <ul><li>Estado explicito en cada llamada. </li></ul><ul><li>Cada objeto tiene un URL. </li></ul><ul><li>Se lee y escribe objeto entero con : </li></ul><ul><ul><li>GET </li></ul></ul><ul><ul><li>POST </li></ul></ul><ul><ul><li>No es necesario mantener el estado. </li></ul></ul>
  12. 13. Aspectos de diseño <ul><li>Filosofia Rest vs. Soap </li></ul>Recursos URLs Op. Simples
  13. 14. Web Services ¿Qué es un servicio Web? Un servicio Web es una aplicación Web identificada por un URI, cuyos interfaces y enlaces pueden ser definidos, descritos y descubiertos mediante artefactos XML y que soporta la interacción directa con otras aplicaciones Web que interfaz que define una colección de operaciones que son accesibles de forma remota usando mensajes XML mediante protocolos estándar de Internet.
  14. 15. Screen Scrape Screen Scrape Screen Scrape Screen Scrape Message Queue Message Queue Message Queue Download File Download File Download File Transaction File Transaction File Transaction File ORB ORB CICS Gateway CICS Gateway APPC APPC RPC RPC Transaction File Sockets Sockets Message Message Application Application Application Application Application Application Application Application Application Application
  15. 16. Arquitectura orientada a servicios I Service Registry Service Provider Service Requestor Find Publish Bind (HTTP)
  16. 17. Arquitectura orientada a servicios II Service Registry Service Provider Service Requestor Find Publish Bind (to protocol) UDDI SOAP / XML WSDL
  17. 18. Tecnologías Usadas <ul><li>XML </li></ul><ul><ul><li>Describe la información a ser usada. </li></ul></ul><ul><li>SOAP </li></ul><ul><ul><li>Empaqueta la información y la transporta entre cliente y el proveedor del servicio. </li></ul></ul><ul><li>WSDL </li></ul><ul><ul><li>Describe un servicio. </li></ul></ul><ul><li>UDDI </li></ul><ul><ul><li>Proporciona una lista de servicios disponibles. </li></ul></ul>
  18. 19. XML – Describe estructuras de datos <ul><li>XML puede describir tanto datos como documentos: </li></ul><ul><ul><li>Cual es la diferencia. </li></ul></ul><ul><ul><li>Podemos manejar Ambos. </li></ul></ul><ul><li>XML se usa para datos y para metadatos. </li></ul><ul><li>Forma sencilla de describir estructuras de datos complejas y jerárquicas (serizalizaciones). </li></ul><ul><li>Flexibilidad, facilidad de procesado e independencia de plataformas – arquitecturas. </li></ul>
  19. 20. SOAP <ul><li>SOAP es un protocolo basado en XML para el intercambio de informacion de una forma descentralizada sobre entornos distribuidos. Define un mecanismo para el paso de instrucciones (comandos) y parametros entre clientes y servidores. </li></ul><ul><li>Es totalmente independiente de la plataforma, el modelo de datos y el lenguaje de programación usado. </li></ul>
  20. 21. Estructura de SOAP <ul><li>Requiere un cuerpo (body) soap y un sobre (envelop). </li></ul><ul><li>Cabeceras (header) </li></ul><ul><li>opcionales </li></ul><ul><li>Modelo RPC vs. </li></ul><ul><li>Documentos. </li></ul>
  21. 22. Estructura de SOAP <ul><li>Requiere un cuerpo (body) soap y un sobre (envelop). </li></ul><ul><li>Cabeceras (header) </li></ul><ul><li>opcionales </li></ul>HTTP SOAP SOAP Body
  22. 23. SOAP como protocolo <ul><li>SOAP Se basa sobre XML </li></ul>SOAP Envelope XML Framework SOAP Encoding SOAP RPC SOAP Messaging Authentication Encryption BTF2.0 Attachments
  23. 24. Modelos de procesado de Servicios Web Básicamente Asíncrono Básicamente Síncrono Tipo de interacción. Centrado en Documento Centrado en objetos de negocio Modelo de procesado RPC + XML attachment RPC Modelo de interacción Orientado a documento Orientado a RPC Servicio Web
  24. 25. WSDL ( Web Services Description Language) <ul><li>Información XML para la descripción de servicios de red y de un conjunto de puntos finales donde se dan los detalles de la conexión. </li></ul><ul><li>Informalmente: WSDL defines… </li></ul><ul><ul><li>Que operaciones puede realizar </li></ul></ul><ul><ul><li>Donde está </li></ul></ul><ul><ul><li>Como es necesario invocarlo </li></ul></ul>
  25. 26. Funcionamiento <ul><li>Localización de un servicio. </li></ul><ul><li>Localización del interfaz WSDL. </li></ul><ul><li>Peticiones y respuestas codificadas dentro de “sobres” SOAP. </li></ul><ul><li>Uso típico de SOAP sobre HTTP. </li></ul><ul><li>Necesidad de nuevos tipos de firewalls </li></ul>
  26. 27. Funcionamiento <ul><li>Localización de un servicio. </li></ul><ul><li>Localización del interfaz WSDL. </li></ul><ul><li>Peticiones y respuestas codificadas dentro de “sobres” SOAP. </li></ul><ul><li>Uso típico de SOAP sobre HTTP. </li></ul><ul><li>Necesidad de nuevos tipos de firewalls </li></ul>Petición SOAP: <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <soap:Envelope …> <soap:Body> <MakeEncRequest …> <principal>adg@microsoft.com</principal> <cipher>+oXHdaCXvK…=</cipher> </MakeEncRequest> </soap:Body> </soap:Envelope>
  27. 28. Funcionamiento <ul><li>Localización de un servicio. </li></ul><ul><li>Localización del interfaz WSDL. </li></ul><ul><li>Peticiones y respuestas codificadas dentro de “sobres” SOAP. </li></ul><ul><li>Uso típico de SOAP sobre HTTP. </li></ul><ul><li>Necesidad de nuevos tipos de firewalls </li></ul>Petición SOAP: <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <soap:Envelope …> <soap:Body> <MakeEncRequest …> <principal>adg@microsoft.com</principal> <cipher>+oXHdaCXvK…=</cipher> </MakeEncRequest> </soap:Body> </soap:Envelope> Respuesta SOAP: <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <soap:Envelope …> <soap:Body> <MakeEncRequestResponse …> <MakeEncRequestResult> Accepted: with nonce=1 </MakeEncRequestResult> </MakeEncRequestResponse> </soap:Body> </soap:Envelope>
  28. 29. Funcionamiento <ul><li>Localización de un servicio. </li></ul><ul><li>Localización del interfaz WSDL. </li></ul><ul><li>Peticiones y respuestas codificadas dentro de “sobres” SOAP. </li></ul><ul><li>Uso típico de SOAP sobre HTTP. </li></ul><ul><li>Necesidad de nuevos tipos de firewalls </li></ul>Petición SOAP: <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <soap:Envelope …> <soap:Body> <MakeEncRequest …> <principal>adg@microsoft.com</principal> <cipher>+oXHdaCXvK…=</cipher> </MakeEncRequest> </soap:Body> </soap:Envelope> Respuesta SOAP: <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?> <soap:Envelope …> <soap:Body> <MakeEncRequestResponse …> <MakeEncRequestResult> Accepted: with nonce=1 </MakeEncRequestResult> </MakeEncRequestResponse> </soap:Body> </soap:Envelope> Descripción Interfaz WSDL : … <s:element name=&quot;MakeEncRequest&quot;> <s:complexType> <s:sequence> <s:element … name=&quot;principal&quot; type=&quot;s:string&quot; /> <s:element … name=&quot;cipher&quot; type=&quot;s:base64Binary&quot; /> </s:sequence> </s:complexType> </s:element> …
  29. 30. UDDI ( Universal Description Discovery and Integration) <ul><li>UDDI Estructura de Datos estándar. </li></ul><ul><li>UDDI XML Schema </li></ul><ul><li>UDDI Programmatic Interface (API) </li></ul><ul><ul><li>Utiliza XML and SOAP </li></ul></ul><ul><li>Es un servicio Web. </li></ul><ul><li>Soporta: </li></ul><ul><ul><li>Gestión de taxonomía para ayudar las búsquedas. </li></ul></ul><ul><ul><li>Búsquedas por personas y máquinas. </li></ul></ul>
  30. 31. Las nuevas especificaciones Web Services <ul><li>Existe una gran actividad en multiples campos: </li></ul><ul><ul><li>Models and meta-models </li></ul></ul><ul><ul><li>Repository </li></ul></ul><ul><ul><li>Messaging </li></ul></ul><ul><ul><li>Service </li></ul></ul><ul><ul><li>Security and authorization </li></ul></ul><ul><ul><li>Federated network identity </li></ul></ul><ul><ul><li>User interface </li></ul></ul><ul><ul><li>Workflow </li></ul></ul><ul><ul><li>Application servers </li></ul></ul>
  31. 32. Todo esto nuevo queda fuera de RUBY - The Message Model <ul><li>Concepts & relationships are defined in &quot;mind map&quot; diagrams (above) and in prose </li></ul>
  32. 33. SOAP4R <ul><li>Paquete Ruby </li></ul><ul><li>No termina de funcionar bien. </li></ul><ul><li>No Entiende bien todo el WSDL. Solo compatibilidad de .net. </li></ul><ul><li>Un poco pesadilla …. (ultima version 2005). </li></ul>
  33. 34. Seguridad WS no integrada
  34. 35. En desarrollo <ul><li>Integraci ón real con Rails. </li></ul><ul><li>Anoche liberada la aplicación…. </li></ul>
  35. 36. VERSION ACTUAL <ul><li>Integraci ón REST con CRUD </li></ul><ul><li>class WeblogController < ActionController::Base </li></ul><ul><li>def index </li></ul><ul><li>@posts = Post.find :all </li></ul><ul><li>respond_to do |format| </li></ul><ul><li>format.html </li></ul><ul><li>format.xml { render :xml => @posts.to_xml } </li></ul><ul><li>format.rss { render :action => &quot;feed.rxml&quot; } </li></ul><ul><li>end </li></ul><ul><li>end </li></ul><ul><li>end </li></ul><ul><li>GET /weblog # returns HTML from browser Accept header </li></ul><ul><li>GET /weblog.xml # returns the XML </li></ul><ul><li>GET /weblog.rss # returns the RSS </li></ul>
  36. 37. SOAP Aun no integrado <ul><li>ActiveWebServices. </li></ul><ul><li>Ya integrado en RAILS. </li></ul><ul><li>Aun en beta (esperando a la siguiente Release). </li></ul><ul><li>No est á integrado con WSDL => generación un poco manual. </li></ul>
  37. 38. Conclusiones <ul><li>Lo est án cocinando….. </li></ul><ul><li>Orientado a integración rapida de servidores. </li></ul><ul><li>Aun no da soporte a “los otros estandares” del W3C y Oasis. </li></ul>

×