SlideShare uma empresa Scribd logo
Aplicações Web, 
Frameworks, 
REST e SPA 
E seja um 
programador 
mais feliz!
Quem sou eu? 
○ Graduação / Mestrado Computação UFF 
○ Líder Técnico Java STI-UFF 
○ Tópicos de Interesse 
○ Arquitetura de Software 
○Or. Agentes 
Web 
○Simuladores / Jogos 
○User eXperience
O que desenvolvo agora? 
○ Novo sistema para a Divisão de Diplomas 
usando AngularJS e WebServices Jersey
Agenda 
Framework 
WebApp 
WebService/REST 
AngularJS 
Considerações FInais
Aplicações Web são complexas!
Aplicações Web são complexas!
Aplicações Web são complexas!
Aplicações Web são complexas!
Aplicações Web são complexas! 
WebApps são complexas! 
○ Distribuídas (cliente <-> servidor), 
○ Várias linguagens (html, javascript e a 
linguagem do servidor); 
○ Segurança; 
○ Concorrência; 
○ Armazenamento de dados; 
○ Protocolo de rede (http); 
○ UX.
WebApps e Frameworks 
Por isto usamos Frameworks!
Tipos de Framework para 
WebApp 
○ Action / Request Based 
○ Component Based
Action Based 
○ Prós 
○ Arquitetura Simples 
○ Pode aproveitar arquitetura HTTP /Rest 
○ Maior poder de customização no lado do 
cliente 
○ Leve para o servidor 
○ Contras 
○ Necessário saber programação WEB (JS, 
HTML) 
○ Quanto mais rica a aplicação web, mais 
complexo a interface cliente <-> servidor
Component Based 
○ Prós 
○ Rapidez em desenvolver interfaces por 
componentes 
○ Não precisa saber programação WEB (JS, HTML) 
○ Contras 
○ Pesado para o servidor gerenciar os 
componentes 
○ Difícil customização 
○ Grande curva de aprendizagem (JSF) 
○ Não aproveita o HTTP / Rest
Single Page Application 
○ Antes 
○ Depois
Single Page Applications 
Como Implementar?
WebServices 
○ Dividir aplicação em serviços distribuídos 
○ SOA, ROA 
○ WebService = Aplicações divididas em 
serviços na web
WebServices 
○ AlunoService 
○ ObtémAluno 
○ CadastrarNovoAluno 
○ AtualizarAluno 
○ RemoveAluno 
○ FormarAluno
REST 
○ É um padrão de arquitetura que procura 
representar o domínio da aplicação somente 
como recursos (entidades) e a usar um 
conjunto de verbos (ações) fechado 
○ Voltado a WebServices, aproveita os verbos 
HTTP para representar o conjunto de ações 
fechado
REST 
Verbo 
HTTP 
Verbo 
CRUD 
Objetivo Convenção 
GET READ Obtém recurso Obtém recurso(s) 
POST CREATE Envia recurso para o 
servidor (alterando 
sempre o estado do 
servidor) 
Cria um novo recurso 
PUT UPDATE Envia recurso para o 
servidor (alterando uma 
única vez o estado do 
servidor) 
Altera um recurso 
DELETE DELETE Deleta um recurso Deleta um recurso
REST 
○ Aluno 
○ GET 
○ POST 
○ PUT 
○ DELETE 
○ Formação 
○ POST
REST 
○ (POST) www.uff.br/aluno 
○ Cria um aluno com os dados passados 
○ (GET) www.uff.br/aluno/1 
○ Obtém o aluno 1 
○ (PUT) www.uff.br/aluno/1 
○ Atualiza o aluno 1 com os dados passados 
○ (DELETE) www.uff.br/aluno/1 
○ Deleta o aluno 1 
○ (POST) ww.uff.br/aluno/1/formacao 
○ cria uma formação para o aluno 1 (forma o aluno)
JERSEY 
○ Implementa a API JAX-WS 
○ Usa anotações Java para mapear a interface do 
WebService na interface de uma classe
JERSEY
JERSEY
JERSEY
JERSEY 
Se falhar?
○ JavaScript lida com html orientado a evento 
○ on-click, on-change, on-* 
○Pode ser difícil de lidar com os eventos e o html fica 
dependente do JS
Biblioteca que quebra dependência 
entre html e js e cria uma camada de 
abstração entre navegadores 
Framework MVVM para html/JS 
Framework Web para Html/JS
Famework Web, 
no cliente?!
○AngularJS segue o 
modelo MVC e permite 
criar uma aplicação 
inteira em JS
Obs: Não tente fazer isto! Você não gostará - 
nem seu chefe - de todas as regras de negócio 
no cliente!
A rigor, duas aplicações MVC 
M) Services 
C) Scopes 
V) Html / Bind / Template / 
Diretivas 
M) Services/Entidades 
C) Classe WebService (Jersey) 
V) Formato Saida (JSON)
○ Model: Usa o padrão Service para seu backend 
○ Só existe uma instância em toda aplicação
○ Model: Existe o módulo $resource que permite criar 
services para comunicação com WebServices REST
○ Controller 
○ Populam o escopo ($scope) que permitirá preencher 
a view através do bind
Aplicações Web, Frameworks, REST e SPA
○ Controller 
○Os controllers são hierárquicos e ligados a uma tag 
html, facilitando a organização e comunicação 
Menu 
toolbar 
Content
○ View 
○ bind
○ Outros Tópicos 
○ Templating/Route 
○ Directive 
○ Filter 
○Animate
Considerações finais 
○ Facilidades 
○ App cliente fica mais rica 
○ Servidor fica mais testável e simples 
○ Boa parte do trabalho vai para o cliente
Considerações finais 
○ Nem tudo são flores 
○ Exige domínio de JavaScript 
○Duplicação de funcionalidades 
○ Jersey não é tão simples quanto parece
Agradecimentos 
○ Equipe STI 
○ DACC pelo convite
Dúvidas
Obrigado! 
marcoscortes@id.uff.br 
http://www.sti.uff.br/
OUTROS SLIDES
Tipos de Sites Web 
○ Orientados a conteúdo / CMS 
○ Orientados a tarefa / WebApp
Orientados a Conteúdo / CMS 
○ www.globo.com 
○ www.ic.uff.br 
○ www.pacoquita.com.br 
○ O usuário obtém informações e não realiza 
tarefas com o auxílio do site
Orientados a Tarefas / WebApp 
○ www.bb.com.br 
○ sistemas.uff.br/iduff 
○ drive.google.com 
○ O usuário realiza tarefas com suporta do site 
web. A maioria dos sites atualmente ora são 
orientados a conteúdo, ora a tarefas
WebApps x CMS/Or. Conteúdo 
○ WebApps 
○ Quem faz? 
○ Programadores 
○ Engenheiros de 
Software 
○ Objetivo 
○ Auxiliar tarefas 
○ CMS / Or. Conteúdo 
○ Quem Faz? 
○ Web 
Designers 
○ Designers de 
Informação 
○ Objetivo 
○ Acesso a 
informação

