SlideShare uma empresa Scribd logo
1 de 49
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
○ 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

Aula 5 java script
Aula 5   java scriptAula 5   java script
Aula 5 java scriptandreluizlc
 
Nadando em Dinheiro com jQuery
Nadando em Dinheiro com jQueryNadando em Dinheiro com jQuery
Nadando em Dinheiro com jQueryReinaldo Junior
 
Sistema gerenciador de conteúdo
Sistema gerenciador de conteúdoSistema gerenciador de conteúdo
Sistema gerenciador de conteúdoBreno Vitorino
 
Desenvolvimento web ágil com Django
Desenvolvimento web ágil com DjangoDesenvolvimento web ágil com Django
Desenvolvimento web ágil com DjangoIgor Sobreira
 
Aula 8 php (intro, get e post)
Aula 8   php (intro, get e post)Aula 8   php (intro, get e post)
Aula 8 php (intro, get e post)andreluizlc
 
Evolução das arquiteturas para aplicações Web
Evolução das arquiteturas para aplicações WebEvolução das arquiteturas para aplicações Web
Evolução das arquiteturas para aplicações WebBreno Vitorino
 
O básico sobre Vue 2. Talk Vue Básico 1/3
O básico sobre Vue 2. Talk Vue Básico 1/3O básico sobre Vue 2. Talk Vue Básico 1/3
O básico sobre Vue 2. Talk Vue Básico 1/3Danilo Pinotti
 
Afinal, o que são Single Page Applications
Afinal, o que são Single Page ApplicationsAfinal, o que são Single Page Applications
Afinal, o que são Single Page ApplicationsPatrick Monteiro
 
Introdução ao Asp.Net Mvc
Introdução ao Asp.Net MvcIntrodução ao Asp.Net Mvc
Introdução ao Asp.Net MvcGiovanni Bassi
 
Introducao desenvolvimento-web
Introducao desenvolvimento-webIntroducao desenvolvimento-web
Introducao desenvolvimento-webMarcio Mota
 
Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAXDesenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAXOtávio Calaça Xavier
 
Java script vs vb script
Java script vs vb scriptJava script vs vb script
Java script vs vb scriptNielson Santana
 
Módulo: 5 – Desenvolvimento de Páginas Web Dinâmicas: Javascript
Módulo: 5 – Desenvolvimento de Páginas Web Dinâmicas: JavascriptMódulo: 5 – Desenvolvimento de Páginas Web Dinâmicas: Javascript
Módulo: 5 – Desenvolvimento de Páginas Web Dinâmicas: JavascriptAgrupamento de Escolas da Batalha
 
Por que devo aprender JavaScript?
Por que devo aprender JavaScript?Por que devo aprender JavaScript?
Por que devo aprender JavaScript?Breno Alves
 
MVVM Deep Dive - Paulo Aboim Pinto
MVVM Deep Dive - Paulo Aboim PintoMVVM Deep Dive - Paulo Aboim Pinto
MVVM Deep Dive - Paulo Aboim PintoComunidade NetPonto
 

Mais procurados (20)

Aula 5 java script
Aula 5   java scriptAula 5   java script
Aula 5 java script
 
Nadando em Dinheiro com jQuery
Nadando em Dinheiro com jQueryNadando em Dinheiro com jQuery
Nadando em Dinheiro com jQuery
 
Sistema gerenciador de conteúdo
Sistema gerenciador de conteúdoSistema gerenciador de conteúdo
Sistema gerenciador de conteúdo
 
Desenvolvimento web ágil com Django
Desenvolvimento web ágil com DjangoDesenvolvimento web ágil com Django
Desenvolvimento web ágil com Django
 
PHP
PHPPHP
PHP
 
Aula 8 php (intro, get e post)
Aula 8   php (intro, get e post)Aula 8   php (intro, get e post)
Aula 8 php (intro, get e post)
 
Evolução das arquiteturas para aplicações Web
Evolução das arquiteturas para aplicações WebEvolução das arquiteturas para aplicações Web
Evolução das arquiteturas para aplicações Web
 
JavaScript
JavaScriptJavaScript
JavaScript
 
