SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
REST y Silverlight 2.0




ANDRÉS AGUIAR
AAGUIAR@INFRAGISTICS.COM
HTTP:// WEBLOGS.ASP.NET/AAGUIAR - @AAGUIAR
REST

 REST es un patrón de diseño
 El término fue creado por Roy Fielding en su
 disertación de Ph.D. en el año 2000

 http://www.ics.uci.edu/~fielding/pubs/dissertation
 /top.htm
Principio #1



         Todo es un RECURSO


Ejemplos:
 Clientes
 Lugares
 Productos
Principio #2



  Los Recursos tienen NOMBRES

Ejemplos:
 http://acme.com/customers/coyote
 http://world.com/usa/california/san_diego
 xri://@acme*warehouse/(+rockets)
Principio #3


  Los recursos soportan VERBOS
              simples



Ejemplos:
 Create, Read, Update, Delete
 POST, GET, PUT, DELETE
Principio #4


          Los recursos tienen
         REPRESENTACIONES


Ejemplos:
 HTML: text/html, application/xhtml+xml, …
 XML: text/xml, application/atom+xml, …
 Binary: image/png, application/pdf, …
REST y HTTP

 Get
   Obtiene un Resource

   Está garantido que no causa side-effects (Safe)

   Cacheable

 Post
   Crea un nuevo recurso

   Unsafe, el efecto de este verbo no esta definido por http
REST y HTTP

 Put
   Actualiza un recurso existente

   Se usa para crear recursos si el cliente conoce el Uri

   Se puede llamar N veces y pasa lo mismo (idempotente)

 Delete
   Elimina un recurso

   Se puede llamar N veces y pasa lo mismo (idempotente)
REST y HTTP

 Simple : basado en pocos principios y operaciones
  bien definidas
 Escalable: se apiya en protocolos „stateless‟ y estado
  distribuido
 En capas: premite cualquier cantidad de
  intermediarios como proxies, gateways y firewalls
Modelado REST

 Escenario: Búsqueda de itinerarios
   Busco itinerarios

   Pido mas información

   Reservo un pasaje



 interface IFlightSystem
 {
      Itineraries Search(string src, string dest);
      Details GetDetails(int itineraryId);
      Confirmation Reserve(itineraryId);
 }
 http://quuxTravel.com/search?src=London&dest=NYC

<itineraries>
  <itinerary src=“London“ dest=“NYC“ price=“400.03“>
   <getDetails uri=“http://quuxTravel.com/details?itinerary=402“ />
     <reserve
  uri=“http://reservations.com/quuxTravel?itinerary=402“/>
    </itinerary>

   <itinerary src=“London“ dest=“NYC“ price=“109.88“>
     <getDetails
  uri=“http://quuxTravel.com/details?itinerary=219“/>
     <reserve
  uri=“http://reservations.com/quuxTravel?itinerary=219“/>
   </itinerary>
</itineraries>
PURE REST

 http:/../v1/Recurso/<Id>
   POST, GET, DELETE, PUT



    No:
      http:/../v1/Recurso/get/Id
      http:/../v1/Recurso?Id=1
      http:/../v1/Recurso.svc?Id=1



 http:/../v1/Search?q=keyword
   GET
Content Type

GET /customer/1 HTTP/1.1
Accept: application/xml

HTTP/1.1 200 OK
Content-Type: application/xml
<Customer><Id>1</Id></Customer>
GET /customer/1 HTTP/1.1
Accept: text/html

HTTP/1.1 200 OK
Content-Type: text/html
<html xmlns="http://www.w3.org/1999/xhtml"> ….

GET /customer/1 HTTP/1.1
Accept: image/gif
HTTP/1.1 200 OK
Content-Type: image/gif
Gif89a
REST vs „Big Web Services‟

 No Caching – HTTP Caching
 WSDL vs WADL o /help)
 UDDI vs Google Search
 HTTPS y HTTP Auth vs WS-Security
 WS-Federation vs protocolos abiertos tipo OpenID
 WS-Transaction vs Nada
 WS-Reliable Messaging vs Nada
   AtMostOnce, AtLeastOne, ExactlyOnce, InOrder

   POST Exactly Once?
