Web das Coisas WoT. Software: APIs para IoT. Prof. João Bosco Teixeira Junior



Documentos relacionados
REST. Caio Nakashima

O protocolo HTTP. O que é o protocolo HTTP?

Universidade Federal do Espírito Santo CCA UFES. Centro de Ciências Agrárias CCA UFES Departamento de Computação. Programação WEB

Web. Até a década de 1990, a Internet era utilizada. por pesquisadores, acadêmicos e universitários, para troca de arquivos e para correio eletrônico.

O protocolo HTTP. Você aprenderá: O que é e como funciona o protocolo HTTP. Quais são as partes de um pedido HTTP.

Internet e protocolos web. A Internet é uma rede descentralizada de recursos computacionais. Topologia tem de fornecer caminhos alternativos


Universidade Federal de Mato Grosso

18/04/2006 Micropagamento F2b Web Services Web rev 00

Curso de Aprendizado Industrial Desenvolvedor WEB

UNIVERSIDADE. Sistemas Distribuídos

1.264 Lição 11. Fundamentos da Web

Wireshark. Captura de Protocolos da camada de aplicação. Maicon de Vargas Pereira

Java Enterprise Edition. by Antonio Rodrigues Carvalho Neto

Programação para Internet I. 2. O protocolo HTTP. Nuno Miguel Gil Fonseca nuno.fonseca@estgoh.ipc.pt

USO GERAL DOS PROTOCOLOS SMTP, FTP, TCP, UDP E IP

Protocolo de Sinalização SIP

Aula 14 Serviços Internet (Servidor Web Apache)

Serviços Web: Introdução

Arquiteturas SOA, WOA, e REST

Práticas de Desenvolvimento de Software

UFG - Instituto de Informática

Programação para a Internet. Prof. M.Sc. Sílvio Bacalá Jr sbacala@gmail.com

SISTEMAS DISTRIBUIDOS

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

4. Qual seria o impacto da escolha de uma chave que possua letras repetidas em uma cifra de transposição?

Comunicando através da rede

Serviços Web: Arquitetura

CONCEITOS INICIAIS. Agenda A diferença entre páginas Web, Home Page e apresentação Web;

Programação para Internet Flávio de Oliveira Silva, M.Sc.

Como funciona a plataforma Superlógica? - Livro 4 de 4. Como funciona a interface de integração? Como você poderá complementar o sistema?

Service Oriented Architecture SOA

Rede de Computadores (REC)

Atalhos da Web. Krishna Tateneni Yves Arrouye Tradução: Lisiane Sztoltz

Modelos de Camadas. Professor Leonardo Larback

Protocolos de Internet (família TCP/IP e WWW) Primeiro Técnico. Prof. Cesar

Programando em PHP. Conceitos Básicos

REST Um Estilo de Arquitetura de Sistemas Distribuídos

3. Explique o motivo pelo qual os protocolos UDP e TCP acrescentam a informação das portas (TSAP) de origem e de destino em seu cabeçalho.

ALCY JOSÉ VIEIRA NETO ALEXANDRE SOHN CINTIA CAVICHIOLO PROTOCOLO HTTP

SMTP, POP, IMAP, DHCP e SNMP. Professor Leonardo Larback

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

3 Um Framework Orientado a Aspectos para Monitoramento e Análise de Processos de Negócio

Comunicação entre Processos

HYPERTEXT TRANSFER PROTOCOL

Desenvolvimento Web Protocolos da Internet

Tecnologias Web. Lista de Exercícios AV02. Luiz Leão

Millennium ECO 2.0 (beta)

Guia de Consulta Rápida HTTP. Décio Jr. Novatec Editora.

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

10/07/2013. Camadas. Principais Aplicações da Internet. Camada de Aplicação. World Wide Web. World Wide Web NOÇÕES DE REDE: CAMADA DE APLICAÇÃO

Sistemas Distribuídos

A Camada de Aplicação

Arquitetura de Redes: Camadas de Protocolos (Parte I) Prof. Eduardo

Aula 1 Cleverton Hentz

Manual de implantação

TECNOLOGIA WEB. Principais Protocolos na Internet Aula 2. Profa. Rosemary Melo