Mais conteúdo relacionado

Mais procurados (20)

PDF
Aula 5 java script
andreluizlc
 
PDF
Nadando em Dinheiro com jQuery
Reinaldo Junior
 
PDF
Sistema gerenciador de conteúdo
Breno Vitorino
 
PDF
Desenvolvimento web ágil com Django
Igor Sobreira
 
PDF
PHP
andreluizlc
 
PDF
Aula 8 php (intro, get e post)
andreluizlc
 
PDF
Evolução das arquiteturas para aplicações Web
Breno Vitorino
 
PDF
JavaScript
andreluizlc
 
PDF
O básico sobre Vue 2. Talk Vue Básico 1/3
Danilo Pinotti
 
PDF
Afinal, o que são Single Page Applications
Patrick Monteiro
 
PPTX
Introdução ao Asp.Net Mvc
Giovanni Bassi
 
PDF
Introducao desenvolvimento-web
Marcio Mota
 
PDF
Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Otávio Calaça Xavier
 
PDF
Java script vs vb script
Nielson Santana
 
PPTX
Módulo: 5 – Desenvolvimento de Páginas Web Dinâmicas: Javascript
Agrupamento de Escolas da Batalha
 
PDF
Por que devo aprender JavaScript?
Breno Alves
 
PDF
Melhores módulos para magento
Rodrigo Soares Biassi
 
ODP
Intro desenvolvimento-web
Carlos Eduardo Alves
 
PDF
Novidades do Magento 2
Rafael Corrêa Gomes
 
PPTX
MVVM Deep Dive - Paulo Aboim Pinto
Comunidade NetPonto
 
