Ruby y las arquitecturas orientadas a servicios (SOA)  Joaqu ín Salvachúa Dit UPM [email_address]
RAILS Y SOAP ¿Tranquilidad?
RAILS No tiene SOAP - XMLRPC integrado. Existen versiones en Ruby. Funcionan separadas de RAILS:  * Problemas de integraci ón.
¿cómo integrar aplicaciones distribuidas?
 
USO de “SOCKETS”
require "socket" host=(if ARGV.length == 2; ARGV.shift; else "localhost"; end) print("Trying ", host, " ...") STDOUT.flush s = TCPsocket.open(host, ARGV.shift) print(" done\n") print("addr: ", s.addr.join(":"), "\n") print("peer: ", s.peeraddr.join(":"), "\n") while gets(  ) s.write($_) print(s.readline) end s.close
Necesidad de un protocolo estandard No es un problema nuevo. Necesidad de un entorno nuevo: XML- RPC SOAP
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
XML-RPC
Ejemplo POST /RPC2 HTTP/1.0 User-Agent: Frontier/5.1.2 Host: xml.colorado.edu Content-Type: text/xml Content-length: 181 <?xml version=“1.0”?> <methodCall> <methodName>examples.getStateName</methodName> <params> <param> <value><i4>41</i4></value> </param></params> </methodCall>
Filosofia REST Estado explicito en cada llamada.  Cada objeto tiene un URL.  Se lee y escribe objeto entero con : GET POST  No es necesario mantener el estado.
Aspectos de diseño Filosofia Rest vs. Soap 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 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.
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
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) UDDI SOAP / XML WSDL
Tecnologías Usadas XML Describe la información a ser usada. SOAP Empaqueta la información y la transporta entre cliente y el proveedor del servicio. WSDL Describe un servicio. UDDI Proporciona una lista de servicios disponibles.
XML – Describe estructuras de datos XML puede describir tanto datos como documentos: Cual es la diferencia. Podemos manejar Ambos. XML se usa para datos y para metadatos. Forma sencilla de describir estructuras de datos complejas y jerárquicas (serizalizaciones).  Flexibilidad, facilidad de procesado e independencia de plataformas – arquitecturas.
SOAP 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. Es totalmente independiente de la plataforma, el modelo de datos y el lenguaje de programación usado.
Estructura de SOAP Requiere un cuerpo (body) soap y un sobre (envelop). Cabeceras (header) opcionales Modelo RPC vs. Documentos.
Estructura de SOAP Requiere un cuerpo (body) soap y un sobre (envelop). Cabeceras (header) opcionales HTTP SOAP SOAP Body
SOAP como protocolo SOAP Se basa sobre XML SOAP Envelope XML Framework SOAP Encoding SOAP RPC SOAP Messaging Authentication Encryption BTF2.0 Attachments
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
WSDL ( Web Services Description Language) 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. Informalmente: WSDL defines… Que operaciones puede realizar  Donde está Como es necesario invocarlo
Funcionamiento Localización de un servicio. Localización del interfaz WSDL. Peticiones y respuestas codificadas dentro de “sobres” SOAP. Uso típico de SOAP sobre HTTP. Necesidad de nuevos tipos de firewalls
Funcionamiento Localización de un servicio. Localización del interfaz WSDL. Peticiones y respuestas codificadas dentro de “sobres” SOAP. Uso típico de SOAP sobre HTTP. Necesidad de nuevos tipos de firewalls 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>
Funcionamiento Localización de un servicio. Localización del interfaz WSDL. Peticiones y respuestas codificadas dentro de “sobres” SOAP. Uso típico de SOAP sobre HTTP. Necesidad de nuevos tipos de firewalls 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>
Funcionamiento Localización de un servicio. Localización del interfaz WSDL. Peticiones y respuestas codificadas dentro de “sobres” SOAP. Uso típico de SOAP sobre HTTP. Necesidad de nuevos tipos de firewalls 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> …
UDDI  ( Universal Description Discovery and Integration) UDDI Estructura de Datos estándar.  UDDI XML Schema  UDDI Programmatic Interface  (API) Utiliza  XML and SOAP  Es un servicio Web.  Soporta: Gestión de taxonomía para ayudar las búsquedas. Búsquedas por personas y máquinas.
Las nuevas especificaciones Web Services Existe una gran actividad en multiples campos:  Models and meta-models Repository Messaging Service Security and authorization Federated network identity User interface Workflow Application servers
Todo esto nuevo queda fuera de RUBY - The Message Model Concepts & relationships are defined in &quot;mind map&quot; diagrams (above) and in prose
SOAP4R Paquete Ruby  No termina de funcionar bien. No  Entiende bien todo el WSDL. Solo compatibilidad de .net. Un poco pesadilla …. (ultima version 2005).
Seguridad WS no integrada
En desarrollo  Integraci ón real con Rails. Anoche liberada la aplicación….
VERSION ACTUAL Integraci ón REST con CRUD class WeblogController < ActionController::Base def index @posts = Post.find :all respond_to do |format| format.html format.xml { render :xml => @posts.to_xml } format.rss { render :action => &quot;feed.rxml&quot; } end end end GET /weblog  # returns HTML from browser Accept header GET /weblog.xml # returns the XML GET /weblog.rss # returns the RSS
SOAP Aun no integrado ActiveWebServices. Ya integrado en RAILS. Aun en beta (esperando a la siguiente Release). No est á integrado con WSDL => generación un poco manual.
Conclusiones Lo est án cocinando….. Orientado a integración rapida de servidores. Aun no da soporte a “los otros estandares” del W3C y Oasis.

