EA975 - Laboratório de Engenharia de Software

Documentos relacionados
EA975 - Laboratório de Engenharia de Software

EA975 - Laboratório de Engenharia de Software

REST RESTfulWeb Services JAX-RS

Instrutor: Eder Martins Franco

Web Services REST. Sistemas Distribuídos. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo

Compreender as diferenças entre os vários métodos e códigos de erro HTTP. Conhecer as linguagens fundamentais para programação para a Web

DESENVOLVIMENTO DE SISTEMAS WEB. Lista de Exercícios AV2-01. Luiz Leão

Protocolo HTTP. Professor Leonardo Larback

EXERCÍCIOS DE REVISÃO DE CONTEÚDO QUESTÕES DISSERTATIVAS

Classes de Projeto. Prof. Anderson Cavalcanti UFRN-CT-DCA

Engenharia de Software Orientada a objetos. Prof. Rogério Celestino dos Santos

modelos, bancos de dados e active record

Geração de eventos para atuação do dispositivo IoT via Node-Red utilizando cloud USP

Web Services REST JAX-RS

Webservices LEANDRO MENDES FERREIRA

Web I F R N I N S T I T U TO F E D E R A L D E E D U C A Ç Ã O, C I Ê N C I A E T E C N O LO G I A D O R I O G R A N D E D O N R T E.

STD29006 Sistemas Distribuídos

Desenvolvendo Aplicações RESTFul utilizando Node.js

Criando e consumindo Web service REST com PHP e JSON. Palestrante: Weiberlan Garcia

Introdução. descrever os tipos de interfaces e linguagens oferecidas por um SGBD. mostrar o ambiente de programas dos SGBD s

Web Services. Professor: Ricardo Luis dos Santos IFSUL Campus Sapucaia do Sul

arquitetura shared-nothing em 3 camadas

AJAX (Asynchronous Javascript And XML)

Análise e Projeto de Software

PROGRAMAÇÃO SERVIDOR PADRÕES MVC E DAO EM SISTEMAS WEB. Prof. Dr. Daniel Caetano

Projecto Integrador. Introdução ao REST. Material de suporte às aulas de Proj. Integrador (Nuno Preguiça) Copyright DI FCT/ UNL / 1

Protótipo de uma ferramenta de apoio para desenvolvimento de sistemas web para WebIntegrator

BCD29008 Banco de dados

Análise e Projeto de Software Parte II. Marcos Dósea

Noções do padrão MVC e DAO

Desenvolvimento Web TCC Turma A-1

REST Um Estilo de Arquitetura de Sistemas Distribuídos

1.2- Ambientes de Middleware

Integração de sistemas utilizando Web Services do tipo REST

Nesta disciplina aprenderemos. HTML CSS JavaScript Jquery PHP

Aula 11 Introdução ao Java Script

2 Versão 1: Funcionalidade Básica e Interface Web

Universidade Federal de Goiás Estilos Arquiteturais

Leonardo Zorzo Carbone. Orientador: Adilson Vahldick

PROJETO DE PROGRAMAS. Projeto de Programas PPR0001

código belo vs. legado e qualidade de software

INTEGRAÇÃO DA METODOLOGIA DE DESENVOLVIMENTO AJAX COM SERVLETS JAVA

Projecto Integrador. Introdução ao REST. Material de suporte às aulas de Proj. Integrador (Nuno Preguiça) Copyright DI FCT/ UNL / 1

FURBMOBILE: UMA APLICAÇÃO PARA VISUALIZAÇÃO E ACOMPANHAMENTO DA MATRIZ CURRICULAR

Service Oriented Architecture SOA

DIFERENÇAS NO DESENVOLVIMENTO DE APLICAÇÕES WEB COM BD TRADICIONAL E BD NOSQL MONGODB

O que se espera para o futuro dos Web Services? As tecnologias são respectivamente JSON e REST.

Introdução à Informática

Introdução ao Javascript

Rui Carneiro, Rui Pereira, Tiago Orfão

Pré-requisitos: Conhecimentos de informática gerencial e lógica de programação.

Aula 05. Infraestrutura de TI: hardware e software Pearson. Todos os direitos reservados.

O CMS JOOMLA! UM GUIA PARA INICIANTES

Banco de Dados. Perspectiva Histórica dos Bancos de Dados. Prof. Walteno Martins Parreira Jr

Introdução a Web Services

2 Instalando e configurando o ambiente de desenvolvimento do Microsoft SQL Server

AJAX. Prof. Marcos Alexandruk

Simon Holmes. Novatec

Curso de Aprendizado Industrial Desenvolvedor WEB

PROTÓTIPO DE UM SISTEMA DE MONITORAMENTO DE ANIMAIS DOMÉSTICOS UTILIZANDO RFID.

Desenvolvimento de Sistemas Corporativos Aula 1.3 Motivação de DSC Visão geral de Arquiteturas. Prof. Bruno Moreno

Manipulação de Dados em PHP (Integração PHP e MySql) Parte 1

Arquitetura em Camadas

Administração de Sistemas Operacionais. Prof. Marlon Marcon