Conceitos Básicos sobre Sistemas Web: Arquitetura e Serviços. Aécio Costa

Guia de Conectividade Worldspan Go Res! A V A N Ç A D O

ADDRESS RESOLUTION PROTOCOL. Thiago de Almeida Correia

Camada de Aplicação. DNS Domain Name System. Redes de Computadores Prof. Leandro C. Pykosz

Camadas da Arquitetura TCP/IP

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS -HTML 5: ARMAZENAMENTO DE DADOS (CLIENTE) Prof. Angelo Augusto Frozza, M.Sc.

6127. Redes comunicação de dados. 2014/2015. Acesso à Internet.

Redes de Computadores e a Internet

Sistemas Distribuídos

API de Cotações Bolsa Financeira

Tópicos de Ambiente Web Conceitos Fundamentais Redes de Dados

APLICAÇÕES E SERVIÇOS WEB

3 SCS: Sistema de Componentes de Software

Configuração manual.ost Microsoft Office 365

CONCEITOS BÁSICOS DE INTERNET. Disciplina: INFORMÁTICA 1º Semestre Prof. AFONSO MADEIRA

Conceitos de Ajax Exemplos de uso do Ajax no braço, muitos exemplos, muito código (HTML, CSS, JavaScript, PHP, XML, JSON)

Redes de Computadores

Feature-Driven Development

Teia de alcance mundial (World Wide Web WWW) Web composta de

PROGRAMAÇÃO SERVIDOR WEBSERVICES EM SISTEMAS WEB. Prof. Dr. Daniel Caetano

(eletronic mail )

Prática da Disciplina de Sistemas Distribuídos Serviços Web IFMA DAI Professor Mauro Lopes C. Silva

UMA ABORDAGEM SOBRE A INTERFACE DE PROGRAMAÇÃO DE APLICAÇÕES SOCKETS E A IMPLEMENTAÇÃO DE UM SERVIDOR HTTP

Universo Online. Loja de Aplicativos - API v1.0 [05/2012]

Anexo VI Edital nº 03361/2008. Projeto de Integração das informações de Identificação Civil. 1. Definições de interoperabilidade adotadas pela SENASP

Introdução a Web Services

Web Services Uma Análise Comparativa

Introdução ao Modelos de Duas Camadas Cliente Servidor

AULA 03 MODELO OSI/ISO. Eduardo Camargo de Siqueira REDES DE COMPUTADORES Engenharia de Computação

OURO MODERNO Web Designer APOSTILA DE EXEMPLO. (Esta é só uma reprodução parcial do conteúdo)

Alan Menk Santos Redes de Computadores e Telecomunicações. Camada de Aplicação. Camada de Aplicação

s editores de s Como configurar contas de nos principais Como configurar contas de s nos principais editores de s

Desenvolvimento Cliente-Servidor 1

BEM-VINDOS AO CURSO DE ORIENTADO A OBJETOS

1.1 Porque um nível de aplicação proxy?

RestFull WebServices. Rafael Nunes Arquiteto de Software / Instrutor Globalcode. Globalcode Open4Education

Transcrição:

Web das Coisas WoT Software: APIs para IoT Prof. João Bosco Teixeira Junior

WoT Um novo paradigma para desenvolvimento de aplicações inspirado na ideia do IOT; Utiliza protocolos e padrões amplamente aceitos na internet como HTTP e URI; O objetivo é fazer com que a internet também possa englobar os objetos do dia-a-dia (geladeira, ar-condicionado, tv, carro, etc.) Fonte: http://www.nce.ufrj.br/labnet/pesquisa/cidadesinteligentes/minicurso-wot-final.pdf

WoT - Protocolos HTTP Além de transportar os dados, também é usado para manipular os objetos através dos métodos HTTP tais como GET, POST, PUT e DELETE; Através destes métodos é possível expor as funcionalidades de um dado objeto na internet; URI (Uniform Resource Identifier) Fornecem endereços únicos e globais para identificação dos recursos; REST Estilo arquitetural para desenvolvimento de aplicações distribuídas ROA (Resource Oriented Architeture);