Ruby y las arquitecturas orientadas a servicios

  • 1.
    Ruby y lasarquitecturas orientadas a servicios (SOA) Joaqu ín Salvachúa Dit UPM [email_address]
  • 2.
    RAILS Y SOAP¿Tranquilidad?
  • 3.
    RAILS No tieneSOAP - XMLRPC integrado. Existen versiones en Ruby. Funcionan separadas de RAILS: * Problemas de integraci ón.
  • 4.
  • 5.
  • 6.
  • 7.
    require &quot;socket&quot; host=(ifARGV.length == 2; ARGV.shift; else &quot;localhost&quot;; end) print(&quot;Trying &quot;, host, &quot; ...&quot;) STDOUT.flush s = TCPsocket.open(host, ARGV.shift) print(&quot; done\n&quot;) print(&quot;addr: &quot;, s.addr.join(&quot;:&quot;), &quot;\n&quot;) print(&quot;peer: &quot;, s.peeraddr.join(&quot;:&quot;), &quot;\n&quot;) while gets( ) s.write($_) print(s.readline) end s.close
  • 8.
    Necesidad de unprotocolo estandard No es un problema nuevo. Necesidad de un entorno nuevo: XML- RPC SOAP
  • 9.
    Modelo de LlamadaRemota a Procedimiento (RPC) int fxx (int a) { return a * 5; } 10 25 10 25 x = 5; y = fxx (x); z = y +1; .... SEND RECV
  • 10.
  • 11.
    Ejemplo POST /RPC2HTTP/1.0 User-Agent: Frontier/5.1.2 Host: xml.colorado.edu Content-Type: text/xml Content-length: 181 <?xml version=“1.0”?> <methodCall> <methodName>examples.getStateName</methodName> <params> <param> <value><i4>41</i4></value> </param></params> </methodCall>
  • 12.
    Filosofia REST Estadoexplicito en cada llamada. Cada objeto tiene un URL. Se lee y escribe objeto entero con : GET POST No es necesario mantener el estado.
  • 13.
    Aspectos de diseñoFilosofia Rest vs. Soap Recursos URLs Op. Simples
  • 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.
  • 15.
    Screen Scrape ScreenScrape 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
  • 16.
    Arquitectura orientada aservicios I Service Registry Service Provider Service Requestor Find Publish Bind (HTTP)
  • 17.
    Arquitectura orientada aservicios II Service Registry Service Provider Service Requestor Find Publish Bind (to protocol) UDDI SOAP / XML WSDL
  • 18.
    Tecnologías Usadas XMLDescribe la información a ser usada. SOAP Empaqueta la información y la transporta entre cliente y el proveedor del servicio. WSDL Describe un servicio. UDDI Proporciona una lista de servicios disponibles.
  • 19.
    XML – Describeestructuras de datos XML puede describir tanto datos como documentos: Cual es la diferencia. Podemos manejar Ambos. XML se usa para datos y para metadatos. Forma sencilla de describir estructuras de datos complejas y jerárquicas (serizalizaciones). Flexibilidad, facilidad de procesado e independencia de plataformas – arquitecturas.
  • 20.
    SOAP SOAP esun 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. Es totalmente independiente de la plataforma, el modelo de datos y el lenguaje de programación usado.
  • 21.
    Estructura de SOAPRequiere un cuerpo (body) soap y un sobre (envelop). Cabeceras (header) opcionales Modelo RPC vs. Documentos.
  • 22.
    Estructura de SOAPRequiere un cuerpo (body) soap y un sobre (envelop). Cabeceras (header) opcionales HTTP SOAP SOAP Body
  • 23.
    SOAP como protocoloSOAP Se basa sobre XML SOAP Envelope XML Framework SOAP Encoding SOAP RPC SOAP Messaging Authentication Encryption BTF2.0 Attachments
  • 24.
    Modelos de procesadode 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
  • 25.
    WSDL ( WebServices Description Language) 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. Informalmente: WSDL defines… Que operaciones puede realizar Donde está Como es necesario invocarlo
  • 26.
    Funcionamiento Localización deun servicio. Localización del interfaz WSDL. Peticiones y respuestas codificadas dentro de “sobres” SOAP. Uso típico de SOAP sobre HTTP. Necesidad de nuevos tipos de firewalls
  • 27.
    Funcionamiento Localización deun servicio. Localización del interfaz WSDL. Peticiones y respuestas codificadas dentro de “sobres” SOAP. Uso típico de SOAP sobre HTTP. Necesidad de nuevos tipos de firewalls 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>
  • 28.
    Funcionamiento Localización deun servicio. Localización del interfaz WSDL. Peticiones y respuestas codificadas dentro de “sobres” SOAP. Uso típico de SOAP sobre HTTP. Necesidad de nuevos tipos de firewalls 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>
  • 29.
    Funcionamiento Localización deun servicio. Localización del interfaz WSDL. Peticiones y respuestas codificadas dentro de “sobres” SOAP. Uso típico de SOAP sobre HTTP. Necesidad de nuevos tipos de firewalls 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> …
  • 30.
    UDDI (Universal Description Discovery and Integration) UDDI Estructura de Datos estándar. UDDI XML Schema UDDI Programmatic Interface (API) Utiliza XML and SOAP Es un servicio Web. Soporta: Gestión de taxonomía para ayudar las búsquedas. Búsquedas por personas y máquinas.
  • 31.
    Las nuevas especificacionesWeb Services Existe una gran actividad en multiples campos: Models and meta-models Repository Messaging Service Security and authorization Federated network identity User interface Workflow Application servers
  • 32.
    Todo esto nuevoqueda fuera de RUBY - The Message Model Concepts & relationships are defined in &quot;mind map&quot; diagrams (above) and in prose
  • 33.
    SOAP4R Paquete Ruby No termina de funcionar bien. No Entiende bien todo el WSDL. Solo compatibilidad de .net. Un poco pesadilla …. (ultima version 2005).
  • 34.
    Seguridad WS nointegrada
  • 35.
    En desarrollo Integraci ón real con Rails. Anoche liberada la aplicación….
  • 36.
    VERSION ACTUAL Integración REST con CRUD class WeblogController < ActionController::Base def index @posts = Post.find :all respond_to do |format| format.html format.xml { render :xml => @posts.to_xml } format.rss { render :action => &quot;feed.rxml&quot; } end end end GET /weblog # returns HTML from browser Accept header GET /weblog.xml # returns the XML GET /weblog.rss # returns the RSS
  • 37.
    SOAP Aun nointegrado ActiveWebServices. Ya integrado en RAILS. Aun en beta (esperando a la siguiente Release). No est á integrado con WSDL => generación un poco manual.
  • 38.
    Conclusiones Lo están cocinando….. Orientado a integración rapida de servidores. Aun no da soporte a “los otros estandares” del W3C y Oasis.