Ruby	
  on	
  Rails:	
  Um	
  estudo	
  de	
  viabilidade	
  
        em	
  ambientes	
  empresariais	
  
                ...
Problema	
  
•  O	
  arcabouço	
  Ruby	
  on	
  Rails	
  é	
  maduro	
  para	
  a	
  
   u@lização	
  no	
  desenvolviment...
Obje@vo	
  
•  Ajudar	
  na	
  escolha	
  de	
  um	
  arcabouço	
  para	
  
   desenvolvimento	
  de	
  aplicações	
  web	...
Agenda	
  
•  A	
  linguagem	
  Ruby	
  
•  O	
  arcabouço	
  Ruby	
  on	
  Rails	
  
    –  Arquitetura	
  
    –  Conven...
A	
  Linguagem	
  Ruby	
  
•  Uma	
  linguagem	
  de	
  programação	
  interpretada	
  
•  Idealizada	
  em	
  1993	
  por...
Ruby	
  on	
  Rails	
  
•  Arcabouço	
  que	
  permite	
  desenvolver	
  
   aplicações	
  web	
  apoiadas	
  por	
  banco...
Ruby	
  on	
  Rails	
  
•  Possui	
  mecanismo	
  de	
  persistência	
  e	
  
   mapeamento	
  objeto-­‐relacional	
  
•  ...
Componentes	
  
•  Ac@ve	
  Record	
  (Modelo)	
  
•  Ac@on	
  Pack	
  
   –  Ac@on	
  Controller	
  (Controlador)	
  
   ...
Arquitetura	
  MVC	
  




   Rails	
  e	
  MVC	
  
Convenções	
  
Nomeação	
  de	
  Modelo	
  
Tabela	
                                  produtos	
  
Arquivo	
              ...
Agenda	
  
•    Ac@ve	
  Record	
  
•    Ac@on	
  Pack	
  
•    Migra@ons	
  
•    Segurança	
  
Ac@ve	
  Record	
  
•  Componente	
  usado	
  na	
  camada	
  de	
  Modelo	
  
   (MVC)	
  
•  Mecanismo	
  de	
  persistê...
Exemplo	
  de	
  programação	
  centrada	
  de	
  
                      BD	
  
Exemplo	
  de	
  classe	
  modelo	
  referente	
  a	
  
  tabela	
  com	
  as	
  colunas	
  nome	
  e	
  id	
  




      ...
Ac@on	
  Pack	
  
•  Gerencia	
  recepção	
  de	
  solicitações	
  (ação	
  a	
  ser	
  
   executada)	
  do	
  navegador	...
Exemplo:	
  Controlador	
  e	
  Visão	
  
URL:	
  hfp://exemplo.com/blog/index	
  
Migra@ons	
  
•  Mecanismo	
  de	
  versão	
  de	
  banco	
  de	
  dados	
  
•  Uma	
  subclasse	
  de	
  Ac#veRecord::Mig...
Segurança	
  

Possíveis	
  Vulnerabilidades	
  e	
  
     Melhores	
  Prá@cas	
  
Segurança:	
  Sessão	
  
•  Chave	
  de	
  sessão	
  é	
  armazenada	
  em	
  um	
  cookie	
  
   no	
  navegador	
  
•  C...
Segurança:	
  Sessão	
  
•  Não	
  é	
  indicado	
  armazenar	
  dados	
  importantes	
  
   na	
  sessão	
  
•  É	
  indi...
Possível	
  vulnerabilidade:	
  	
  
            Cross-­‐Site	
  Scrip@ng	
  (XSS)	
  
•  Inserção	
  de	
  código	
  HTML...
XSS	
  -­‐	
  Prevenção	
  
•  No	
  caso	
  onde	
  o	
  usuário	
  não	
  pode	
  inserir	
  
   nenhum	
  código	
  HTM...
XSS	
  -­‐	
  Prevenção	
  
•  No	
  caso	
  onde	
  HTML	
  é	
  permi@do	
  como	
  
   entrada,	
  mas	
  não	
  JavaSc...
Agenda	
  -­‐	
  Desenvolvimento	
  
•    Ruby	
  versus	
  Outras	
  Linguagens	
  
•    Ac@ve	
  Record	
  versus	
  Hib...
Ruby	
  vs	
  outras	
  linguagens	
  
Ruby	
  versus	
  	
  
                     Outras	
  Linguagens	
  
•  Baseado	
  no	
  estudo	
  An	
  Empirical	
  Comp...
Resultado	
  
•  Linguagens	
  interpretadas	
  tendem	
  a	
  ter	
  um	
  
   ciclo	
  de	
  desenvolvimento	
  mais	
  ...
Resultados	
  
•  O	
  sistema	
  de	
  @pos	
  está@co	
  de	
  Java	
  
   proporciona	
  um	
  código	
  mais	
  confiáv...