Aula 5 java script
andreluizlc
 
Nadando em Dinheiro com jQuery
Reinaldo Junior
 
Sistema gerenciador de conteúdo
Breno Vitorino
 
Desenvolvimento web ágil com Django
Igor Sobreira
 
Aula 8 php (intro, get e post)
andreluizlc
 
Evolução das arquiteturas para aplicações Web
Breno Vitorino
 
JavaScript
andreluizlc
 
O básico sobre Vue 2. Talk Vue Básico 1/3
Danilo Pinotti
 
Afinal, o que são Single Page Applications
Patrick Monteiro
 
Introdução ao Asp.Net Mvc
Giovanni Bassi
 
Introducao desenvolvimento-web
Marcio Mota
 
Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Otávio Calaça Xavier
 
Java script vs vb script
Nielson Santana
 
Módulo: 5 – Desenvolvimento de Páginas Web Dinâmicas: Javascript
Agrupamento de Escolas da Batalha
 
Por que devo aprender JavaScript?
Breno Alves
 
Melhores módulos para magento
Rodrigo Soares Biassi
 
Intro desenvolvimento-web
Carlos Eduardo Alves
 
Novidades do Magento 2
Rafael Corrêa Gomes
 
MVVM Deep Dive - Paulo Aboim Pinto
Comunidade NetPonto
 

Destaque (20)

PDF
QCon 2015 - Combinando AngularJS com Java EE
Rodrigo Cândido da Silva
 
PDF
ASUS - ProLibras
asustecnologia
 
PDF
Resumo boo-box
Fred Pacheco
 
PDF
SEMANARIO 6to PODER DOMINGO 27ENERO2013 Edicion 121 def
Angel Monagas
 
DOC
Servidor De Correo En Fedora
Stiven Marin
 
PPT
Autores y colaboradores 29.10.2013
Herbert Stegemann
 
PDF
Proyecto de investigacion
Camila García
 
PDF
Curso Taller Universidad Integra
Anibal Carro
 
PDF
Чемпионат по тэк для ВУЗов
Андрей Изюмников
 
PDF
14 06-09 mae-informe-diario
Pablo Simoes
 
PDF
Lista dos Postos de Turismo no Alentejo
turismo_alentejo
 
PDF
Inadi guia-para-docentes
RossyPalmaM Palma M
 
PDF
Relatório Proppi
thiagopetra
 
PDF
Ambiental - CNI
senaimais
 
PDF
Ismt Renovavel
claudia amaral
 
QCon 2015 - Combinando AngularJS com Java EE
Rodrigo Cândido da Silva
 
ASUS - ProLibras
asustecnologia
 
Resumo boo-box
Fred Pacheco
 
SEMANARIO 6to PODER DOMINGO 27ENERO2013 Edicion 121 def
Angel Monagas
 
Servidor De Correo En Fedora
Stiven Marin
 
Autores y colaboradores 29.10.2013
Herbert Stegemann
 
Proyecto de investigacion
Camila García
 
Curso Taller Universidad Integra
Anibal Carro
 
Чемпионат по тэк для ВУЗов
Андрей Изюмников
 
14 06-09 mae-informe-diario
Pablo Simoes
 
Lista dos Postos de Turismo no Alentejo
turismo_alentejo
 
Inadi guia-para-docentes
RossyPalmaM Palma M
 
Relatório Proppi
thiagopetra
 
Ambiental - CNI
senaimais
 
Ismt Renovavel
claudia amaral
 
Anúncio

Semelhante a Aplicações Web, Frameworks, REST e SPA (20)

PDF
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
André Luiz Forchesatto
 
PDF
Front end architecture
Rafael Salerno de Oliveira
 
PDF
Introdução à Servlets e JSP
ledsifes
 
PPTX
Introdução sobre desenvolvimento web
Rodrigo Rodrigues
 
PPTX
ASP.NET 5, MVC 6 e além
Fabrício Lopes Sanchez
 
PDF
Service Oriented Front-End Architecture
Cristiano Gomes
 
PPT
Java Web Dev Introdução
Marcio Marinho
 
PPTX
Introdução ao desenvolvimento da web.pptx
MarceloRosenbrock1
 
PDF
Visao geral TI03 2-0
Ale Uehara
 
PDF
Aula parte 1 de JSF 2.2
André Luiz Forchesatto
 
