24
Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação

Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação

Embed Size (px)

Citation preview

Page 1: Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação

Tópicos de Sistemas de Informação A

Carlos Oberdan Rolim

Ciência da Computação

Page 2: Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação

SOAP

(Simple Object Access Protocol)

Page 3: Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação

Contexto

Page 4: Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação

Introdução

SOAP significa Simple Object Access Protocol.

SOAP é um protocolo de comunicação.

SOAP é para comunicação entre aplicações.

SOAP é um simples protocolo baseado em XML para permitir aplicações trocarem informação sobre HTTP ou outro protocolo.

Page 5: Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação

Introdução

Surgiu em 1998

Proposto pela DevelopMentor, Microsoft e UserLand Software como um “Internet Draft”

Definia um mecanismo para transmissão de procedimentos remotos XML sobre HTML

Proposta a W3C em Maio de 2000

Primeira versão pública em Dezembro de 2001

Versão atual 1.2

Page 6: Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação

Serviço

Converte msg SOAP a tipo de dado e invoca o serviço.

Converte resultado da operação a msg SOAP e envia msg.

Plataforma de Serviço na Web

Servidor SOAP

Cliente SOAP

SOAPrequest

SOAPresponse

Arquitetura

Page 7: Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação

SOAP 1.2Dividido em duas partes

Service Oriented Architecture Protocol:

Framework de mensagens

Mensagem representa a informação necessária para invocar um serviço ou analisar o resultado de uma chamada e contém informações específicas da definição da interface do serviço.

Service Object Access Protocol:

um conjunto de regras de codificação para expressar instâncias dos tipos de dados definidos pela aplicação

uma convenção para representar RPCs e respostas

um conjunto de regras para usar SOAP com HTTP/1.1

Define o método de invocação de um objeto remoto

Page 8: Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação

Principais vantagens

Pode atravessar firewalls com facilidade.

Os dados do SOAP são estruturados usando XML. Portanto, as mensagens podem ser compreendidas por quase todas as plataformas de hardware, sistemas operacionais e linguagens de programação.

Pode ser usado, potencialmente, em combinação com vários protocolos de transporte de dados, como HTTP, SMTP e FTP.

O SOAP mapeia satisfatoriamente para o padrão de solicitação / resposta HTTP.

Pode ser usado tanto de forma anônima como com autenticação (nome/senha).

Page 9: Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação

Principais desvantagens

Falta de interoperabilidade entre ferramentas de desenvolvimento do SOAP.

Embora o SOAP tenha amplo suporte, ainda existem problemas de incompatibilidades entre diferentes implementações do SOAP.

Mecanismos de Segurança Imaturos.

O SOAP não define mecanismo para criptografia do conteúdo de uma mensagem SOAP, o que evitaria que outros tivessem acesso ao conteúdo da mensagem.

Não existe garantia quanto à entrega da mensagem.

Quando uma mensagem estiver sendo transferida, se o sistema falhar, ele não saberá como reenviar a mensagem.

Um cliente SOAP não pode enviar uma solicitação a vários servidores, sem enviar a solicitação a todos os servidores.

Incapacidade de transportar conteudo complexo como arquivos de imagens ou sons

Page 10: Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação

Funcionalidades

Interoperabilidade entre sistemas utilizando linguagens e protocolos padronizados largamente difundidos, como XML e HTTP.

Permite a comunicação entre sistemas protegidos por firewalls, sem precisar abrir portas adicionais e possivelmente não seguras. Ele utiliza (na maioria dos servidores) a porta 80.

SOAP descreve completamente cada elemento na mensagem, facilitando o entendimento e a proteção contra erros.

Page 11: Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação

Estrutura de uma mensagem

Soap basea-se na troca de mensagens

Mensagens são vistas como envelopes que as aplicações usam para enviar dados

Uma mensagem contém dua partes: cabeçalho e corpo. Ambos podem ser divididos em blocos

SOAP não especifica o que fazer com o cabeçalho e o corpo. Ele somente diz que o cabeçalho é opcional e o corpo mandatório

Entretanto uso do corpo e cabeçalho são implicitos. Corpo define os dados da aplicação e o cabeçalho define a estrutura

SOAP Envelope

SOAP header

Header Block

SOAP Body

Body Block

Page 12: Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação

Estrutura de uma mensagem

<SOAP-ENV:envelope><!— Elemento raiz do SOAP e define que essa é uma mensagem SOAP>

<SOAP-ENV:header><!—Especifica informações especificas como autenticação (opcional)--></SOAP-ENV:header>

<SOAP-ENV:body> <!—O elemento BODY contém o corpo da mensagem-->

<SOAP-ENV:fault> <!—O elemento FAULT contém os erros que podem ocorrer--> </SOAP-ENV:fault>

</SOAP-ENV:body>

</SOAP-ENV:envelope>

Page 13: Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação

Estrutura de uma mensagem

Envelope: obrigatório. Define conteúdo da mensagem

encodingStyle: atributo que tem como objetivo especificar como as informações devem ser codificadas.

<SOAP-ENV:Envelope xmlns:SOAP ENV=”http://schemas.xmlsoap.org/soap/envelope/”SOAP-ENV:encodingStyle=”http://schemas.xmlsoap.org/soap/encoding/”><SOAP-ENV:Header>...</SOAP-ENV:Header><SOAP-ENV:Body>…</SOAP-ENV:Body></SOAP-ENV:Envelope>

Page 14: Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação

Estrutura de uma mensagem

Header: opcional. Contém os dados do cabeçalho