Ac@ve	
  Record	
  	
  
   versus	
  
 Hibernate	
  
Ac@ve	
  Record	
  vs.	
  Hibernate	
  
•  Gerador	
  de	
  código	
  do	
  Rails	
  permite	
  
   proto@pação	
  do	
  m...
Modelo	
  e	
  migra@on	
  gerados	
  
Modelo	
  equivalente	
  em	
  Java	
  
•  Devem	
  ser	
  implementados	
  manualmente	
  a	
  classe	
  
   Modelo	
  e	...
Mapeamento	
  XML	
  do	
  Hibernate	
  
Armazenando	
  dados	
  

Ac8ve	
  Record	
          Hibernate	
  
Resultado	
  
Vantagens	
                                  Desvantagens	
  
•  O	
  gerador	
  de	
  código	
  do	
    •  ...
Ac@on	
  Pack	
  
     versus	
  
JavaServer	
  Faces	
  
JavaServer	
  Faces	
  (Controlador)	
  
•  Ações	
  e	
  condições	
  de	
  acionamento	
  devem	
  ser	
  
   especificad...
Ac@on	
  Pack:	
  Ac@on	
  Controller	
  
                 (Controlador)	
  
•  Ações	
  são	
  definidas	
  no	
  arquivo	...
Ac@on	
  Pack:	
  Ac@on	
  View	
  (Visão)	
  