PPT
ASP.NET MVC para desenvolvedores Web Forms (TechEd)
Giovanni Bassi
 
PDF
RubyConf 17 - Colocando sua aplicação vue nos trilhos
Felipe Gadelha Ruoso
 
ODP
Apresentação Minas - Desenvolvendo Sites
thiagolima
 
PPTX
Desenvolvimento web - conceitos, tecnologia e tendências.
Valmir Justo
 
PDF
Drupal 8: desenvolvendo fora da ilha
Luiz Filho
 
PDF
Aula 1 ASP.NET Core com arquitetura MVC
MrioSitoe2
 
PPTX
Curso jsf
Miguel Vilaca
 
PDF
1409243945064
Fábio Junior
 
PPTX
Treinamento ASP.NET 2014
Eric Gallardo
 
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
André Luiz Forchesatto
 
Front end architecture
Rafael Salerno de Oliveira
 
Introdução à Servlets e JSP
ledsifes
 
Introdução sobre desenvolvimento web
Rodrigo Rodrigues
 
ASP.NET 5, MVC 6 e além
Fabrício Lopes Sanchez
 
Service Oriented Front-End Architecture
Cristiano Gomes
 
Java Web Dev Introdução
Marcio Marinho
 
Introdução ao desenvolvimento da web.pptx
MarceloRosenbrock1
 
Visao geral TI03 2-0
Ale Uehara
 
Aula parte 1 de JSF 2.2
André Luiz Forchesatto
 
ASP.NET MVC para desenvolvedores Web Forms (TechEd)
Giovanni Bassi
 
RubyConf 17 - Colocando sua aplicação vue nos trilhos
Felipe Gadelha Ruoso
 
Apresentação Minas - Desenvolvendo Sites
thiagolima
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Valmir Justo
 
Drupal 8: desenvolvendo fora da ilha
Luiz Filho
 
Aula 1 ASP.NET Core com arquitetura MVC
MrioSitoe2
 
Curso jsf
Miguel Vilaca
 
1409243945064
Fábio Junior
 
Treinamento ASP.NET 2014
Eric Gallardo
 
Anúncio

