Rest @ Qcon 2010

1,975
-1

Published on

Apresentação de Guilherme Silveira sobre REST e a web semântica durante o QCon 2010 organizado pela Caelum.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,975
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
26
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide








































































































  • Rest @ Qcon 2010

    1. 1. REST, semântica e o futuro (!) da arquitetura web Guilherme Silveira
    2. 2. Guilherme Silveira guilherme.silveira@caelum.com.br
    3. 3. são paulo
    4. 4. são paulo
    5. 5. são paulo
    6. 6. são paulo
    7. 7. são paulo
    8. 8. Guilherme Silveira guilherme.silveira@caelum.com.br 2002 guj.com.br 2003 vraptor 2004 caelum.com.br xp, xstream 2006 scrum 2009 restfulie, lean 2010 tectura.com.br
    9. 9. bank.com
    10. 10. bank.com calendar.com
    11. 11. bank.com kayak.com calendar.com
    12. 12. bank.com kayak.com caelum.com.br calendar.com
    13. 13. bank.com kayak.com calendar.com caelum.com.br
    14. 14. bank.com kayak.com calendar.com caelum.com.br
    15. 15. CORBA paraíso?
    16. 16. EJB paraíso?
    17. 17. SOAP paraíso?
    18. 18. REST minimizar o acoplamento
    19. 19. service locator em integração: acoplamento mais alto! kayak pay kayak guilherme
    20. 20. service locator em integração: acoplamento mais alto! kayak pay kayak guilherme
    21. 21. kayak.com: pagamento de um vôo <?xml version="1.0" encoding="UTF-8" standalum="yes"?> <voo> <informacoes> <de>GRU</de> <ate>JFK</ate> </informacoes>   <valor>900.00</valor> <link rel="payment" href="http://kayak.com/payment/custom"/> </voo>
    22. 22. kayak.com: pagamento de um vôo <?xml version="1.0" encoding="UTF-8" standalum="yes"?> <voo> <informacoes> <de>GRU</de> <ate>JFK</ate> </informacoes>   <valor>900.00</valor> <link rel="payment" href="http://kayak.com/payment/custom"/> </voo>
    23. 23. kayak.com: pagamento de um vôo voo = Restfulie.at('http://kayak.com/f/574XR4').get confirmacao = voo.link("payment"). patch(todo_o_inferno_do_seu_cartao, valor) envia_email(confirmacao)
    24. 24. kayak.com: pagamento de um vôo voo = Restfulie.at('http://kayak.com/f/574XR4').get confirmacao = voo.link("payment"). patch(todo_o_inferno_do_seu_cartao, valor) envia_email(confirmacao)
    25. 25. kayak.com: pagamento de um vôo <?xml version="1.0" encoding="UTF-8" standalum="yes"?> <voo> <informacoes> <de>GRU</de> <ate>JFK</ate> </informacoes>   <valor>900.00</valor> <link rel="payment" href="http://paypal.com/55788"/> </voo>
    26. 26. kayak.com: pagamento de um vôo <?xml version="1.0" encoding="UTF-8" standalum="yes"?> <voo> <informacoes> <de>GRU</de> <ate>JFK</ate> </informacoes>   <valor>900.00</valor> <link rel="payment" href="http://paypal.com/55788"/> </voo>
    27. 27. viagem = recurso http://kayak.com/f/574XR4 pagamento = recurso uma_uri_qualquer
    28. 28. dependency injection em integração: give me my links! @kayak pay kayak guilherme @visa
    29. 29. dependency injection em integração: give me my links! @kayak pay kayak guilherme @visa
    30. 30. não viajo sozinho
    31. 31. meu amigo @sergio_caelum
    32. 32. meu amigo @sergio_caelum Bilu bilu
    33. 33. kayak.com: pagamento de um vôo voo = Restfulie.at('http://kayak.com/f/574XR4').get confirmacao = voo.link("payment"). patch(todo_o_inferno_do_seu_cartao, valor/2) envia_email(confirmacao) voo = Restfulie.at(uri_recebida).get confirmacao = voo.link("payment"). patch(todo_o_inferno_do_seu_cartao, valor/2)
    34. 34. kayak.com: pagamento de um vôo voo = Restfulie.at('http://kayak.com/f/574XR4').get confirmacao = voo.link("payment"). patch(todo_o_inferno_do_seu_cartao, valor/2) envia_email(confirmacao) voo = Restfulie.at(uri_recebida).get confirmacao = voo.link("payment"). patch(todo_o_inferno_do_seu_cartao, valor/2)
    35. 35. kayak.com: pagamento de um vôo voo = Restfulie.at('http://kayak.com/f/574XR4').get confirmacao = voo.link("payment"). patch(todo_o_inferno_do_seu_cartao, valor/2) envia_email(confirmacao) voo = Restfulie.at(uri_recebida).get confirmacao = voo.link("payment"). patch(todo_o_inferno_do_seu_cartao, valor/2)
    36. 36. kayak.com: pagamento de um vôo voo = Restfulie.at('http://kayak.com/f/574XR4').get confirmacao = voo.link("payment"). patch(todo_o_inferno_do_seu_cartao, valor/2) envia_email(confirmacao) voo = Restfulie.at(uri_recebida).get confirmacao = voo.link("payment"). patch(todo_o_inferno_do_seu_cartao, valor/2)
    37. 37. calendar: minha agenda pessoal
    38. 38. calendar: minha agenda pessoal eu = Restfulie.at('http://users.google.com') .with(auth).get eu.link("calendar").patch(voo.link("self"))
    39. 39. calendar: minha agenda pessoal eu = Restfulie.at('http://users.google.com') .with(auth).get eu.link("calendar").patch(voo.link("self"))
    40. 40. calendar: minha agenda pessoal eu.link("calendar").patch(link_para_aniversarios) eu.link("calendar").patch(link_para_reserva_do_hotel) eu.link("calendar").patch(link_para_passeios)
    41. 41. mas qual o formato do pagamento ou calendário?
    42. 42. #json, #xml, #soap #etc?
    43. 43. qual #json, #xml #etc?
    44. 44. exercício
    45. 45. quem é esse?
    46. 46. quem é essa?
    47. 47. fácil? e ela?
    48. 48. fácil? e ela? lh a! fi in ha é m n ão
    49. 49. conteúdo sem semântica não tem valor!
    50. 50. integração na web
    51. 51. #json, @sergio_caelum
    52. 52. #?
    53. 53. de onde veio o # e o @?
    54. 54. “watching @guilhermecaelum #qconsp *10 great talk” Atenção: esse tweet é só uma sugestão!
    55. 55. controlled vocabulary
    56. 56. emergiu no twitter, por exemplo
    57. 57. inventar antes o controlled vocabulary?
    58. 58. top down? Big Design Up Front O monstro do lago SOAP, longa de 2001
    59. 59. formato de calendário é comum! ele é pequeno bem pequeno ele é micro
    60. 60. e o calendário com isso?
    61. 61. e o calendário com isso? Cancelar ==> Cancela o vôo Cancelar ==> Envia email para um hotel Cancelar ==> Recusa uma reunião via email
    62. 62. e o calendário com isso? í di a! pe rm s: hy li nk co m to s a fo rm ic ro m Cancelar ==> Cancela o vôo Cancelar ==> Envia email para um hotel Cancelar ==> Recusa uma reunião via email
    63. 63. caelum: no trabalho caelum = Restfulie.at("http://caelum.com.br").get caelum.link("reembolsos").patch(confirmacao) caelum.link("calendar").patch(confirmacao)
    64. 64. caelum: o chefe caelum = Restfulie.at("http://caelum.com.br") .with(auth).get caelum.link("reembolsos").get[0] .link("confirmation").post :accept => true
    65. 65. caelum: o chefe guilherme kayak
    66. 66. caelum: o chefe guilherme kayak
    67. 67. caelum: o chefe guilherme kayak paypal
    68. 68. caelum: o chefe guilherme kayak paypal
    69. 69. caelum: o chefe guilherme kayak paypal calendar
    70. 70. caelum: o chefe guilherme kayak paypal calendar
    71. 71. caelum: o chefe guilherme kayak paypal calendar caelum
    72. 72. caelum: o chefe guilherme kayak paypal calendar caelum
    73. 73. caelum: o chefe guilherme kayak paypal chefe calendar caelum
    74. 74. caelum: o chefe guilherme kayak paypal chefe calendar caelum
    75. 75. em casa: minha esposa esposa = Restfulie.at("http://users.google.com") .with(esposa).get esposa.link("friends") .get["Guilherme Silveira"].link("calendar")
    76. 76. economizando # busca um voo def voos_de(site)   base = Restfulie.at(site).get   voos = base.link("opensearch").get.fill("flight").with(:from => "GRU", :to => "JFK").get end voos = voos_de("kayak") voos << voos_de("tam") voos << voos_de("gol") voos << voos_de("cvc") voo_mais_barato(voos).link("payment").post(inferno_do_cartao)
    77. 77. banco voo = voo_mais_barato(voos) banco = Restfulie.at("meubanco").auth(eu).get auth = banco.cartoes["lisa"] .authorization(1.min, voo.preco) voo.link("payment").post(auth) mais_barato(voos).link("payment")...
    78. 78. email
    79. 79. email guilherme super viagem
    80. 80. email guilherme super viagem
    81. 81. email guilherme super viagem caelum
    82. 82. email guilherme super viagem caelum
    83. 83. email guilherme super viagem caelum kayak
    84. 84. email guilherme super viagem caelum kayak
    85. 85. email guilherme super viagem caelum kayak
    86. 86. mostra esse desacoplamento!
    87. 87. que ano comprou online? 2001?
    88. 88. mudou algo?
    89. 89. mudou algo? tm l dh
    90. 90. mudou algo? tm l dh fla sh
    91. 91. mudou algo? tm l dh fla sh ke ts so c web
    92. 92. mudou algo? tm l dh fla sh ke ts so c p pt web c om im o pé ss so u
    93. 93. os serviços mudaram
    94. 94. mas você compra igualmente
    95. 95. como eu consigo comprar?
    96. 96. entrar
    97. 97. escolher
    98. 98. escolher outro
    99. 99. comprar
    100. 100. comprar
    101. 101. sequencia
    102. 102. olhar
    103. 103. olhar
    104. 104. o que posso fazer?
    105. 105. o que posso fazer?
    106. 106. fazer
    107. 107. fazer
    108. 108. bottom up design by committe mime type? microformato controlled vocabulary
    109. 109. hypermídia viabilizando a integração através da web
    110. 110. sites www.caelum.com.br www.agilenomundoreal.com.br blog.caelumobjects.com (english) frameworks onde estou? restfulie.caelum.com.br @guilhermecaelum vraptor.caelum.com.br www.tectura.com.br restfulie: ruby, java, .net, JS, python etc mais palestras no evento
    111. 111. Guilherme Silveira guilherme.silveira@caelum.com.br
    112. 112. Not Only Coffee: NOCoffee aguaquente.wordpress.com
    1. A particular slide catching your eye?

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

    ×