HTTP Hypertext Transfer Protocol Implementa o serviço web arquitetura TCP/IP; Baseado no modelo Cliente-Servidor; Utiliza os serviços de transporte orientado a conexão na porta 80/TCP; Envio e recebimento de mensagens;

HTTP: Teste DIGITE C: S: # telnet www.terra.com.br 80 Connected to www.terra.com.br. Escape character is '^]'. GET /index.html HTTP/1.1 host: www.terra.com.br User-Agent: Mozilla/4.0 HTTP/1.1 200 OK Server: nginx Date: Thu, 07 Aug 2014 15:25:31 GMT Content-Type: text/html... Connection: keep-alive Digite <enter>

HTTP: Sessão Uma sequência de transações de requisição resposta usando a mesma conexão TCP; O cliente inicia a comunicação estabelecendo uma conexão TCP para uma porta do servidor, por omissão a porta 80; O servidor escutando naquele IP e naquela porta, retorna com HTTP/1.1 200 OK, juntamente com o resultado da requisição ou erro informado;

HTTP: URI Em TI, um Identificador Uniforme de Recursos (URI) - Uniform Resource Identifier (em inglês) é uma cadeia de carateres compacta usada para identificar ou denominar um recurso na Internet (wikipedia). <scheme name> : <hierarchical part> [? <query> ] [ # <fragment> ] http://www.boscojr.com/protcomseg/form.php?qualquer=algo#cap1

HTTP: Métodos Também chamados de verbos Usados para indicar a ação desejada sob o recurso O Recurso é indicado pela URI Principais métodos utilizados HTTP 1.0 GET, POST e HEAD HTTP 1.1 OPTIONS, PUT, DELETE, TRACE and CONNECT

HTTP: Métodos GET: Usado para solicitar um recurso do servidor; HEAD: É idêntico ao GET mas só vem o cabeçalho da resposta a requisição; POST: O método post é usado para solicitar ao servidor o processamento de informações enviadas no corpo da requisição. É maneira padrão usada para processar formulários web; PUT: Solicita que o objeto enviado junto a requisição, seja armazenada sob a URI fornecida. Se o recurso não existe ele é criado, se existe ele é modificado. DELETE: Pode ser usado para remover um recurso específico. TRACE: Ecoa o pedido recebido de modo que o cliente pode ver as mudanças ou adições (se houver) foram feitas por servidores intermediários. OPTIONS: Retorna os métodos http que o servidor suporta para determinada URL. Isso pode ser usada para checar a funcionalidade do servidor. CONNECT: Converte o pedido de conexão em um túnel TCP/IP transparente, geralmente para facilitar a comunicação criptografada com SSL (HTTPS) através de um proxy HTTP não criptografado. PATCH: Aplica modificações parciais para um determinado recurso. Um servidor web mínimo deve ter pelo menos os métodos GET e HEAD

HTTP: GET x POST É possível usar o método GET para enviar dados de formulários do servidor, porém não é aconselhável, pois os dados serão passados na URL, e podem ser facilmente reproduzidos numa tentiva de fraude no sistema. O método correto para envio do formulário é o metodo POST. Entrada no html para o método GET: <FORM action=form.php method=get> Entrada no html para o método POST: <FORM action=form.php method=post> Exemplos: : www.boscojr.com/protcomseg/form.php

HTTP: Códigos de Retorno 200 OK 400 Bad Request 401 Unauthorized 403 Forbidden 404 Not Found 405 Method Not Allowed 500 Internal Server Error 503 Service Unavailable

Fonte: http://www.restapitutorial.com/httpstatuscodes.html

Comunicação S2S

API - Aplication Programing Interface é um conjunto de rotinas e padrões estabelecidos por um software para a utilização das suas funcionalidades por aplicativos que não pretendem envolver-se em detalhes da implementação do software, mas apenas usar seus serviços. How to design a good API and why it matters Joshua Block - Google

API Comunicação S2S As APIs permitem que software fale com software. Para fornecer um serviço o elemento de software deve possuir uma interface de programação de aplicativo ou API. O Sistema operacional tem uma API (SPI) Muitos Protocolos de Aplicação fazem uso de uma API.

Exemplo API TTS google TTS: Text to Speak (Texto para fala) curl 'http://translate.google.com/translate_tts? ie=utf-8&tl=pt&q=tecnologias %20Inovadoras&tl=en&client=t' -H 'Referer: http://translate.google.com/' -H 'User-Agent: stagefright/1.2 (Linux;Android 5.0)' > google_tts.mp3

Características de uma boa API Fácil de Aprender e usar, mesmo sem documentação; Fácil leitura e manutenção de código que a usa; Fácil de estender; Apropriada a para o público alvo;

Componentes de uma API Funções Parâmetros Retorno Status

O grandes players da internet possuem APIs Google Facebook Ebay Twiter Amazon Youtube

API para APIs - Temboo Biblioteca de Processos de Programação Virtualiza os uso das APIs dos principais players de internet. Gera códigos que podem ser colados direto na aplicação. Conceito: Coreografia (Service choreography) Uma forma de composição de serviço na qual um protocolo de interação entre diversos serviços é definido de uma perspectiva global.

API para APIs - Temboo API do Player 1 Meu Software... API do Player 2 API do Player n COREOGRAFIA API do Player 1 Meu Software TEMBOO... API do Player 2 API do Player n

Temboo Hora da Prática (caderno de práticas: Pratica 1) Atualizando uma planilha no Google Drive

Aplicações RESTful e Arquitetura Orientada Recursos (ROA)

Midleware para Desenv. de aplicações distribuídas RPC, RMI, CORBA SOAP e WSDL REST CoAP Paradigmas para WoT

REST REST Representative State Transfer; Transferência de Estado Representativo; Definido por Roy T. Fielding em sua tese de PhD; Estabelece um conjunto de princípios para aplicações web distribuídas. Diz-se RESTful as aplicações que seguem esses princípios

Princípios de REST A interface da aplicação deve ser uniforme; Stateless: Uma requisição não depende de outra anterior, Toda informação necessária ao processamento deve está na própria requisição; Cacheable: O resultado das requisições podem ser armazenadas em cache; Client-Server: A comunicação deve ser cliente-servidor; Layered System (Camadas): O cliente não deve enxergar além das camadas adjacentes Code-on-Denand: A aplicação pode opcionalmente gerar código para que o cliente execute. Ex: Javascript; Fonte: http://whatisrest.com/rest_constraints/layered_system_profile

Interface Uniforme ou API Uniforme Definição de uma interface entre clientes e servidores. Desacopla os diferentes elementos da arquitetura. Princípios para uma interface uniforme: Baseada em recursos: Recursos são identificados individualmente através de URIs. Os recursos são separados de suas representações, que são enviadas ao cliente. A representação do recurso pode ser HTML, JSON ou XML. Manipulação dos Recursos através de Representações: Quando um cliente tem uma representação de um recurso, incluindo quaisquer metadados anexado, tem informações suficientes para modificar ou excluir o recurso no servidor, desde que tenha permissão para fazê-lo. Mensagens auto-descritivas: Cada mensagem inclui informações suficientes para descrever como processar a mensagem. Por exemplo, qual parser para invocar pode ser especificado por um tipo de mídia Internet (anteriormente conhecido como um tipo de MIME). As respostas também indicam explicitamente o seu cache de capacidade. Hipermídia como o motor da Estado da Aplicação: Clientes podem passar o seu estado via corpo da mensagem, Cabeçalhos ou URI. Já o servidor pode passar o estado para cliente via corpo da mensagem, códigos de retorno e cabeçalho.

Aplicações RESTful (De uma outra forma) Todas as coisas deve ter pelo menos um identificador Vincule as coisas Utilize métodos padronizados Recursos com múltiplas representações Comunique sem estado Fonte: http://www.infoq.com/br/articles/rest-introduction

1) Dê a todas as coisas um Identificador Use URIs para identificar tudo o que precisar ser identificado, especifique todos os recursos de "alto nível" que seu aplicativo oferece, se eles representam itens individuais, conjuntos de itens, objetos virtuais e físicos, ou resultados de computação. Coisas individuais Conjuntos de Coisas