Aplicações Web, Frameworks, REST e SPA

  • 1. Aplicações Web, Frameworks, REST e SPA E seja um programador mais feliz!
  • 2. Quem sou eu? ○ Graduação / Mestrado Computação UFF ○ Líder Técnico Java STI-UFF ○ Tópicos de Interesse ○ Arquitetura de Software ○Or. Agentes Web ○Simuladores / Jogos ○User eXperience
  • 3. O que desenvolvo agora? ○ Novo sistema para a Divisão de Diplomas usando AngularJS e WebServices Jersey
  • 4. Agenda Framework WebApp WebService/REST AngularJS Considerações FInais
  • 9. Aplicações Web são complexas! WebApps são complexas! ○ Distribuídas (cliente <-> servidor), ○ Várias linguagens (html, javascript e a linguagem do servidor); ○ Segurança; ○ Concorrência; ○ Armazenamento de dados; ○ Protocolo de rede (http); ○ UX.
  • 10. WebApps e Frameworks Por isto usamos Frameworks!
  • 11. Tipos de Framework para WebApp ○ Action / Request Based ○ Component Based
  • 12. Action Based ○ Prós ○ Arquitetura Simples ○ Pode aproveitar arquitetura HTTP /Rest ○ Maior poder de customização no lado do cliente ○ Leve para o servidor ○ Contras ○ Necessário saber programação WEB (JS, HTML) ○ Quanto mais rica a aplicação web, mais complexo a interface cliente <-> servidor
  • 13. Component Based ○ Prós ○ Rapidez em desenvolver interfaces por componentes ○ Não precisa saber programação WEB (JS, HTML) ○ Contras ○ Pesado para o servidor gerenciar os componentes ○ Difícil customização ○ Grande curva de aprendizagem (JSF) ○ Não aproveita o HTTP / Rest
  • 14. Single Page Application ○ Antes ○ Depois
  • 15. Single Page Applications Como Implementar?
  • 16. WebServices ○ Dividir aplicação em serviços distribuídos ○ SOA, ROA ○ WebService = Aplicações divididas em serviços na web
  • 17. WebServices ○ AlunoService ○ ObtémAluno ○ CadastrarNovoAluno ○ AtualizarAluno ○ RemoveAluno ○ FormarAluno
  • 18. REST ○ É um padrão de arquitetura que procura representar o domínio da aplicação somente como recursos (entidades) e a usar um conjunto de verbos (ações) fechado ○ Voltado a WebServices, aproveita os verbos HTTP para representar o conjunto de ações fechado
  • 19. REST Verbo HTTP Verbo CRUD Objetivo Convenção GET READ Obtém recurso Obtém recurso(s) POST CREATE Envia recurso para o servidor (alterando sempre o estado do servidor) Cria um novo recurso PUT UPDATE Envia recurso para o servidor (alterando uma única vez o estado do servidor) Altera um recurso DELETE DELETE Deleta um recurso Deleta um recurso
  • 20. REST ○ Aluno ○ GET ○ POST ○ PUT ○ DELETE ○ Formação ○ POST
  • 21. REST ○ (POST) www.uff.br/aluno ○ Cria um aluno com os dados passados ○ (GET) www.uff.br/aluno/1 ○ Obtém o aluno 1 ○ (PUT) www.uff.br/aluno/1 ○ Atualiza o aluno 1 com os dados passados ○ (DELETE) www.uff.br/aluno/1 ○ Deleta o aluno 1 ○ (POST) ww.uff.br/aluno/1/formacao ○ cria uma formação para o aluno 1 (forma o aluno)
  • 22. JERSEY ○ Implementa a API JAX-WS ○ Usa anotações Java para mapear a interface do WebService na interface de uma classe
  • 27. ○ JavaScript lida com html orientado a evento ○ on-click, on-change, on-* ○Pode ser difícil de lidar com os eventos e o html fica dependente do JS
  • 28. Biblioteca que quebra dependência entre html e js e cria uma camada de abstração entre navegadores Framework MVVM para html/JS Framework Web para Html/JS
  • 29. Famework Web, no cliente?!
  • 30. ○AngularJS segue o modelo MVC e permite criar uma aplicação inteira em JS
  • 31. Obs: Não tente fazer isto! Você não gostará - nem seu chefe - de todas as regras de negócio no cliente!
  • 32. A rigor, duas aplicações MVC M) Services C) Scopes V) Html / Bind / Template / Diretivas M) Services/Entidades C) Classe WebService (Jersey) V) Formato Saida (JSON)
  • 33. ○ Model: Usa o padrão Service para seu backend ○ Só existe uma instância em toda aplicação
  • 34. ○ Model: Existe o módulo $resource que permite criar services para comunicação com WebServices REST
  • 35. ○ Controller ○ Populam o escopo ($scope) que permitirá preencher a view através do bind
  • 37. ○ Controller ○Os controllers são hierárquicos e ligados a uma tag html, facilitando a organização e comunicação Menu toolbar Content
  • 38. ○ View ○ bind
  • 39. ○ Outros Tópicos ○ Templating/Route ○ Directive ○ Filter ○Animate
  • 40. Considerações finais ○ Facilidades ○ App cliente fica mais rica ○ Servidor fica mais testável e simples ○ Boa parte do trabalho vai para o cliente
  • 41. Considerações finais ○ Nem tudo são flores ○ Exige domínio de JavaScript ○Duplicação de funcionalidades ○ Jersey não é tão simples quanto parece
  • 42. Agradecimentos ○ Equipe STI ○ DACC pelo convite
  • 46. Tipos de Sites Web ○ Orientados a conteúdo / CMS ○ Orientados a tarefa / WebApp
  • 47. Orientados a Conteúdo / CMS ○ www.globo.com ○ www.ic.uff.br ○ www.pacoquita.com.br ○ O usuário obtém informações e não realiza tarefas com o auxílio do site
  • 48. Orientados a Tarefas / WebApp ○ www.bb.com.br ○ sistemas.uff.br/iduff ○ drive.google.com ○ O usuário realiza tarefas com suporta do site web. A maioria dos sites atualmente ora são orientados a conteúdo, ora a tarefas
  • 49. WebApps x CMS/Or. Conteúdo ○ WebApps ○ Quem faz? ○ Programadores ○ Engenheiros de Software ○ Objetivo ○ Auxiliar tarefas ○ CMS / Or. Conteúdo ○ Quem Faz? ○ Web Designers ○ Designers de Informação ○ Objetivo ○ Acesso a informação