Adrian Mejia. Novatec

Aula 01 Conceito de Banco de Dados e SGBD

Aula 06 Sistemas Embarcados LT38C

CURSO DESENVOLVEDOR JAVA WEB E FLEX Setembro de 2010 à Janeiro de 2011

Introdução Diagrama de Classes Diagrama de Seqüência Diagrama de Atividades. Diagramas UML. Classe, Seqüência e Atividades. Marcio E. F.

Sistema de Avaliação do Docente pelo Discente e Auto-Avaliação do Docente (SIAV)

1.5 PROGRAMAÇÃO DE JOGOS EM AMBIENTE DE REA LIDADE AUMENTADA AMBIENTES INTEGRADOS DE DESENVOLVIMENTO DE JOGOS 19

Objetos e Componentes Distribuídos: EJB

BANCO DE DADOS. Araújo Lima. Fev / Araújo

Redes de Computadores e Aplicações Camada de aplicação IGOR ALVES

Arquiteturas SOA, WOA, e REST

Conceitos de Orientação a Objetos

Arquitecturas de Software Enunciado de Projecto

Sistemas distribuídos. Prof. Emiliano Monteiro

Projeto. Observatório Nacional de Clima e Saúde

Banco de dados POO Márcio Delamaro. Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP

Introdução aos Sistemas Operacionais

CURSO DESENVOLVEDOR JAVA Edição 2010

Introdução. O que é um Banco de Dados (BD)?

Livro texto: Capítulo 1

PROGRAMAÇÃO PARA INTERNET RICA RICH INTERNET APPLICATIONS

Exercício Programa Mini Web Server

Arquitetura de sistemas distribuídos

Suporte Nativo a XML no Oracle 10g

Use a Cabeça! FREEMAN, Eric e Elisabeth. HTML com CSS e XHTML BASHMAN, Brian / SIERRA Kathy / BATES, Bert. Servlets & JSP

Unidade 1 Introdução

PROGRAMAÇÃO ORIENTADA A OBJETOS. Aula 09a- Acessando os dados através JDBC

TRIGGERS Temas abordados

SimpleXML: Integrando PHP e XML de maneira simples. Anderson Casimiro

REST. Caio Nakashima

ANEXO III INTEGRAÇÃO SISTEMA PPE COM SOLUÇÃO DE FILMAGENS

Prof. Romulo Fagundes Cantanhede. Node.JS. O poder do JavaScript do lado do Servidor

Transcrição:

EA975 - Laboratório de Engenharia de Software Turmas K/L - 2017 Aula 1 O que vamos desenvolver? Vamos desenvolver uma aplicação distribuída, empregando a arquitetura 3-Tier segundo o estilo REST/HTTP (Respresentational State Transfer) e implementada em Javascript sobre o framework MEAN (MongoDB-Express-AngularJS-Node.js). Aplicação distribuída: seus componentes executam em diferentes nós de processamento dispersos em diferentes domínios administrativos. Arquitetura 3-Tier: os componentes da arquitetura executam em 3 diferentes camadas horizontais (tier): cliente, servidor e serviços de retaguarda. Estilo REST/HTTP (RESTful): os métodos HTTP GET, POST, PUT e DELETE são utilizados para acessar, inserir, modificar e remover informações no domínio do servidor. Framework: esqueleto de uma aplicação onde diversos componentes já estão implementados. EA975/2017 - Prof. Eleri Cardozo 2

Arquiteturas 3-Tier Camada do Cliente Protocolo Cliente/ Servidor Camada do Servidor Protocolo de Acesso aos Serviços Camada de Serviços de Retaguarda Interface com o usuário ou com outras aplicações Lógica da aplicação (stateless/stateful) Persistência de dados Serviços na nuvem Aplicações legadas Exemplo de tecnologias de implementação: HTTP JDBC EA975/2017 - Prof. Eleri Cardozo 3 Framework MEAN EA975/2017 - Prof. Eleri Cardozo 4 fonte: https://rkreferenceblog.files.wordpress.com/2016/02/mean-diagram-3.png

AJAX AJAX (Asynchronous Javascript and XML) é um conjunto de funções em Javascript que suportam interação com servidores HTTP. AJAX permite um código Javascript executando em um navegador web realizar requisições HTTP (GET, POST, etc.) de maneira assíncrona (ou seja, a interface não é "congelada" enquanto a requisição HTTP é processada). AJAX é suportado por todos os navegadores atuais e foi concebido para dar "dinamismo" às interfaces web. Exemplo: EA975/2017 - Prof. Eleri Cardozo 5 JSON JSON (Javascript Object Notation) é um padrão de troca de informações entre aplicações. É uma alternativa menos "verbosa" ao XML. JSON é adotado pelas grandes corporações da internet. XML: <disciplina> <sigla>ea975</sigla> <nome>lab. Eng. de Software</nome> <turmas> <turma>k</turma> <turma>l</turma> </turmas> <sala>le-27</sala> <vagas>40</vagas> <professor> <nome>eleri Cardozo</nome> <matricula>245429</matricula> </professor> </disciplina> JSON: {disciplina: { sigla: EA975, turmas: [K, L], sala: LE-27, vagas: 40, professor: { nome: Eleri Cardozo, matricula: 245429 } } } EA975/2017 - Prof. Eleri Cardozo 6