<SOAP-ENV:Envelope xmlns:SOAP ENV=”http://schemas.xmlsoap.org/soap/envelope/”SOAP-ENV:encodingStyle=”http://schemas.xmlsoap.org/soap/encoding/”>

<SOAP-ENV:Header><a:authentication xmlns:a=”http://www.foo.com/soap/authentication”> <a:username>Admin</a:username> <a:password>SuperPass</a:password></a:authentication></SOAP-ENV:Header>

<SOAP-ENV:Body>…</SOAP-ENV:Body></SOAP-ENV:Envelope>

Page 15: Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação

Estrutura de uma mensagem

Elemento actor

especifica o receptor que deve processar o elemento do cabeçalho.

<SOAP-ENV:Envelope xmlns:SOAP ENV=”http://schemas.xmlsoap.org/soap/envelope/” SOAP-ENV:encodingStyle=”http://schemas.xmlsoap.org/soap/encoding/”>

<SOAP-ENV:Header> <a:authentication xmlns:a=”http://www.foo.com/soap/authentication” SOAP-ENV:actor=”http://www.foo.com/soap/authenticator”> <a:username>Admin</a:username> <a:password>Pass</a:password> </a:authentication> </SOAP-ENV:Header>

Page 16: Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação

Estrutura de uma mensagem

Elemento mustUnderstand

especifica se uma entrada de cabeçalho é obrigatória ou opcional (booleano)

Se for acrescido mustUnderstand=“1” a um elemento filho no cabeçalho, indica que o receptor deve reconhecer esse elemento. Se ele não reconhecer deve ser retornada uma falha quando o cabeçalho for processado

<SOAP-ENV:Envelope xmlns:SOAP ENV=”http://schemas.xmlsoap.org/soap/envelope/” SOAP-ENV:encodingStyle=”http://schemas.xmlsoap.org/soap/encoding/”>

<SOAP-ENV:Header> <a:authentication xmlns:a=”http://www.foo.com/soap/authentication” SOAP-ENV:mustUndestrand=”1” <a:username>Admin</a:username> <a:password>Pass</a:password> </a:authentication> </SOAP-ENV:Header>

Page 17: Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação

Estrutura de uma mensagem

Body: Obrigatório.

contém a codificação atual de uma chamada a um método e todos os argumentos de entrada ou uma resposta codificada que contém o resultado de uma chamada de um método.

<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap- envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap- encoding"> <soap:Body> <m:GetPrice xmlns:m="http://www.w3schools.com/prices"> <m:Item>Apples</m:Item> </m:GetPrice> </soap:Body></soap:Envelope>

Page 18: Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação

Estrutura de uma mensagem

Resposta da requisição

<?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soapenvelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soap:Body> <m:GetPriceResponse xmlns:m="http://www.w3schools.com/prices"> <m:Price>1.90</m:Price> </m:GetPriceResponse> </soap:Body>

</soap:Envelope>

Page 19: Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação

Estrutura de uma mensagem

Elemento Fault:

contém as informações dos erros ocorridos no envio da mensagem.

Apenas nas mensagens de resposta do servidor.

Se o elemento Fault existe ele deve aparecer como um elemento filho do elemento Body.

Elemento Fault pode aparecer apenas uma vez em uma mensagem SOAP

Page 20: Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação

Estrutura de uma mensagem

Elemento Fault:

Possui os seguintes subelemento

<faultcode> Para identificar o código da falta

<faultstring> Descriçao da falta

<faultactor> Informação de quem originou a falta

<detail> Informações específicas de erro relacionada ao elemento Body

Page 21: Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação

Estrutura de uma mensagem

Alguns exemplos de erros:

Error: VersionMismatch

Description: Encontrado um namespace invalido no envelope SOAP

Error: MustUnderstan

Description: Um elemento filho do elemento Header com o atributo mustUnderstand=“1” não foi entendido

Error: Client

Description: A mensagem foi formada incorretamente ou contém informações incorretas

Error: Server

Description: Problemas com o servidor. Mensagem não pode ser processada

Page 22: Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação

Ligação SOAP + HTTP

Requisição HTTP

POST /item HTTP/1.1 Host: 189.123.345.239 Content-Type: text/plain Content-Length: 200

Uma requisição SOAP é uma requisição HTTP que usa o padrão de request/response definido pelas regras de codificação SOAP

HTTP + XML = SOAP

Uma requisição SOAP pode ser feita através de POST ou GET

Page 23: Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação

POST /InStock HTTP/1.1

Host: www.stock.org

Content-Type: application/soap+xml; charset=utf-8

Content-Length: nnn

<?xml version="1.0"?>

<soap:Envelope

xmlns:soap=http://www.w3.org/2001/12/soap-envelope

soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soap:Body xmlns:m="http://www.stock.org/stock">  

<m:GetStockPrice>

<m:StockName>IBM</m:StockName>    

</m:GetStockPrice>

</soap:Body>

</soap:Envelope

Exemplo de uma requisição

Ligação SOAP + HTTP

Page 24: Tópicos de Sistemas de Informação A Carlos Oberdan Rolim Ciência da Computação

HTTP/1.1 200 OK

Content-Type: application/soap; charset=utf-8

Content-Length: nnn

<?xml version="1.0"?>

<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"

soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">

<soap:Body xmlns:m="http://www.stock.org/stock">

<m:GetStockPriceResponse>

<m:Price>34.5</m:Price>

</m:GetStockPriceResponse>

</soap:Body>

</soap:Envelope>

Exemplo de resposta da requisição

Ligação SOAP + HTTP