REST Pragmático – Lo REST

 Usar HTTP + XML como mecanismo de
  comunicación entre capas
 Ventajas:
    Fácil de usar
    Caching, Caching, Caching
Caching

 Los GETs se pueden cachear
   Cache-Control header
      “no-cache”
      “max-age=Segundos”, por ejemplo, “max-age=60”



    Expires header
        “Expires: Sat, 26 Jul 1997 05:00:00 GMT”
    Pragma: no-cache
Conditional GET

GET /icon-cart.gif HTTP/1.1


HTTP/1.1 200 OK
Content-Length: 389
Content-Type: image/gif
Last-Modified: Fri, 08 Aug 2008 16:19:58 GMT


GET /icon-cart.gif HTTP/1.1
If-Modified-Since: Fri, 08 Aug 2008 16:19:58 GMT


HTTP/1.1 304 Not Modified
Conditional GET

GET /icon-cart.gif HTTP/1.1


HTTP/1.1 200 OK
Content-Length: 389
Content-Type: image/gif
ETag: "d0afa29638fec81:43a"


GET /icon-cart.gif HTTP/1.1
If-None-Match: "d0afa29638fec81:43a“


HTTP/1.1 304 Not Modified
Cache en el Browser



Configuración      La copia del     La copia del     No hay
                   cache es nueva   cache es vieja   directivas de
                                                     cache
Cada vez que se    No hay request   Request          Request
visita la página                    Condicional      Condicional

Cada vez que se    No hay request   Request          Request
inicia IE                           Condicional      Condicional

Automática         No hay request   Request          Heurística
                                    Condicional

Nunca              No hay request   Request          No hay request
                                    Condicional
Heurística

 Todas las siguientes condiciones:
   El recurso cacheado tiene un Content-Type que empieza con
    image/.
   El recurso cacheado tiene Last-Modified.

   La URL cacheada no tiene un „?‟

   “The cached resource has been conditionally requested at least
    once within the most recent 25 percent of its overall age in the
    cache”




http://msdn.microsoft.com/en-us/library/aa905731.aspx
Conditional GET

GET /icon-cart.gif HTTP/1.1


HTTP/1.1 200 OK
Cache-Control: max-age=1
Content-Length: 389
Content-Type: image/gif
Last-Modified: Fri, 08 Aug 2008 16:19:58 GMT

GET /icon-cart.gif HTTP/1.1
If-Modified-Since: Fri, 08 Aug 2008 16:19:58 GMT


HTTP/1.1 304 Not Modified
REST in SL

 Http Request son asincrónicos
 SL 2 no permite leer headers de requests o requests
 que retornen <> HTTP 2XX
   No „304 Not Modified‟

 No permite PUT/DELETE
Server REST

 Http Handlers
 ASP.NET MVC
 WCF REST support
GO TO Visual Studio

Mais conteúdo relacionado

Mais procurados

High performance Web Sites
High performance Web SitesHigh performance Web Sites
High performance Web SitesopenfinanceDev
 
Introduccion a Nodejs
Introduccion a NodejsIntroduccion a Nodejs
Introduccion a NodejsJan Sanchez
 
Mike Schroder: Administra WordPress automáticamente con WP-CLI
Mike Schroder: Administra WordPress automáticamente con WP-CLIMike Schroder: Administra WordPress automáticamente con WP-CLI
Mike Schroder: Administra WordPress automáticamente con WP-CLImvkoen
 
Jornadas Odoo 2015 - Diseño y creación de un tema Bootstrap para Odoo
Jornadas Odoo 2015 - Diseño y creación de un tema Bootstrap para OdooJornadas Odoo 2015 - Diseño y creación de un tema Bootstrap para Odoo
Jornadas Odoo 2015 - Diseño y creación de un tema Bootstrap para OdooPedro Manuel Baeza Romero
 
Comandos Powershell Backup Restore SPSite
Comandos Powershell Backup Restore SPSiteComandos Powershell Backup Restore SPSite
Comandos Powershell Backup Restore SPSiteJuan Astudillo
 

Mais procurados (6)

High performance Web Sites
High performance Web SitesHigh performance Web Sites
High performance Web Sites
 
Introduccion a Nodejs
Introduccion a NodejsIntroduccion a Nodejs
Introduccion a Nodejs
 