O básico sobre Vue 2. Talk Vue Básico 1/3
O básico sobre Vue 2. Talk Vue Básico 1/3O básico sobre Vue 2. Talk Vue Básico 1/3
O básico sobre Vue 2. Talk Vue Básico 1/3
 
Afinal, o que são Single Page Applications
Afinal, o que são Single Page ApplicationsAfinal, o que são Single Page Applications
Afinal, o que são Single Page Applications
 
Introdução ao Asp.Net Mvc
Introdução ao Asp.Net MvcIntrodução ao Asp.Net Mvc
Introdução ao Asp.Net Mvc
 
Introducao desenvolvimento-web
Introducao desenvolvimento-webIntroducao desenvolvimento-web
Introducao desenvolvimento-web
 
Desenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAXDesenvolvimento em três camadas com PHP 5, MVC e AJAX
Desenvolvimento em três camadas com PHP 5, MVC e AJAX
 
Java script vs vb script
Java script vs vb scriptJava script vs vb script
Java script vs vb script
 
Módulo: 5 – Desenvolvimento de Páginas Web Dinâmicas: Javascript
Módulo: 5 – Desenvolvimento de Páginas Web Dinâmicas: JavascriptMódulo: 5 – Desenvolvimento de Páginas Web Dinâmicas: Javascript
Módulo: 5 – Desenvolvimento de Páginas Web Dinâmicas: Javascript
 
Por que devo aprender JavaScript?
Por que devo aprender JavaScript?Por que devo aprender JavaScript?
Por que devo aprender JavaScript?
 
Melhores módulos para magento
Melhores módulos para magentoMelhores módulos para magento
Melhores módulos para magento
 
Intro desenvolvimento-web
Intro desenvolvimento-webIntro desenvolvimento-web
Intro desenvolvimento-web
 
Novidades do Magento 2
Novidades do Magento 2Novidades do Magento 2
Novidades do Magento 2
 
MVVM Deep Dive - Paulo Aboim Pinto
MVVM Deep Dive - Paulo Aboim PintoMVVM Deep Dive - Paulo Aboim Pinto
MVVM Deep Dive - Paulo Aboim Pinto
 

Destaque (20)

QCon 2015 - Combinando AngularJS com Java EE
QCon 2015 - Combinando AngularJS com Java EEQCon 2015 - Combinando AngularJS com Java EE
QCon 2015 - Combinando AngularJS com Java EE
 
ASUS - ProLibras
ASUS - ProLibrasASUS - ProLibras
ASUS - ProLibras
 
Resumo boo-box
Resumo boo-boxResumo boo-box
Resumo boo-box
 
SEMANARIO 6to PODER DOMINGO 27ENERO2013 Edicion 121 def
SEMANARIO 6to PODER DOMINGO 27ENERO2013 Edicion 121 defSEMANARIO 6to PODER DOMINGO 27ENERO2013 Edicion 121 def
SEMANARIO 6to PODER DOMINGO 27ENERO2013 Edicion 121 def
 
Servidor De Correo En Fedora
Servidor De Correo En FedoraServidor De Correo En Fedora
Servidor De Correo En Fedora
 
Autores y colaboradores 29.10.2013
Autores y colaboradores 29.10.2013Autores y colaboradores 29.10.2013
Autores y colaboradores 29.10.2013
 
Proyecto de investigacion
Proyecto de investigacionProyecto de investigacion
Proyecto de investigacion
 
Curso Taller Universidad Integra
Curso Taller Universidad IntegraCurso Taller Universidad Integra
Curso Taller Universidad Integra
 
Чемпионат по тэк для ВУЗов
Чемпионат по тэк для ВУЗовЧемпионат по тэк для ВУЗов
Чемпионат по тэк для ВУЗов
 
14 06-09 mae-informe-diario
14 06-09 mae-informe-diario14 06-09 mae-informe-diario
14 06-09 mae-informe-diario
 
Planejamento Oui
Planejamento OuiPlanejamento Oui
Planejamento Oui
 
Lista dos Postos de Turismo no Alentejo
Lista dos Postos de Turismo no AlentejoLista dos Postos de Turismo no Alentejo
Lista dos Postos de Turismo no Alentejo
 
Inadi guia-para-docentes
Inadi guia-para-docentesInadi guia-para-docentes
Inadi guia-para-docentes
 