2) Vincule as coisas Use links para referenciar coisas que possam ser identificadas (recursos) sempre que for possível. A resposta a uma requisição pode conter links para outros recursos

3) Utilize os métodos padrão Os clientes para interagir com os seus recursos devem implementar o protocolo de aplicação padrão (HTTP) corretamente, isto é, utilizar os métodos padrão: GET, PUT, POST DELETE e OPTIONS; O cliente em sistema distribuído pode solicitar: Leitura (Consulta), Escrita (Nova entrada), Alteração, Exclusão; REST não te diz quais métodos usar, isso depende da aplicação. Se precisar algum método para tratar um recurso use os do HTTP

3) Utilize os métodos padrão

4) Recursos com múltiplas representações O cliente pode querer escolher a forma que deseja receber as informações. Ex.: XML Vcard (vcf)

5) Comunique sem Estado Uma requisição do cliente para o servidor não deve depender de requisições anteriores; REST exige que o estado seja transformado no estado do recurso. O estado deve ser transformado em algo que possa ser consultado; Ou o estado do recurso é enviado ao cliente e lá deve ser mantido.

REST

Hora da Prática (caderno de práticas: Pratica 2) Ajustando o Apache para Tratar as URIs

ROA Arquitetura Orientada a Recursos URIs deve possuir correspondência com o recurso: http://www.fac.br/aluno/pedro Endereçabilidade: Todo recurso deve possuir pelo menos um endereço Sem estado: Requisições deve ser auto contidas Representações (JSON, XML, CSV, RSS) Cliente -> Servidor: Criação ou modificação Servidor -> Cliente: Requisição Links e conectividade: As representações de um recurso podem fornecer links para outros recursos Interface Uniforme