Mike Schroder: Administra WordPress automáticamente con WP-CLI
Mike Schroder: Administra WordPress automáticamente con WP-CLIMike Schroder: Administra WordPress automáticamente con WP-CLI
Mike Schroder: Administra WordPress automáticamente con WP-CLI
 
Jornadas Odoo 2015 - Diseño y creación de un tema Bootstrap para Odoo
Jornadas Odoo 2015 - Diseño y creación de un tema Bootstrap para OdooJornadas Odoo 2015 - Diseño y creación de un tema Bootstrap para Odoo
Jornadas Odoo 2015 - Diseño y creación de un tema Bootstrap para Odoo
 
Comandos Powershell Backup Restore SPSite
Comandos Powershell Backup Restore SPSiteComandos Powershell Backup Restore SPSite
Comandos Powershell Backup Restore SPSite
 
Introducción a Node.js
Introducción a Node.jsIntroducción a Node.js
Introducción a Node.js
 

Destaque (8)

[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo...
[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo...[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo...
[Code Camp 2009] Desarrollando sitios web escalables con ASP.NET MVC (Rodolfo...
 
(13/05) MSDN te invita a ser parte de Uxity
(13/05) MSDN te invita a ser parte de Uxity(13/05) MSDN te invita a ser parte de Uxity
(13/05) MSDN te invita a ser parte de Uxity
 
[Code Camp 2009] Lo nuevo de Windows Server 2008 R2 (Alberto Ortega + Leandro...
[Code Camp 2009] Lo nuevo de Windows Server 2008 R2 (Alberto Ortega + Leandro...[Code Camp 2009] Lo nuevo de Windows Server 2008 R2 (Alberto Ortega + Leandro...
[Code Camp 2009] Lo nuevo de Windows Server 2008 R2 (Alberto Ortega + Leandro...
 
(30/04) TECHnight MSDN - Desarrollo de aplicaciones Silverlight y novedades e...
(30/04) TECHnight MSDN - Desarrollo de aplicaciones Silverlight y novedades e...(30/04) TECHnight MSDN - Desarrollo de aplicaciones Silverlight y novedades e...
(30/04) TECHnight MSDN - Desarrollo de aplicaciones Silverlight y novedades e...
 
(22.04.2009) Cumuy Presenta - Novedades en la plataforma de desarrollo .NET ...
(22.04.2009) Cumuy Presenta -  Novedades en la plataforma de desarrollo .NET ...(22.04.2009) Cumuy Presenta -  Novedades en la plataforma de desarrollo .NET ...
(22.04.2009) Cumuy Presenta - Novedades en la plataforma de desarrollo .NET ...
 
[Run Reloaded] Estrategias de Caching Distribuído con Microsoft Velocity Proj...
[Run Reloaded] Estrategias de Caching Distribuído con Microsoft Velocity Proj...[Run Reloaded] Estrategias de Caching Distribuído con Microsoft Velocity Proj...
[Run Reloaded] Estrategias de Caching Distribuído con Microsoft Velocity Proj...
 
CodeCamp 2010 | Diez formas de escribir código (in)seguro
CodeCamp 2010 | Diez formas de escribir código (in)seguroCodeCamp 2010 | Diez formas de escribir código (in)seguro
CodeCamp 2010 | Diez formas de escribir código (in)seguro
 
CodeCamp 2010 | Efectos especiales con Silverlight
CodeCamp 2010 | Efectos especiales con SilverlightCodeCamp 2010 | Efectos especiales con Silverlight
CodeCamp 2010 | Efectos especiales con Silverlight
 

Semelhante a (20.05.2009) Cumuy Presenta - Más tecnologías interesantes para conocer - PPT 1

ROA - Resource Oriented Architecture
ROA - Resource Oriented ArchitectureROA - Resource Oriented Architecture
ROA - Resource Oriented ArchitectureJavier Lafora Rey
 
Cookies y otras tecnologías de monitorización en internet
Cookies y otras tecnologías de monitorización en internetCookies y otras tecnologías de monitorización en internet
Cookies y otras tecnologías de monitorización en internetAlejandro Ramos
 
Open Source Modern Web Development
Open Source Modern Web DevelopmentOpen Source Modern Web Development
Open Source Modern Web DevelopmentJaime Irurzun
 
Charla web performance optimization
Charla   web performance optimizationCharla   web performance optimization
Charla web performance optimizationEsteban Tundidor
 
Curso de Desarrollo Web de Platzi
Curso de Desarrollo Web de PlatziCurso de Desarrollo Web de Platzi
Curso de Desarrollo Web de PlatziCarlos Azaustre
 
Aspnet40 Cache Extensibility
Aspnet40 Cache ExtensibilityAspnet40 Cache Extensibility
Aspnet40 Cache ExtensibilityChristian Strevel
 
Marcos quesada caching_sf2
Marcos quesada caching_sf2Marcos quesada caching_sf2
Marcos quesada caching_sf2symfony_bcn
 
13. Configuracion De Aplicaciones Web Asp.Net
13.  Configuracion De Aplicaciones Web Asp.Net13.  Configuracion De Aplicaciones Web Asp.Net
13. Configuracion De Aplicaciones Web Asp.Netguest3cf6ff
 
Apache ha muerto, Viva Lighttpd
Apache ha muerto, Viva LighttpdApache ha muerto, Viva Lighttpd
Apache ha muerto, Viva Lighttpdruna
 
12. Administracion Del Estado
12.  Administracion Del Estado12.  Administracion Del Estado
12. Administracion Del Estadoguest3cf6ff
 
Desarrollo web con JAVA: Introduccion a los Servlets
Desarrollo web con JAVA: Introduccion a los ServletsDesarrollo web con JAVA: Introduccion a los Servlets
Desarrollo web con JAVA: Introduccion a los ServletsJon Vadillo Romero
 
Varnish para meros mortales
Varnish para meros mortalesVarnish para meros mortales
Varnish para meros mortalesMartín .
 
Cookies Y Bases De Datos
Cookies Y Bases De DatosCookies Y Bases De Datos
Cookies Y Bases De DatosConfesorAD
 
Aplicaciones web offline ITParral Prieto y Nassi
Aplicaciones web offline ITParral Prieto y NassiAplicaciones web offline ITParral Prieto y Nassi
Aplicaciones web offline ITParral Prieto y NassiGuillermo Nassi
 

Semelhante a (20.05.2009) Cumuy Presenta - Más tecnologías interesantes para conocer - PPT 1 (20)

Curso de php
Curso de phpCurso de php
Curso de php
 
ROA - Resource Oriented Architecture
ROA - Resource Oriented ArchitectureROA - Resource Oriented Architecture
ROA - Resource Oriented Architecture
 
Cookies y otras tecnologías de monitorización en internet
Cookies y otras tecnologías de monitorización en internetCookies y otras tecnologías de monitorización en internet
Cookies y otras tecnologías de monitorización en internet
 
HTTP 304 - Not Modified
HTTP 304 - Not ModifiedHTTP 304 - Not Modified
HTTP 304 - Not Modified
 
Open Source Modern Web Development
Open Source Modern Web DevelopmentOpen Source Modern Web Development
Open Source Modern Web Development
 
Charla web performance optimization
Charla   web performance optimizationCharla   web performance optimization
Charla web performance optimization
 
Curso de Desarrollo Web de Platzi
Curso de Desarrollo Web de PlatziCurso de Desarrollo Web de Platzi
Curso de Desarrollo Web de Platzi
 
Seguridad en web
Seguridad en webSeguridad en web
Seguridad en web
 
Aspnet40 Cache Extensibility
Aspnet40 Cache ExtensibilityAspnet40 Cache Extensibility
Aspnet40 Cache Extensibility
 
Marcos quesada caching_sf2
Marcos quesada caching_sf2Marcos quesada caching_sf2
Marcos quesada caching_sf2
 
13. Configuracion De Aplicaciones Web Asp.Net
13.  Configuracion De Aplicaciones Web Asp.Net13.  Configuracion De Aplicaciones Web Asp.Net
13. Configuracion De Aplicaciones Web Asp.Net
 
Apache ha muerto, Viva Lighttpd
Apache ha muerto, Viva LighttpdApache ha muerto, Viva Lighttpd
Apache ha muerto, Viva Lighttpd
 
Tecnologias Web Semantica
Tecnologias Web SemanticaTecnologias Web Semantica
Tecnologias Web Semantica
 
12. Administracion Del Estado
12.  Administracion Del Estado12.  Administracion Del Estado
12. Administracion Del Estado
 
Desarrollo web con JAVA: Introduccion a los Servlets
Desarrollo web con JAVA: Introduccion a los ServletsDesarrollo web con JAVA: Introduccion a los Servlets
Desarrollo web con JAVA: Introduccion a los Servlets
 
REST - deSymfony2012
REST - deSymfony2012REST - deSymfony2012
REST - deSymfony2012
 
Rest
RestRest
Rest
 
Varnish para meros mortales
Varnish para meros mortalesVarnish para meros mortales
Varnish para meros mortales
 
Cookies Y Bases De Datos
Cookies Y Bases De DatosCookies Y Bases De Datos
Cookies Y Bases De Datos
 
Aplicaciones web offline ITParral Prieto y Nassi
Aplicaciones web offline ITParral Prieto y NassiAplicaciones web offline ITParral Prieto y Nassi
Aplicaciones web offline ITParral Prieto y Nassi
 

Mais de Microsoft Argentina y Uruguay [Official Space]

Mais de Microsoft Argentina y Uruguay [Official Space] (20)

CodeCamp 2010 | FBI- Fácil Business Intelligence
CodeCamp 2010 | FBI- Fácil Business IntelligenceCodeCamp 2010 | FBI- Fácil Business Intelligence
CodeCamp 2010 | FBI- Fácil Business Intelligence
 
CodeCamp 2010 | Hyper-V en Windows Server 2008 R2 e interoperabilidad con Linux
CodeCamp 2010 | Hyper-V en Windows  Server 2008 R2 e interoperabilidad con LinuxCodeCamp 2010 | Hyper-V en Windows  Server 2008 R2 e interoperabilidad con Linux
CodeCamp 2010 | Hyper-V en Windows Server 2008 R2 e interoperabilidad con Linux
 
CodeCamp 2010 | Productividad mas allá de la velocidad de tus dedos (cazzulin...
CodeCamp 2010 | Productividad mas allá de la velocidad de tus dedos (cazzulin...CodeCamp 2010 | Productividad mas allá de la velocidad de tus dedos (cazzulin...
CodeCamp 2010 | Productividad mas allá de la velocidad de tus dedos (cazzulin...
 
CodeCamp 2010 | Un paseo por WCF 4.0
CodeCamp 2010 | Un paseo por WCF 4.0CodeCamp 2010 | Un paseo por WCF 4.0
CodeCamp 2010 | Un paseo por WCF 4.0
 
CodeCamp 2010 | Desarrollo de videojuegos fuera de control
CodeCamp 2010 | Desarrollo de videojuegos fuera de controlCodeCamp 2010 | Desarrollo de videojuegos fuera de control
CodeCamp 2010 | Desarrollo de videojuegos fuera de control
 
CodeCamp 2010 | Recorriendo ocs 2010
CodeCamp 2010 | Recorriendo ocs 2010CodeCamp 2010 | Recorriendo ocs 2010
CodeCamp 2010 | Recorriendo ocs 2010
 
Novedades de vs 2010 y net 40
Novedades de vs 2010 y net 40Novedades de vs 2010 y net 40
Novedades de vs 2010 y net 40
 
Run 2 0 keynote azure
Run 2 0 keynote azureRun 2 0 keynote azure
Run 2 0 keynote azure
 
Run 20 Track SQL Server
Run 20 Track SQL ServerRun 20 Track SQL Server
Run 20 Track SQL Server
 
Run 20 programando sobre sharepoint 2010
Run 20 programando sobre sharepoint 2010Run 20 programando sobre sharepoint 2010
Run 20 programando sobre sharepoint 2010
 
(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0
(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0
(25.03) RUN 09 - Sesiones Desarrollo - SI 2.0
 
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Visión técnica
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Visión técnica(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Visión técnica
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Visión técnica
 
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Services 3
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Services 3(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Services 3
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Services 3
 
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Moss
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Moss(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Moss
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Moss
 
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Mapa De Ruta
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Mapa De Ruta(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Mapa De Ruta
(28.04) MOSSCA Invita - Bienvenidos a la casa de Sharepoint - Mapa De Ruta
 
(27.05) MOSSCA Invita - Búsqueda empresarial 2
(27.05) MOSSCA Invita - Búsqueda empresarial 2(27.05) MOSSCA Invita - Búsqueda empresarial 2
(27.05) MOSSCA Invita - Búsqueda empresarial 2
 
(27.05) MOSSCA Invita - Búsqueda empresarial 1
(27.05) MOSSCA Invita - Búsqueda empresarial 1(27.05) MOSSCA Invita - Búsqueda empresarial 1
(27.05) MOSSCA Invita - Búsqueda empresarial 1
 
(25.03) RUN 09 - Sesiones Desarrollo - Azure Live
(25.03) RUN 09 - Sesiones Desarrollo - Azure Live(25.03) RUN 09 - Sesiones Desarrollo - Azure Live
(25.03) RUN 09 - Sesiones Desarrollo - Azure Live
 
(22.04.2009) Cumuy Presenta - Novedades en la plataforma de desarrollo .NET ...
(22.04.2009) Cumuy Presenta -  Novedades en la plataforma de desarrollo .NET ...(22.04.2009) Cumuy Presenta -  Novedades en la plataforma de desarrollo .NET ...
(22.04.2009) Cumuy Presenta - Novedades en la plataforma de desarrollo .NET ...
 
(25.03) RUN 09 - Sesiones Desarrollo - WPF Silverlight
(25.03) RUN 09 - Sesiones Desarrollo - WPF Silverlight(25.03) RUN 09 - Sesiones Desarrollo - WPF Silverlight
(25.03) RUN 09 - Sesiones Desarrollo - WPF Silverlight
 

(20.05.2009) Cumuy Presenta - Más tecnologías interesantes para conocer - PPT 1

  • 1. REST y Silverlight 2.0 ANDRÉS AGUIAR AAGUIAR@INFRAGISTICS.COM HTTP:// WEBLOGS.ASP.NET/AAGUIAR - @AAGUIAR
  • 2. REST  REST es un patrón de diseño  El término fue creado por Roy Fielding en su disertación de Ph.D. en el año 2000 http://www.ics.uci.edu/~fielding/pubs/dissertation /top.htm
  • 3. Principio #1 Todo es un RECURSO Ejemplos:  Clientes  Lugares  Productos
  • 4. Principio #2 Los Recursos tienen NOMBRES Ejemplos:  http://acme.com/customers/coyote  http://world.com/usa/california/san_diego  xri://@acme*warehouse/(+rockets)
  • 5. Principio #3 Los recursos soportan VERBOS simples Ejemplos:  Create, Read, Update, Delete  POST, GET, PUT, DELETE
  • 6. Principio #4 Los recursos tienen REPRESENTACIONES Ejemplos:  HTML: text/html, application/xhtml+xml, …  XML: text/xml, application/atom+xml, …  Binary: image/png, application/pdf, …
  • 7. REST y HTTP  Get  Obtiene un Resource  Está garantido que no causa side-effects (Safe)  Cacheable  Post  Crea un nuevo recurso  Unsafe, el efecto de este verbo no esta definido por http
  • 8. REST y HTTP  Put  Actualiza un recurso existente  Se usa para crear recursos si el cliente conoce el Uri  Se puede llamar N veces y pasa lo mismo (idempotente)  Delete  Elimina un recurso  Se puede llamar N veces y pasa lo mismo (idempotente)
  • 9. REST y HTTP  Simple : basado en pocos principios y operaciones bien definidas  Escalable: se apiya en protocolos „stateless‟ y estado distribuido  En capas: premite cualquier cantidad de intermediarios como proxies, gateways y firewalls
  • 10. Modelado REST  Escenario: Búsqueda de itinerarios  Busco itinerarios  Pido mas información  Reservo un pasaje interface IFlightSystem { Itineraries Search(string src, string dest); Details GetDetails(int itineraryId); Confirmation Reserve(itineraryId); }
  • 11.  http://quuxTravel.com/search?src=London&dest=NYC <itineraries> <itinerary src=“London“ dest=“NYC“ price=“400.03“> <getDetails uri=“http://quuxTravel.com/details?itinerary=402“ /> <reserve uri=“http://reservations.com/quuxTravel?itinerary=402“/> </itinerary> <itinerary src=“London“ dest=“NYC“ price=“109.88“> <getDetails uri=“http://quuxTravel.com/details?itinerary=219“/> <reserve uri=“http://reservations.com/quuxTravel?itinerary=219“/> </itinerary> </itineraries>
  • 12. PURE REST  http:/../v1/Recurso/<Id>  POST, GET, DELETE, PUT  No:  http:/../v1/Recurso/get/Id  http:/../v1/Recurso?Id=1  http:/../v1/Recurso.svc?Id=1  http:/../v1/Search?q=keyword  GET
  • 13. Content Type GET /customer/1 HTTP/1.1 Accept: application/xml HTTP/1.1 200 OK Content-Type: application/xml <Customer><Id>1</Id></Customer> GET /customer/1 HTTP/1.1 Accept: text/html HTTP/1.1 200 OK Content-Type: text/html <html xmlns="http://www.w3.org/1999/xhtml"> …. GET /customer/1 HTTP/1.1 Accept: image/gif HTTP/1.1 200 OK Content-Type: image/gif Gif89a
  • 14. REST vs „Big Web Services‟  No Caching – HTTP Caching  WSDL vs WADL o /help)  UDDI vs Google Search  HTTPS y HTTP Auth vs WS-Security  WS-Federation vs protocolos abiertos tipo OpenID  WS-Transaction vs Nada  WS-Reliable Messaging vs Nada  AtMostOnce, AtLeastOne, ExactlyOnce, InOrder  POST Exactly Once?
  • 15. REST Pragmático – Lo REST  Usar HTTP + XML como mecanismo de comunicación entre capas  Ventajas:  Fácil de usar  Caching, Caching, Caching
  • 16. Caching  Los GETs se pueden cachear  Cache-Control header  “no-cache”  “max-age=Segundos”, por ejemplo, “max-age=60”  Expires header  “Expires: Sat, 26 Jul 1997 05:00:00 GMT”  Pragma: no-cache
  • 17. Conditional GET GET /icon-cart.gif HTTP/1.1 HTTP/1.1 200 OK Content-Length: 389 Content-Type: image/gif Last-Modified: Fri, 08 Aug 2008 16:19:58 GMT GET /icon-cart.gif HTTP/1.1 If-Modified-Since: Fri, 08 Aug 2008 16:19:58 GMT HTTP/1.1 304 Not Modified
  • 18. Conditional GET GET /icon-cart.gif HTTP/1.1 HTTP/1.1 200 OK Content-Length: 389 Content-Type: image/gif ETag: "d0afa29638fec81:43a" GET /icon-cart.gif HTTP/1.1 If-None-Match: "d0afa29638fec81:43a“ HTTP/1.1 304 Not Modified
  • 19. Cache en el Browser Configuración La copia del La copia del No hay cache es nueva cache es vieja directivas de cache Cada vez que se No hay request Request Request visita la página Condicional Condicional Cada vez que se No hay request Request Request inicia IE Condicional Condicional Automática No hay request Request Heurística Condicional Nunca No hay request Request No hay request Condicional
  • 20. Heurística  Todas las siguientes condiciones:  El recurso cacheado tiene un Content-Type que empieza con image/.  El recurso cacheado tiene Last-Modified.  La URL cacheada no tiene un „?‟  “The cached resource has been conditionally requested at least once within the most recent 25 percent of its overall age in the cache” http://msdn.microsoft.com/en-us/library/aa905731.aspx
  • 21. Conditional GET GET /icon-cart.gif HTTP/1.1 HTTP/1.1 200 OK Cache-Control: max-age=1 Content-Length: 389 Content-Type: image/gif Last-Modified: Fri, 08 Aug 2008 16:19:58 GMT GET /icon-cart.gif HTTP/1.1 If-Modified-Since: Fri, 08 Aug 2008 16:19:58 GMT HTTP/1.1 304 Not Modified
  • 22. REST in SL  Http Request son asincrónicos  SL 2 no permite leer headers de requests o requests que retornen <> HTTP 2XX  No „304 Not Modified‟  No permite PUT/DELETE
  • 23. Server REST  Http Handlers  ASP.NET MVC  WCF REST support
  • 24. GO TO Visual Studio