Introdução
Serviços WebServiços Web
Conceitos Básicos
Para entendermos sobre o funcionamento de Serviços Web, precisamos possuir
conhecimento de:
- Linguagem de Programação - Arquitetura Cliente x Servidor - XML
Serviços Web - O que são?
Serviços Web (Web Services) é uma solução de integração
e comunicação entre sistemas e aplicações em diferentes plataformas e arquiteturas.
Através desta tecnologia é possível que novas aplicações se comuniquem e interajam com software legados e que sistemas desenvolvidos em plataformas diferentes sejam compatíveis.
Serviços Web - O que são?
Web Service faz com que os recursos da aplicação estejam disponíveis sobre a rede de uma forma normalizada.
Utilizando-se de Web Services, uma aplicação pode invocar outra para realizar uma tarefa simples ou complexa, mesmo que as duas aplicações estejam em diferentes sistemas operacionais e escritas em linguagens diferentes.
Serviços Web - O que são?
O objetivo de um Web Service é o de providenciar a
comunicação de aplicações através da rede ou
Serviços Web - Papéis
• Há três papéis importantes
dentro da arquitetura de web services: Provedor de Serviços,
Consumidor de serviços e o Registro dos serviços.
• A interação destes papéis
envolve as operações de publicar, pesquisar e fazer a ligação dos serviços.
Serviços Web - Papéis
• Provedor de serviços (service provider): É o responsável pela
implementação e disponibilização dos web services na INTERNET. Para que alguém possa utilizá-lo, é preciso descrever o serviço em um formato padrão, compreensível para qualquer um que precise usar esse serviço e também publicar as características sobre o serviço em um registro central disponível.
• Consumidor de serviços (service consumer): É o usuário de um serviço
disponível na INTERNET que foi implementado por um provedor de serviço.
• Registro do serviço (service broker): Refere-se à localização do serviço. Ele
Arquitetura - Cliente x Servidor
É a estrutura mais simples decomputação distribuída, com a função de distribuir as tarefas e cargas entre os fornecedores de um recurso ou serviço, designados como servidores, e os requisitantes dos serviços, designados como clientes.
Cliente - Servidor - Estrutura Básica
Servidor Web Service Páginas Web Sistema Web Cliente Requisita RespondeServidores
Um servidor é um host que está executando um ou mais serviços ou programas que compartilham recursos na rede com os clientes.
São computadores de maior poder de processamento e armazenamento, se comparado com computadores pessoais.
Servidores - Características
• Execução continua;
• Sempre esperando por um pedido de um cliente;
• Atende os pedidos e, em seguida, responde aos clientes com os resultados dos dados solicitados;
• Pode se comunicar com outros servidores para atender a um pedido especifico do cliente;
Clientes
Diferentemente do servidor, o cliente não compartilha seus recursos, mas solicita conteúdo ou função para o servidor.
Os cliente são os responsáveis por iniciar as sessões de comunicação com os servidores que aguardam requisições de entrada.
Clientes - Características
• Inicia pedidos para os servidores; • Espera por respostas;
• Recebe respostas;
• Conecta-se com um pequeno número de servidor de uma só vez;
• Normalmente interage diretamente com os usuários finais através de quaisquer interface com o usuário;
XML - EXtensible Markup Language
XML é uma linguagem de marcação simples e flexível, sendo um subtipo da Standard
Generalized Markup Language
(SGML).
Sua finalidade é a de ser uma linguagem designada para descrever e estruturar informações com o propósito de serem facilmente compartilhadas
XML - O que é?
Um arquivo XML é um arquivo de texto, composto por tags aninhadas e delimitadas.
A sua primeira linha, identifica a versão do documento, em seguida, a próxima linha identifica o elemento raiz, seguido de linhas que compõem os elementos derivados de sua raiz.
XML - Exemplo
<?xml version = “1.0” encoding = “UTF-8”?> <carro marca = “Audi”>
<modelo>R8</modelo> <cor>Vermelho</cor>
<ano>2013</ano>
</carro> O que são atributos
de um documento XML?
XML - Características
• Separação do conteúdo da formatação;
• Simplicidade e legibilidade, tanto para humanos quanto para computadores;
• Possibilidade de criação de tags sem limitação;
• Criação de arquivos para a validação de estrutura (DTD);
XML - Bem formado x Válido
Para um arquivo XML estar “bem formado” é necessário validar se o mesmo se encontra em conformidade com regras sintáticas.
Um arquivo XML “válido" é um documento bem formado que está em conformidade com as regras de um Document
XML - DTD
O DTD define quais elementos são permitidos em um documento XML. O seu propósito é o de definir a estrutura do documento com uma lista de possíveis elementos. Com o seu uso, cada arquivo XML pode carregar consigo uma descrição do seu próprio formato.
Desta forma, aplicações independentes podem concordar usar um formato de DTD comum, para estabelecer a troca de informações.
DTDs podem ser utilizados por aplicações para checar a validade dos dados recebidos.
Exemplo - DTD
<?xml version=“1.0” encoding=“UTF-8”?> <!DOCTYPE nota SYSTEM “Nota.dtd”> <nota>
<para>Joana</para> <de>Guilherme</de>
<assunto>Lembrete</assunto>
<mensagem>Não se esqueça de ir no dentista!</mensagem> </nota>
XML
<!DOCTYPE nota [
<!ELEMENT nota (para,de,assunto,mensagem)> <!ELEMENT para (#PCDATA)>
<!ELEMENT de (#PCDATA)>
<!ELEMENT assunto (#PCDATA)>
<!ELEMENT mensagem (#PCDATA)> ]> DTD Existem outros padrões de validação de XML.
JSON - Javascript Object Notation
Similar ao XML, o JSON é umformato de transferencia de dados computacionais.
Embora o JSON seja um subconjunto da notação de objetos JavaScript, não é necessário a utilização de JavaScript para sua criação e leitura.
JSON - História
A motivação para a criação do JSON foi a necessidade de se construir um padrão de armazenamento e transmissão de informações, que fosse mais compacto e seus dados mais
estruturados, tornando o parsing das informações algo
JSON - Sintaxe
A escrita de um documento JSON é extremamente simples: Para cada valor representado, se atribui um nome (rótulo) que descreve seu significado. Esta sintaxe é derivada da forma utilizada em JavaScript.
Por exemplo, para representar o ano de 2014, usaríamos a seguinte sintaxe:
JSON - Sintaxe
Um par nome/valor deve ser representado pelo nome em aspas duplas, seguido de dois pontos, seguido do valor. Os valores podem possuir apenas 3 tipos básicos: numérico (inteiro ou real), booleano e string.
A seguir ira ser demonstrado cada um desses tipos básicos na notação JSON.
JSON - Exemplos
Representando um número real: “altura”: 1.95
Representando uma string:
“site”: “www.google.com.br”
Representando um número negativo: “temperatura”: -2
Representando um valor booleano: “casado”: true
Valores do tipo string devem ser
representados entre aspas !
JSON - Sintaxe
A partir dos tipos básicos, é possível construir tipos
complexos: array e objeto. Os arrays são delimitados por
colchetes, com seus elementos separados por virgulas.
Exemplos - Arrays
[“RS”, “RJ”, “SP”, “ES”] [ [1,5] , [-1,9], [100, 0] ]
JSON - Sintaxe
Os objetos são especificados entre chaves e podem ser compostos por pares nome/valor, por arrays e também por outros objetos. Desta forma um objeto JSON pode representar, virtualmente, qualquer tipo de informação.
JSON - Exemplo
{
“titulo”: “JSON x XML”,
“resumo”: “o duelo de dois modelos de representação de informações”,
“ano”: 2012,
“genero”: [“ação”, “aventura”, “ficção”] }
JSON - Exemplo
{
“titulo”: “JSON x XML”,
“resumo”: “o duelo de dois modelos de representação de informações”, “ano”: 2012,
“genero”: [“ação”, “aventura”, “ficção”] },
{
“titulo”: “JSON James”,
“resumo”: “a história de uma lenda do velho oeste”, “ano”: 2011,
“genero”: [“western”, “ação”] }
É possível representar mais de um objeto ou registro de uma só vez
JSON - Sintaxe
Por fim, é importante citar que a palavra chave “null” deve ser utilizada para a representação de valores nulos.
Exemplo
JSON - Exemplo
{
“Aluno” : [
{“nome”: “Pedro” , “notas”: [ 9, 8, 7 ]}, {“nome”: “Julia” , “notas” : [8, 10, 7]},
{“nome”: “Milene”, “notas”: [10, 10, null]} ]
JSON - Schema
Assim como o XML possui documentos para validar a sua estrutura e seus dados, o JSON também os possui, chamado de JSON Schema.
O JSON Schema serve como um contrato entre aplicações para definir a sua estrutura, tipos de dados e para validar essas informações.
JSON Schema - Exemplo
JSON
JSON x XML
Podemos entender que o JSON é um “concorrente” do XML na área de troca de informações. Vejamos algumas das suas semelhanças e diferenças nos próximos slides.
JSON x XML - Semelhanças
• Os dois modelos representam informações no formato texto.
• Ambos possuem natureza auto-descritiva (ou seja, basta “bater o olho” em um
arquivo JSON ou em um arquivo XML para entender o seu significado).
• Ambos são capazes de representar informação complexa, difícil de representar no
formato tabular. Alguns exemplos: objetos compostos (objetos dentro de objetos), relações de hierarquia, atributos multivalorados, arrays, dados ausentes, etc.
• Ambos podem ser utilizados para transportar informações em aplicações AJAX. • Ambos podem ser considerados padrões para representação de dados. XML é
um padrão W3C, enquanto JSON foi formalizado na RFC 4627.
• Ambos são independentes de linguagem. Dados representados em XML e JSON
podem ser acessados por qualquer linguagem de programação, através de API’s específicas.
JSON x XML - Diferenças
• JSON não é uma linguagem de marcação. Não possui tag
de abertura e muito menos de fechamento!
• JSON representa as informações de forma mais compacta.
• JSON não permite a execução de instruções de
processamento, algo possível em XML.
• JSON é tipicamente destinado para a troca de informações,
enquanto XML possui mais aplicações. Por exemplo: nos dias atuais existem bancos de dados inteiros armazenados em XML e estruturados em SGBD’s XML nativo.