ROA Interface Uniforme GET: Usado para recuperar um recurso A resposta deve incluir em seu corpo a representação do recurso DELETE: Usado para apagar um recurso A resposta deve ter o status HTTP correspondente POST e PUT: Criação de Recursos A resposta deve ter o status HTTP correspondente PUT: Atualização de Recursos A resposta deve ter o status HTTP correspondente OPTIONS: Informa quais métodos o recurso suporta

Desenvolvimento de serviços - RESTful Passos: 1 - Levantamento de requisito 2 - Identificação de recursos 3 - Definição de representação de recursos 4. Definição de URIs

Exemplo: Sistema de Climatização Sensor de Temperatura + Sistema de Refrigeração Interface IP

Exemplo: Sistema de Climatização 1 - Levantamento Requisitos Incluir um comodo Conhecer a temperatura do comodo Ajustar a temperatura do comodo 2 - Identificação dos Recursos Cômodos Sistema de Refrigeração Sensor de Temperatura

Exemplo: Sistema de Climatização 3 Definição da Representação dos Recursos JSON : { temp, valor } JSON : { Endereço IP } Inclusão de um cômodo (nome do comodo na URI ) 4 Definição da URI Cômodo: /comodo Exemplo /quarto, /cozinha, /banheiro, etc... Temperatura /comodo/temperatura Ex: /cozinha/temperatura Resultado da requisição Enviado na requisição de inclusão

Exemplo: Sistema de Climatização Temperatura Sistema De Refrigeração Protocolos Zigbee, blutooth, usb, serial, IR GATEWAY 1 2 3 4 5 6 INTERNET 1 GET /quarto/temperatura (host: www.x.com) 2 200 OK Data: { temp, 21 } 3 PUT /quarto/temperatura (host www.x.com) Data: { temp : 21 } 4 200 OK 5 POST /cozinha (host www.x.com) Data: 192.168.0.10 6 200 OK

Formatos para transferencia de recursos RFC 4627 (JSON) Representa estruturas de dados em texto XXX - String [ 1, 2, 3 ] - Lista { A : B } - Par: Chave-valor (key-value pair) XML (W3C) CSV

Hora da Prática (caderno de práticas: Pratica 3) Construindo uma Aplicação RESTful para IoT

Segurança da Web da Coisas HTTP Auth SSL OpenID OAuth

Conclusões Uma boa API pode determinar o sucesso do negócio A Web das coisas expande o domínio da internet para objetos do nosso dia a dia. HTTP é usado como protocolo base para a Web das Coisas REST e ROA são os padrões arquiteturais básicos para web das coisas Os objetos expostos na web devem possuir algum nível de segurança

FIM