0
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

 ...
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/califor...
Principio #3


  Los recursos soportan VERBOS
              simples



Ejemplos:
 Create, Read, Update, Delete
 POST, GE...
Principio #4


          Los recursos tienen
         REPRESENTACIONES


Ejemplos:
 HTML: text/html, application/xhtml+xm...
REST y HTTP

 Get
   Obtiene un Resource

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

   Cacheable

 Post
  ...
REST y HTTP

 Put
   Actualiza un recurso existente

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

   Se ...
REST y HTTP

 Simple : basado en pocos principios y operaciones
  bien definidas
 Escalable: se apiya en protocolos „sta...
Modelado REST

 Escenario: Búsqueda de itinerarios
   Busco itinerarios

   Pido mas información

   Reservo un pasaje...
 http://quuxTravel.com/search?src=London&dest=NYC

<itineraries>
  <itinerary src=“London“ dest=“NYC“ price=“400.03“>
   ...
PURE REST

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



    No:
      http:/../v1/Recurso/get/Id
      http...
Content Type

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

HTTP/1.1 200 OK
Content-Type: application/xml
<Customer><I...
REST vs „Big Web Services‟

 No Caching – HTTP Caching
 WSDL vs WADL o /help)
 UDDI vs Google Search
 HTTPS y HTTP Aut...
REST Pragmático – Lo REST

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

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

GET /icon-cart.gif HTTP/1.1


HTTP/1.1 200 OK
Content-Length: 389
Content-Type: image/gif
Last-Modified: ...
Conditional GET

GET /icon-cart.gif HTTP/1.1


HTTP/1.1 200 OK
Content-Length: 389
Content-Type: image/gif
ETag: "d0afa296...
Cache en el Browser



Configuración      La copia del     La copia del     No hay
                   cache es nueva   cac...
Heurística

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

GET /icon-cart.gif HTTP/1.1


HTTP/1.1 200 OK
Cache-Control: max-age=1
Content-Length: 389
Content-Type: ...
REST in SL

 Http Request son asincrónicos
 SL 2 no permite leer headers de requests o requests
 que retornen <> HTTP 2X...
Server REST

 Http Handlers
 ASP.NET MVC
 WCF REST support
GO TO Visual Studio
Upcoming SlideShare
Loading in...5
×

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

386

Published on

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

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
386
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. REST y Silverlight 2.0 ANDRÉS AGUIAR AAGUIAR@INFRAGISTICS.COM HTTP:// WEBLOGS.ASP.NET/AAGUIAR - @AAGUIAR
  2. 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. 3. Principio #1 Todo es un RECURSO Ejemplos:  Clientes  Lugares  Productos
  4. 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. 5. Principio #3 Los recursos soportan VERBOS simples Ejemplos:  Create, Read, Update, Delete  POST, GET, PUT, DELETE
  6. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 23. Server REST  Http Handlers  ASP.NET MVC  WCF REST support
  24. 24. GO TO Visual Studio
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×