•  Camada	
  de	
  visão	
  implementada	
  em	
  
   Embedded	
  Ruby	
  (...
JavaServer	
  Faces	
  
•  U@liza	
  
   elementos	
  de	
  
   marcação	
  
   está@ca	
  similar	
  
   ao	
  HTML:	
  
Resultado	
  
Vantagens	
                                    Desvantagens	
  

•  Configuração	
  das	
  ações	
  do	
   • ...
Conclusão	
  
•  Ruby	
  acelera	
  o	
  desenvolvimento	
  e	
  aumenta	
  a	
  
   produ@vidade	
  
•  Ac@ve	
  Record	
...
Conclusão	
  
•  JavaServer	
  Faces	
  possui	
  uma	
  sintaxe	
  mais	
  
   clara	
  e	
  fácil	
  de	
  manter	
  na	...
Ruby	
  on	
  Rails:	
  Um	
  estudo	
  de	
  viabilidade	
  
        em	
  ambientes	
  empresariais	
  
                ...
Upcoming SlideShare
Loading in …5
×

Ruby on Rails: um estudo de viabilidade em ambientes empresariais

2,924 views

Published on

Apresentação de pesquisa onde é feita uma revisão bibliográfica sobre a linguagem de programação Ruby e o arcabouço Ruby on Rails, os quais são utilizados para o desenvolvimento ágil de aplicações para plataforma web. Nesta são analisados diversos requisitos necessários para o desenvolvimento de aplicações eficientes e de forma produtiva.

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

No Downloads
Views
Total views
2,924
On SlideShare
0
From Embeds
0
Number of Embeds
13
Actions
Shares
0
Downloads
46
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Ruby on Rails: um estudo de viabilidade em ambientes empresariais

  1. 1. Ruby  on  Rails:  Um  estudo  de  viabilidade   em  ambientes  empresariais   Trabalho  de  Conclusão  de  Curso   Aluno:  Rodrigo  de  Jesus  Recio   Professor  Orientador:  Rodrigo  Assira@  Dias   Fundação  Armando  Alvares  Penteado  -­‐  FAAP   Faculdade  de  Computação  e  Informá@ca  
  2. 2. Problema   •  O  arcabouço  Ruby  on  Rails  é  maduro  para  a   u@lização  no  desenvolvimento  de  aplicações   corpora@vas?   •  Quais  suas  vantagens  em  comparação  a   seus  concorrentes?  
  3. 3. Obje@vo   •  Ajudar  na  escolha  de  um  arcabouço  para   desenvolvimento  de  aplicações  web   •  Comparar  a  linguagem  e  o  arcabouço  com   seus  principais  concorrentes  no  mercado   •  Analisar  aspectos  como  produ@vidade,   confiabilidade  e  desempenho      
  4. 4. Agenda   •  A  linguagem  Ruby   •  O  arcabouço  Ruby  on  Rails   –  Arquitetura   –  Convenções  
  5. 5. A  Linguagem  Ruby   •  Uma  linguagem  de  programação  interpretada   •  Idealizada  em  1993  por  Yukihiro  Matsumoto   •  Baseada  no  Python  e  Perl   •  Suporta  múl@plos  paradigmas  de   programação:  funcional,  orientado  a  objetos,   impera@vo  e  reflexivo   •  Possui  sistema  de  @pos  dinâmico  
  6. 6. Ruby  on  Rails   •  Arcabouço  que  permite  desenvolver   aplicações  web  apoiadas  por  banco  de  dados   •  Suporta  proto@pação  de  componentes   através  de  geradores  de  código   •  Favorece  convenção  no  lugar  de  configuração  
  7. 7. Ruby  on  Rails   •  Possui  mecanismo  de  persistência  e   mapeamento  objeto-­‐relacional   •  Possui  sistema  de  gerenciamento  de  versões   de  bancos  de  dados   •  É  baseado  na  arquitetura  Modelo-­‐Visão-­‐ Controlador  (MVC)  
  8. 8. Componentes   •  Ac@ve  Record  (Modelo)   •  Ac@on  Pack   –  Ac@on  Controller  (Controlador)   –  Ac@on  View  (Visão)   •  Ac@on  Mailer   •  Ac@ve  Support  (estende  bibliotecas  da   linguagem  Ruby)  
  9. 9. Arquitetura  MVC   Rails  e  MVC  
  10. 10. Convenções   Nomeação  de  Modelo   Tabela   produtos   Arquivo   app/models/produto.rb   Classe   Produto   Nomeação  de  Controlador   URL   hfp://endereco.com/loja/listar   Arquivo   app/controllers/loja_controller.rb   Classe   LojaController   Método  (ação)   listar   Nomeação  de  Visão   URL   hfp://endereco.com/loja/listar   Arquivo   app/views/loja/listar.html.erb  
  11. 11. Agenda   •  Ac@ve  Record   •  Ac@on  Pack   •  Migra@ons   •  Segurança  
  12. 12. Ac@ve  Record   •  Componente  usado  na  camada  de  Modelo   (MVC)   •  Mecanismo  de  persistência  e  mapeamento   objeto-­‐relacional   •  Alterna@va  ao  modelo  de  programação   centrada  de  banco  de  dados  
  13. 13. Exemplo  de  programação  centrada  de   BD  
  14. 14. Exemplo  de  classe  modelo  referente  a   tabela  com  as  colunas  nome  e  id   Exemplo  de  u@lização  
  15. 15. Ac@on  Pack   •  Gerencia  recepção  de  solicitações  (ação  a  ser   executada)  do  navegador  e  a  resposta  (página   a  ser  visualizada)  correspondente   •  Componente  usado  nas  camadas  Controlador   e  Visão   •  Controlador  é  implementado  através  de   subclasse  de  Ac#onController::Base   •  Visão  implementada  através  de  Embedded   Ruby  (ERB)  
  16. 16. Exemplo:  Controlador  e  Visão   URL:  hfp://exemplo.com/blog/index  
  17. 17. Migra@ons   •  Mecanismo  de  versão  de  banco  de  dados   •  Uma  subclasse  de  Ac#veRecord::Migra#on   define  como  fazer  e  desfazer  alterações  em   um  schema  de  banco  de  dados   •  Cada  versão  do  banco  tem  um  migra@on   correspondente   •  É  possível  alternar  entre  versões  de  banco   usando  o  comando  rake  db:migrate   VERSION=XXXX    
  18. 18. Segurança   Possíveis  Vulnerabilidades  e   Melhores  Prá@cas  
  19. 19. Segurança:  Sessão   •  Chave  de  sessão  é  armazenada  em  um  cookie   no  navegador   •  Cifrada  usando  HMAC  a  par@r  de  uma  chave   secreta  e  os  dados  armazenados  na  sessão   •  Recomendado  chave  secreta  grande,  Rails   u@liza  30  caracteres  
  20. 20. Segurança:  Sessão   •  Não  é  indicado  armazenar  dados  importantes   na  sessão   •  É  indicado  u@lizar  a  chave  da  sessão  do   usuário  para  iden@ficação  e  armazenar  os   dados  no  lado  do  servidor   •  É  recomendado  reiniciar  sessão  após  usuário   efetuar  logout  
  21. 21. Possível  vulnerabilidade:     Cross-­‐Site  Scrip@ng  (XSS)   •  Inserção  de  código  HTML  ou  JavaScript   por  usuários  maliciosos  em  páginas  vistas   por  outros  usuários  
  22. 22. XSS  -­‐  Prevenção   •  No  caso  onde  o  usuário  não  pode  inserir   nenhum  código  HTML,  usar  o  método  “h (string)”  para  filtrar  cada  entrada  do  usuário  e   remover  código  HTML  
  23. 23. XSS  -­‐  Prevenção   •  No  caso  onde  HTML  é  permi@do  como   entrada,  mas  não  JavaScript,  u@lizar  o  método   “sani@ze(string)”:   •  Filtra  códigos  maliciosos  em  unicode,  ascii  e   hexadecimal  
  24. 24. Agenda  -­‐  Desenvolvimento   •  Ruby  versus  Outras  Linguagens   •  Ac@ve  Record  versus  Hibernate   •  Ac@on  Pack  versus  JavaServer  Faces   •  Conclusão  
  25. 25. Ruby  vs  outras  linguagens  
  26. 26. Ruby  versus     Outras  Linguagens   •  Baseado  no  estudo  An  Empirical  Comparison   of  C,  C++,  Java,  Perl,  Python,  Rexx  and  Tcl  de   Lutz  Prechelt  que  dividiu  as  linguagens  nos   grupos  script  e  não  script  e  o  ar@go  C++,  Java,   Python  versus  Ruby  de  David  Howard  
  27. 27. Resultado   •  Linguagens  interpretadas  tendem  a  ter  um   ciclo  de  desenvolvimento  mais  rápido   •  Java  é  bem  mais  rápido  que  Ruby   •  Sistema  de  @pos  dinâmico  de  Ruby   proporciona  maior  produ@vidade  porém   aumenta  o  risco  de  ocorrer  uma  exceção  em   tempo  de  execução  
  28. 28. Resultados   •  O  sistema  de  @pos  está@co  de  Java   proporciona  um  código  mais  confiável  porém   diminui  a  produ@vidade   •  Ruby  tem  um  consumo  de  memória  bem   menor  que  Java  
  29. 29. Ac@ve  Record     versus   Hibernate  
  30. 30. Ac@ve  Record  vs.  Hibernate   •  Gerador  de  código  do  Rails  permite   proto@pação  do  modelo  e  de  um  Migra#on   referente  a  este  modelo  
  31. 31. Modelo  e  migra@on  gerados  
  32. 32. Modelo  equivalente  em  Java   •  Devem  ser  implementados  manualmente  a  classe   Modelo  e  arquivo  XML  de  mapeamento  com  o  banco  
  33. 33. Mapeamento  XML  do  Hibernate  
  34. 34. Armazenando  dados   Ac8ve  Record   Hibernate  
  35. 35. Resultado   Vantagens   Desvantagens   •  O  gerador  de  código  do   •  Não  ter  uma  representação   Rails  permite  um   do  modelo  relacional  na   desenvolvimento  mais  veloz   classe  Modelo  pode  tornar-­‐ •  Não  é  necessário  escrever   se  uma  dificuldade  em   códigos  que  representam  os   projetos  mais  complexos,   atributos  na  classe  Modelo   onde  existam  algumas   centenas  de  tabelas  e   colunas  no  banco  de  dados  
  36. 36. Ac@on  Pack   versus   JavaServer  Faces  
  37. 37. JavaServer  Faces  (Controlador)   •  Ações  e  condições  de  acionamento  devem  ser   especificadas  manualmente  no  arquivo  faces-­‐ config.xml:    
  38. 38. Ac@on  Pack:  Ac@on  Controller   (Controlador)   •  Ações  são  definidas  no  arquivo  config/ routes.rb  de  forma  mais  abrangente   (convenção  no  lugar  de  configuração):  
  39. 39. Ac@on  Pack:  Ac@on  View  (Visão)   •  Camada  de  visão  implementada  em   Embedded  Ruby  (ERB),  exemplo:  
  40. 40. JavaServer  Faces   •  U@liza   elementos  de   marcação   está@ca  similar   ao  HTML:  
  41. 41. Resultado   Vantagens   Desvantagens   •  Configuração  das  ações  do   •  Não  possui  uma  sintaxe  de   Rails  pode  ser  feita  de  forma   marcação  está@ca  similar  ao   mais  fácil  e  flexível   HTML  
  42. 42. Conclusão   •  Ruby  acelera  o  desenvolvimento  e  aumenta  a   produ@vidade   •  Ac@ve  Record  é  mais  produ@vo  em  projetos   simples  mas  pode  tornar-­‐se  mais  trabalhoso   em  projetos  mais  complexos   •  O  Rails  permite  gerenciar  de  forma  controlada   as  alterações  de  banco  de  dados   proporcionando  mais  organização  e   flexibilidade  ao  desenvolvimento  
  43. 43. Conclusão   •  JavaServer  Faces  possui  uma  sintaxe  mais   clara  e  fácil  de  manter  na  camada  de  Visão  do   que  o  Rails  que  mescla  código  Ruby  com   HTML   •  O  Rails  não  é  a  prova  de  falhas,  porém  é   possível  prevenir  contra  possíveis   vulnerabilidades  de  segurança  
  44. 44. Ruby  on  Rails:  Um  estudo  de  viabilidade   em  ambientes  empresariais   Trabalho  de  Conclusão  de  Curso   Aluno:  Rodrigo  de  Jesus  Recio   Professor  Orientador:  Rodrigo  Assira@  Dias   Fundação  Armando  Alvares  Penteado  -­‐  FAAP   Faculdade  de  Computação  e  Informá@ca  

×