AngularJS AngularJS é um desenvolvimento patrocinado pela Google que tem por objetivo facilitar o processamento de objetos JSON recebidos em uma interação HTTP. AngularJS permite gerar requisições HTTP de maneira mais simplificada que o AJAX nativo, bem como processar o conteúdo de uma resposta no formato JSON, por exemplo, apresentar no navegador uma tabela HTML cujos campos são gerados dinamicamente a partir de objetos JSON. AngularJS é integralmente escrito em Javascript e, portanto, suportado por todos os navegadores atuais. AngularJS é uma alternativa ao DOM (Document Object Model) que é mais voltado para interações baseadas em XML. Vamos utilizar o AngularJS para implementar nossa Camada do Cliente. EA975/2017 - Prof. Eleri Cardozo 7 REST REST (Representational State Transfer) é um estilo arquitetural proposto por Roy Fielding em 2000 (e redescoberto uma década depois). REST define recursos identificados por URI/URL e mantidos em servidores stateless. Cada recurso tem um estado associado que pode se alterar ao longo do tempo. REST prevê ainda que a arquitetura é organizada em camadas horizontais (tiers). Arquiteturas que seguem o estilo REST são comumente implementadas em 3 camadas (3-tier) com interação cliente-servidor via HTTP. As seguintes requisições HTTP são empregadas: POST: cria um recurso com seu respectivo estado inicial no servidor; GET: acessa o estado de um recurso mantido no servidor; PUT: altera o estado de um recurso mantido no servidor; DELETE: remove um objeto mantido no servidor. Normalmente o estado dos objetos é persistente em banco de dados. Operações HTTP POST, GET, PUT e DELETE são mapeadas em operações CRUD (Create, Retrieve, Update, Remove) no banco de dados. EA975/2017 - Prof. Eleri Cardozo 8

Node.js e Express Node.js é um servidor HTTP escrito em Javascript a partir do V8, o interpretador Javascript do Google Chrome. Node.js trabalha com diversos módulos (extensões), por exemplo: express: módulo de processamento de requisições REST/HTTP; mongoose: interface para o banco de dados MongoDB; body-parser: interpretador JSON do conteúdo de uma requisição HTTP POST e PUT. Express permite definir callbacks (funções chamadas assincronamente) para o processamento de requisições HTTP de acordo com o recurso (URL) sendo acessado. Facilita a codificação de servidores REST/HTTP. Vamos utilizar Node.js+Express (e outros módulos) para implementar nossa Camada do Servidor. EA975/2017 - Prof. Eleri Cardozo 9 JSON e Banco de Dados Os bancos de dados comumente utilizam armazenamento dos dados em tabelas e linguagem de consulta SQL (Structured Query Language). Propostas de modos de armazenamento e linguagens de consulta alternativos têm surgido nas duas últimas décadas. Por exemplo, a Oracle, líder de mercado em banco de dados, oferece o Oracle XML DB, um banco de dados com armazenamento nativo em XML e linguagens de consulta orientadas a XML (XQuery e XPath). Entretanto, claramente o formato XML está sendo substituído pelo JSON nos serviços oferecidos na internet. Então, por que não armazenar no banco de dados documentos no formato JSON ao invés de tabelas ou documentos XML? EA975/2017 - Prof. Eleri Cardozo 10

MongoDB JSON não possui uma linguagem de descrição de documentos como o XML Schema nem linguagens de consulta como o XPath. MongoDB é um banco de dados para armazenamento de objetos no formato JSON. Não é necessário definir previamente os formatos dos objetos que serão armazenados. A linguagem de consulta é simples: são passados os campos dos objetos JSON que queremos acessar. Exemplos: {nome: Eleri Cardozo} {$or: [{nome: Eleri Cardozo}, {nome: Albert Einstein}]} {vagas: {$gt 20}} No MongoDB todo objeto armazenado possui uma chave de acesso única (atributo _id). Node.js possui um módulo para interagir com o MongoDB, o mongoose. Vamos utilizar o MongoDB para implementar nossa Camada de Serviços de Retaguarda. EA975/2017 - Prof. Eleri Cardozo 11 O que fazer agora? Detalhar, por meio de um texto livre, uma aplicação com restrições descritas no slide 2. Cuidados: Conceba uma aplicação simples que resulte em poucos casos de uso (mas pelo menos um caso de uso por membro do grupo). Esboce com lápis e papel como seria a interface do usuário desta aplicação. Se a figura começar a ficar confusa, repense a aplicação. Conceba uma apliação que não demande conhecimentos específicos do usuário final (no máximo o preenchimento de um formulário no navegador). Conceba uma aplicação que seja "autônoma", ou seja, não dependa de outras aplicações ou serviços para funcionar. EA975/2017 - Prof. Eleri Cardozo 12