Relatório Proppi
Relatório ProppiRelatório Proppi
Relatório Proppi
 
Carlos
CarlosCarlos
Carlos
 
Ambiental - CNI
Ambiental - CNIAmbiental - CNI
Ambiental - CNI
 
Jornal
Jornal Jornal
Jornal
 
RCs Legal Highs
RCs Legal HighsRCs Legal Highs
RCs Legal Highs
 
Ismt Renovavel
Ismt RenovavelIsmt Renovavel
Ismt Renovavel
 
Gragoata24web
Gragoata24webGragoata24web
Gragoata24web
 

Semelhante a WebApps, Frameworks e REST

Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3André Luiz Forchesatto
 
Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSPledsifes
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento webRodrigo Rodrigues
 
Service Oriented Front-End Architecture
Service Oriented Front-End ArchitectureService Oriented Front-End Architecture
Service Oriented Front-End ArchitectureCristiano Gomes
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev IntroduçãoMarcio Marinho
 
Introdução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptxIntrodução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptxMarceloRosenbrock1
 
Visao geral TI03 2-0
Visao geral TI03 2-0Visao geral TI03 2-0
Visao geral TI03 2-0Ale Uehara
 
ASP.NET MVC para desenvolvedores Web Forms (TechEd)
ASP.NET MVC para desenvolvedores Web Forms (TechEd)ASP.NET MVC para desenvolvedores Web Forms (TechEd)
ASP.NET MVC para desenvolvedores Web Forms (TechEd)Giovanni Bassi
 
RubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhosRubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhosFelipe Gadelha Ruoso
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sitesthiagolima
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Valmir Justo
 
Drupal 8: desenvolvendo fora da ilha
Drupal 8: desenvolvendo fora da ilhaDrupal 8: desenvolvendo fora da ilha
Drupal 8: desenvolvendo fora da ilhaLuiz Filho
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Eric Gallardo
 

Semelhante a WebApps, Frameworks e REST (20)

Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3
 
Front end architecture
Front end architectureFront end architecture
Front end architecture
 
Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSP
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
 
ASP.NET 5, MVC 6 e além
ASP.NET 5, MVC 6 e alémASP.NET 5, MVC 6 e além
ASP.NET 5, MVC 6 e além
 
Service Oriented Front-End Architecture
Service Oriented Front-End ArchitectureService Oriented Front-End Architecture
Service Oriented Front-End Architecture
 
Java Web Dev Introdução
Java Web Dev IntroduçãoJava Web Dev Introdução
Java Web Dev Introdução
 
Introdução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptxIntrodução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptx
 
Visao geral TI03 2-0
Visao geral TI03 2-0Visao geral TI03 2-0
Visao geral TI03 2-0
 
Aula parte 1 de JSF 2.2
Aula parte 1 de JSF 2.2Aula parte 1 de JSF 2.2
Aula parte 1 de JSF 2.2
 
Jsf
JsfJsf
Jsf
 
ASP.NET MVC para desenvolvedores Web Forms (TechEd)
ASP.NET MVC para desenvolvedores Web Forms (TechEd)ASP.NET MVC para desenvolvedores Web Forms (TechEd)
ASP.NET MVC para desenvolvedores Web Forms (TechEd)
 
RubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhosRubyConf 17 - Colocando sua aplicação vue nos trilhos
RubyConf 17 - Colocando sua aplicação vue nos trilhos
 
Apresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo SitesApresentação Minas - Desenvolvendo Sites
Apresentação Minas - Desenvolvendo Sites
 
Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.Desenvolvimento web - conceitos, tecnologia e tendências.
Desenvolvimento web - conceitos, tecnologia e tendências.
 
Drupal 8: desenvolvendo fora da ilha
Drupal 8: desenvolvendo fora da ilhaDrupal 8: desenvolvendo fora da ilha
Drupal 8: desenvolvendo fora da ilha
 
Curso jsf
Curso jsfCurso jsf
Curso jsf
 
1409243945064
14092439450641409243945064
1409243945064
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014
 
Framework web 02 - 2016
Framework web 02 - 2016Framework web 02 - 2016
Framework web 02 - 2016
 

WebApps, Frameworks e REST

  • 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
  • 36.
  • 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