Departamento de Engenharia Informática
Web Services
2014-15
Sistemas Distribuídos
1
Departamento de Engenharia Informática
Primeiro objectivo: Serviços e aplicações
de grande escala na Internet
Usar de forma directa o HTTP e HTTPS
como protocolos de transferência de
informação
• Conseguindo maior facilidade de passar através
das firewalls
Usar URL e URI como referências
remotas para objectos
2014-15
Sistemas Distribuídos
2
Page 1
Seja eco-eficiente, evite imprimir-me
1
Departamento de Engenharia Informática
Motivação dos Web Services (I)
• Protocolo muito simples para garantir a
interoperação entre plataformas de múltiplos
fabricantes
• Tratar todo o tipo de heterogeneidade de
dados e informação com XML
• Permitir utilizar RPC ou MOM (Message
Oriented Middleware)
– sistemas de comunicação síncronos e assíncronos
2014-15
Sistemas Distribuídos
10
Departamento de Engenharia Informática
Motivação dos Web Services (II)
• Usar de forma directa o HTTP e HTTPS como protocolos
de transferência de informação
– Conseguindo maior facilidade de passar através das firewalls
• Usar URL e URI como referências remotas para objectos
• Permitir a transferência de todo o tipo de informação
– desde estruturas de dados a documentos estruturados e
informação multimédia
• Eliminar a distinção de sistemas para transferência de
documentos e sistemas para transferência de dados
2014-15
Sistemas Distribuídos
11
Page 2
Seja eco-eficiente, evite imprimir-me
2
Departamento de Engenharia Informática
Evolução
• 1997
– A Sun distribui o JDK 1.1 que inclui o Remote Method Invocation (RMI) que
define um modelo de computação distribuída usando objectos Java. O RMI é
semelhante ao CORBA e ao DCOM mas funciona só com objectos Java.
– Microsoft desenvolveu o COM+ sucessor do DCOM muito próximo do modelo
CORBA.
• 1999
– A SUN distribui o Java 2 Platform Entreprise Edition (J2EE) que integra o RMI e
o IIOP tornando mais simples a interoperação de sistemas entre sistemas Java
e CORBA.
– O Simple Object Acess Protocol – SOAP apareceu pela primeira vez.
• 2001
– A IBM e a Microsoft propõem as pilhas de protocolos dos Web Services à W3C
(World Wide Web Consortium)
• Wire stack
• Description stack
• Discovery stack
2014-15
Sistemas Distribuídos
12
Departamento de Engenharia Informática
Dinâmica do Mercado
• IBM
– O produto principal é o Websphere que inclui o SOAP, WSDL, UDDI
• Microsoft
– .NET suporta directamente Web Services mas é muito mais
abrangente
– O biztalk suporta web services
• Sun Microsystems
– O suporte da Sun ao Java faz com que esta plataforma é uma das que
incorpora a tecnologia Java Enterprise e os Web services.
• Oracle:
– Oracle 11g Web Service Broker. BPEL server, Oracle BPMS
• SAP:
– SAP XI,
2014-15
Sistemas Distribuídos
13
Page 3
Seja eco-eficiente, evite imprimir-me
3
Departamento de Engenharia Informática
Uniform Resource Identifiers (URIs)
• Standard de nomes de recursos na WWW
• Sintaxe: [prefixo]:[sufixo-específico-do-protocolo]
– Exemplos:
– urn:isbn:0-486-27557-4
– https://www.ist.utl.pt/index.html
– mailto:[email protected]
• Duas funções distintas:
– Identificar univocamente um recurso na internet
• Chamados URNs (Uniform Resource Names)
– e/ou
– Localizar um recurso na internet
• Chamados URLs (Uniform Resource Locator)
2014-15
Sistemas Distribuídos
14
Departamento de Engenharia Informática
Porque podem ter sucesso os Web
Services se os RPC falharam (??)
• SOAP = só mais um protocolo de RPC
– Muitos precursores: SunRPC, DCE, DCOM, Corba, …
– Modelo Cliente Servidor
– Todos iam transformar a informática das empresas, integrar os sistemas
legados, …
• Porque não o fizeram?
• Especulação:
– Não tinha uma interface Web (não eram aplicações a três níveis)
– Poucas implementações open-source
– O protocolo não era o mesmo entre o cliente PC (Microsoft) e o backend (IBM,
Sun, VMS)
– As redes empresariais eram locais, ligações à Internet limitadas
2014-15
Sistemas Distribuídos
17
Page 4
Seja eco-eficiente, evite imprimir-me
4
Departamento de Engenharia Informática
Modelo dos Web Services
(arquitectura básica)
Name & Service
description
Service
Registry
Find
Client
Publish
Service
Service
Requestor
Service
Provider
Bind
Request /Response
2014-15
Service
description
Sistemas Distribuídos
18
Departamento de Engenharia Informática
Web Services (standards)
Choreography - CDL4WS
Orchestration - BPEL4WS
Business
Processes
Management
Transactions
WS-Reliability
WS-Security
Coordination
Quality of
Service
Context
UDDI
Discovery
WSDL
Description
Description
SOAP
Message
XML
HTTP, JMS, SMTP
2014-15
Transport
Sistemas Distribuídos
19
Page 5
Seja eco-eficiente, evite imprimir-me
5
Departamento de Engenharia Informática
Arquitectura dos Web Services
• Um serviço de Directório para
registo e pesquisa dos
serviços : UDDI (ou outros)
• Páginas amarelas e directório
(endereço, contactos, identificadores,
categorizadores, ...)
• Um protocolo de
pedido/resposta para
invocação do serviço:
SOAP (ou outros)
• Interacção
• Uma especificação da
interface do serviço
WSDL
2014-15
• Contratos
Sistemas Distribuídos
20
Departamento de Engenharia Informática
Exemplo:
Amazon Web Services
• Permitem programar aplicações que usam
serviços da Amazon através de Web Services
– Vários serviços disponíveis para execução em cluster
de grande escala
• Exemplo de serviço:
controlo de inventário e
vendas para vendedores
– Existe API que permite a clientes remotos:
• Registar fornecimentos de produtos para armazéns da
Amazon
• Verificar estado dos fornecimentos
• Consultar estado de vendas dos produtos fornecidos
2014-15
Sistemas Distribuídos
21
Page 6
Seja eco-eficiente, evite imprimir-me
6
Departamento de Engenharia Informática
Exemplo:
Composição de Web Services
flight booking
a
flight booking
b
Travel Agent
Service
Client
hire car booking a
hire car bookingb
hotel booking a
2014-15
hotel booking b
Sistemas Distribuídos
22
Departamento de Engenharia Informática
JAX – WS (sucessor do JAX-RPC)
Integração dos Web Services com o
ambiente Java
2014-15
Sistemas Distribuídos
23
Page 7
Seja eco-eficiente, evite imprimir-me
7
Departamento de Engenharia Informática
Quando usar cada abordagem?
Implementation-first
• Oferecer (por Web Service) serviços já implementados
• Construir novo web service de raiz sem ter de aprender a
programar WSDL
Contract-first
• Programador conhecedor de WSDL que pretende ter elevado
controlo sobre o que é especificado no contrato
• Substituir a implementação de um web service existente por
outro mantendo compatibilidade com clientes
• Aderir a contrato definido por terceiros (e.g. protocolo
definido por consórcio de organizações)
2014-15
Sistemas Distribuídos
25
Departamento de Engenharia Informática
Exemplo Implementation-First
Definição da interface do Web Service
@WebService
public interface Hello {
@WebMethod
String sayHello(String name);
}
2014-15
Sistemas Distribuídos
26
Page 8
Seja eco-eficiente, evite imprimir-me
8
Departamento de Engenharia Informática
Exemplo Implementation-First
Implementação do Web Service
@WebService(endpointInterface="example.ws.Hello")
@WebServlet("/endpoint")
public class HelloImpl implements Hello {
public String sayHello(String name) {
return "Hello " + name + "!";
}
}
2014-15
Sistemas Distribuídos
27
Departamento de Engenharia Informática
Cliente
• O cliente pode ter um static proxy criado antes
da execução (static stub)
– Compilado a partir do WSDL pelo wsimport
• O cliente pode também usar um dynamic proxy
– Classe que é criada durante a execução a partir do
WSDL
2014-15
Sistemas Distribuídos
30
Page 9
Seja eco-eficiente, evite imprimir-me
9
Departamento de Engenharia Informática
Cliente com Stub
• Um stub nunca é distribuído aos clientes
• O stub implementado em Java só é relevante
para o run-time do JAX-WS e não é portável
para outros ambientes
• O stub é específico para um protocolo de
transporte
• Com um stub o cliente não precisa do WSDL em
tempo de execução
2014-15
Sistemas Distribuídos
31
Departamento de Engenharia Informática
JAX-WS: Arquitectura
Web Container (e.g. JBoss)
Service Client
Stub
WSDL
description
Service Endpoint
Stub (Tie)
Dispatch
JAX-WS API
Client Side JAX-WS
Runtime System
WSDL
<->
Java Mapping
JAX-WS API
Server Side JAX-WS
Runtime System
Message Protocol - SOAP
Transport Protocol – HTTP, etc
2014-15
Sistemas Distribuídos
32
Page 10
Seja eco-eficiente, evite imprimir-me
10
Departamento de Engenharia Informática
Cliente com Stub estático: Exemplo
public static void main(String[] args) {
HelloImplService service = new HelloImplService();
Hello port = service.getHelloImplPort();
String result = port.sayHello("friend");
System.out.println(result);
}
Stub, gerado previamente
com ferramenta wsimport
2014-15
Sistemas Distribuídos
33
Departamento de Engenharia Informática
JAX-WS: Arquitectura
Código do
programador
Código do
programado
r
Artefactos
gerados pelo
wsimport
(stubs, etc)
Artefactos
gerados pelo
wsimport
(stubs, etc)
2014-15
Servlet recebe pedidos HTTP e invoca a operação
correspondente
da implementação do Web Service
Sistemas Distribuídos
35
Page 11
Seja eco-eficiente, evite imprimir-me
11
Departamento de Engenharia Informática
Cliente: invocação dinâmica
• Invocação “semi-dinâmica” (dynamic proxy)
– Classe criada durante a execução a partir do WSDL
que se obtém na altura
– Antes da execução, apenas a interface abstracta do
serviço é conhecida (correspondendo a uma
interface Java)
• Invocação dinâmica (dynamic invocation
interface,DII)
– O cliente em tempo de execução utiliza o WSDL para
construir a invocação
– Antes da execução, nem interface abstracta nem
concreta do serviço são conhecidas
2014-15
Sistemas Distribuídos
38
Departamento de Engenharia Informática
Exemplo:
Cliente com dynamic proxy
public static void main(String[] args) throws Exception{
String namespace = “http://www.flutebank.com/xml”;
String wsldport “BillPayPort”;
String wsdlservice = “Billpayservice”;
String
wsdllocation=“http://127.O.O.1:8080/billpayservice/billpayservice.wsdl”;
URL wsldurl = new URL(wsdllocation);
ServiceFactory factory = ServiceFactory.newlnstance();
Service service = factory.createService(
wsldurl, new QName(namespace, wsdlservice));
//make the call to get the stub corresponding to this service and
interface
BillPay stub (BillPay) service.getPort(
new QName(namespace,wsldport), BillPay.class);
// invoke methods on the service
double lastpaid= stub.getLastPayment
(“my cable tv provider”);
System.out.println(“Last payment was” + lastpaid);
}
}
2014-15
Sistemas Distribuídos
40
Page 12
Seja eco-eficiente, evite imprimir-me
12
Departamento de Engenharia Informática
Exemplo:
Cliente com invocação dinâmica (DII)
public class DIIClient_WSDL{
public static void main(String[] args) throws Exception {
String wsdllocation =
http://127.O.O.1:9090/billpayservice/billpayservice.wsdl”;
String namespace = “http://www.flutebank.com/xml”;
String serviceName = “Billpayservice”;
ServiceFactory factory = ServiceFactory.newlnstanceQ;
Service service = (Service) factory.createService (
new URL(wsdllocation),
new QName(namespace,serviceName));
QName portName = new QName(namespace,”BillPayPort”);
QName operationName = new QName(namespace”getLastPayment”);
Call call = service.createCall(portName, operationName);
Object[] params = {“my cable tv provider”};
Object lastpaid = (Double)call.invoke(params);
System.out.println(”Last
payment was”
+ lastpaid);
2014-15
Sistemas Distribuídos
}
41
Departamento de Engenharia Informática
JAX-WS Handlers
• Handler
– Estende a classe javax.xml.ws.handler.Handler
– Métodos relevantes:
• handleRequest(MessageContext context)
• handleResponse(MessageContext context)
• handleFault(MessageContext context)
• Handler Chain
– Sequência de handlers executados sobre pedidos e respostas
2014-15
Sistemas Distribuídos
42
Page 13
Seja eco-eficiente, evite imprimir-me
13
Departamento de Engenharia Informática
Simple Object Access Protocol
SOAP
Protocolo de comunicação dos Web
Services
2014-15
Sistemas Distribuídos
44
Departamento de Engenharia Informática
Simple Object Access Protocol - SOAP
Objectivo
• Ubiquitous XML distributed computing infrastructure
Características
• Protocolo de comunicação distribuído permitindo o envio de qualquer tipo
de informação entre aplicações
• Define o protocolo de pedido resposta – estrutura das mensagens e da
interacção entre cliente e servidor
• O protocolo de representação de dados baseado em XML.
• Referências remotas baseadas em URI
• Protocolo extensível permitindo a incorporação de várias facetas :
segurança, tolerância a faltas, através de headers associados às mensagens
2014-15
Sistemas Distribuídos
45
Page 14
Seja eco-eficiente, evite imprimir-me
14
Departamento de Engenharia Informática
Wire stack – Visão dos Web Services
XML Messaging
XML and
SOAP
Data Encoding
HTTP(S),
SMTP, FTP,
sockets.
Quality of Service
SOAP
Manageability
Envelope
Extensions
Security
SOAP Headers
Network Protocol
2014-15
Sistemas Distribuídos
46
Departamento de Engenharia Informática
SOAP Simple Object Access Protocol
SOAP 1.1 Message
Structure
• Define:
SOAP
Envelope
– Modelo de
empacotamento
Header
Entries
[Header
Element]
• SOAP Envelope
• Baseado em XML
• Pode usar vários
transportes:
Body
Element
– HTTP
– SMTP
– ...
[Fault
Element]
2014-15
Sistemas Distribuídos
47
Page 15
Seja eco-eficiente, evite imprimir-me
15
Departamento de Engenharia Informática
Interacções previstas no SOAP
one-Way
Client
Server
Client
Server
Client
Server
Client
Server
Mensagem simples
request-response
RPC
Notification
callback
notification-response
2014-15
Sistemas Distribuídos
48
Departamento de Engenharia Informática
Execução simples em SOAP
• É necessário um URL de destino
• O nome de uma operação
• Os parâmetros.
– Os parâmetros são passados por cópia (in e out)
– Não existem referências para os objectos remotos
criadas automaticamente como em Java RMI
• Informação contextual, como a informação de
segurança
2014-15
Sistemas Distribuídos
49
Page 16
Seja eco-eficiente, evite imprimir-me
16
Departamento de Engenharia Informática
Binding de
SOAP sobre HTTP
SOAP - Pedido
O que há de
específico deste
transporte?
POST /ExemploHelloWS/endpoint HTTP/1.1
Host: www.server.com
Content-Type: text/xml; charset="utf-8"
Content-Length: 322
SOAPAction: ""
Envelope SOAP
com pedido
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:ns1="http://hello">
<soapenv:Body>
<ns1:sayHello>
<ns1:name>friend</ns1:name>
</ns1:sayHello>
</soapenv:Body>
</soapenv:Envelope>
2014-15
Sistemas Distribuídos
50
Departamento de Engenharia Informática
SOAP - Resposta
HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8"
Content-Length: 367
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:ns1="http://hello">
<soapenv:Body>
<ns1:sayHelloResponse
ns1:sayHelloResponse>
ns1:sayHelloResponse
<ns1:return>Hello friend!</ns1:return>
</ns1:sayHelloResponse>
</soapenv:Body>
</soapenv:Envelope>
2014-15
Sistemas Distribuídos
51
Page 17
Seja eco-eficiente, evite imprimir-me
17
Departamento de Engenharia Informática
Exemplo
• Servidor que disponibiliza o último preço
praticado para um produto
• Função Remota
float GetLastTradePrice(string symbol)
2014-15
Sistemas Distribuídos
52
Departamento de Engenharia Informática
Soap - Pedido
POST /StockQuote HTTP/1.1
Host: www.stockquoteserver.com
Content-Type: text/xml; charset="utf-8“
Content-Length: nnnn
SOAPAction: "Some-URI“
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<m:GetLastTradePrice xmlns:m="Some-URI">
<symbol>DIS</symbol>
</m:GetLastTradePrice>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
2014-15
Sistemas Distribuídos
53
Page 18
Seja eco-eficiente, evite imprimir-me
18
Departamento de Engenharia Informática
SOAP - Resposta
HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8“
Content-Length: nnnn
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
<SOAP-ENV:Body>
<m:GetLastTradePriceResponse
GetLastTradePriceResponse xmlns:m="Some-URI">
<Price
Price>34.5</Price>
Price
</m:GetLastTradePriceResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
2014-15
Sistemas Distribuídos
54
Departamento de Engenharia Informática
Binding do SOAP ao protocolo de
Transporte
• O HTTP é um protocolo de pedido-resposta, o
que torna o protocolo de RPC do SOAP muito
simples
– Para outros protocolos tem de se criar um protocolo
de controlo da invocação remota
• O HTTP permite que o servidor não tenha
estado
• A confidencialidade da informação pode ser
assegurada pelo HTTP/S
2014-15
Sistemas Distribuídos
55
Page 19
Seja eco-eficiente, evite imprimir-me
19
Departamento de Engenharia Informática
SOAP - Erro
HTTP/1.0 500 Internal Server Error
Content-Type: text/xml; charset=”utf-8”
Content-Length: nnn
<SOAP - ENV: Envelope
xmlns:SOAP-ENV=”http//schemas.xmlsoap.org/soap/enve1ope/”
SOAP-ENV:encodingStyle=”http//schemas.xmlsoap.org/soap/encoding/”>
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>Client .AuthenticationFailure</faultcode>
<faultstring>Failed to authenticate client</faultstring>
<faultactor>urn:X-SkatesTown:PartnerGateway</faultactor>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
2014-15
Sistemas Distribuídos
56
Departamento de Engenharia Informática
Physical (Communication Protocol) Message
POST /LookupCentral HTTP/1.1
Host: www.lookupcentralserver.com
Content-Type: text/xml; charset=“utf-8”
Content-Length: nnn
SOAPAction: “Directory/LookupPerson”
Out-of-message context (target URI)
Out-of-message context (SOAPAction)
Logical SOAP Message
<SOAP-ENV:Envelope
xmlns:SOAP-ENV=http://schemas.xmlsoap.org/soap/envelope/”
SOAP-ENV:encodingStyle=http://schemas.xmlsoap.org/soap/encoding/”/>
SOAP Headers
<SOAP-ENV:Header>
In-message context
<a: AuthorizationLevel>
xmls:a=“some-URI”>
</a:AuthorizationLevel>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<m:LookupPerson xmlns:m=“Some-URI”>
<FirstName>Big<FirstName>
<LastName>Boss</LastName>
</m:LookupPerson>
</SOAP-ENV:body>
SOAP Body
</SOAP-ENV:Envelope>
2014-15
Sistemas Distribuídos
57
Page 20
Seja eco-eficiente, evite imprimir-me
20
Departamento de Engenharia Informática
eXtensible Markup Language XML
Resolver a heterogeneidade na
comunicação e nos dados de forma
universal
2014-15
Sistemas Distribuídos
61
Departamento de Engenharia Informática
Arquitectura de Integração da Informação
• Em muitos casos a integração tem de resolver o problema da
troca de informação com múltiplas representações
• A solução mais simples para este problema é representar os
dados num formato canónico que todos sabiam utilizar
• Os dados originais de cada sistema têm de ser mapeado no
formato canónico mas depois podem ser usados por todos
que sigam o formato.
• Se o formato canónico tiver uma representação explicita as
mensagens deixam de ter se ser construídas pela ordem
estrita de invocação, pode verificar-se se estão de acordo
com o esperado, podem ser analisadas por ferramentas
independentes do RPC
• Esta é a razão da grande importância do XML
2014-15
Sistemas Distribuídos
62
Page 21
Seja eco-eficiente, evite imprimir-me
21
Departamento de Engenharia Informática
eXtensible Markup Language (XML)
• Deriva de uma linguagem muito mais antiga para
definição do formato de impressão de documentos, o
SGML
– O SGML já tinha sido a tecnologia de base no desenvolvimento
do HTML.
• Essencialmente o XML permite através de etiquetas
(tags) associar a descrição do formato aos dados de um
documento.
• Toda a descrição é textual
– Resolve muito dos problemas de portabilidade.
• O XML é uma proposta do W3C
– Percepcionado como o substituto dos formatos anteriores de
representação de dados como o EDI
2014-15
Sistemas Distribuídos
63
Departamento de Engenharia Informática
Importância do XML
O XML trabalha sobre documentos
Os documentos podem ser usados para múltiplos
fins:
• Representar/apresentar a informação num forma visível: em
papel ou transformada para html
• Comunicação de dados entre plataformas heterogéneas
• Para armazenamento da informação em ficheiros ou em bases
de dados
2014-15
Sistemas Distribuídos
64
Page 22
Seja eco-eficiente, evite imprimir-me
22
Departamento de Engenharia Informática
Sintaxe XML
• Regras de construção simples mas rígidas:
–
–
–
–
Existe um elemento raiz único
Todos os elementos têm que fechar
Fecham pela ordem inversa em que abrem
Os nomes são case-sensitive
• Um documento que respeita as regras diz-se bem
formado (well formed)
• Adicionalmente, pode-se definir uma gramática para
validar documentos XML
– Que sequências de elementos são válidas
– Que tipo de dados contém o elemento
2014-15
Sistemas Distribuídos
65
Departamento de Engenharia Informática
Exemplo de uma estrutura de dados em XML
<?xml version=“1.0” encoding =“UTF-8”?>
<!– este documento define uma lista de empregados -->
<employeeList xmlns="http://www.company.org/Emp”>
<employee type=“contract”>
<employee_id>75868</employee_id>
<name>
<first_name>John</first_name>
<last_name>Doe</last_name>
</name>
<extn>27304</extn>
<dept>1104332089</dept>
<email>[email protected]</email>
</employee>
</employeeList>
2014-15
Sistemas Distribuídos
employeeList
66
Page 23
Seja eco-eficiente, evite imprimir-me
23
Departamento de Engenharia Informática
Benefícios do XML
• Tecnologia não proprietária
• Independente das plataformas – o formato é texto
• Compatível com o HTTP
– O XML tem uma sintaxe mais restritiva que o HTML, mas pode
ser usado como o HTML pelo que passa pelas firewalls
• Internacional
– Formato texto que usa UTF-8 ou UTF-16 para representar os
caracteres
• Extensível
– Novas tags podem ser adicionadas por necessidade de
extensão.
– Para evitar duplicações existem namespaces a que um
documento pode ser associado.
2014-15
Sistemas Distribuídos
67
Departamento de Engenharia Informática
Benefícios do XML(II)
• A interpretação das mensagens depende de tags e não
da posição do campo na mensagem
• Permite a transformação automática dos dados
– As transformações são especificadas usando XML Stylesheet
Language Transformatiom (XSLT)
• Auto definida
– A estrutura de um documento XML tem uma meta-descrição
com base Document Type Definition (DTD) ou actualmente
com XML schema
• Ferramentas genéricas
– Ferramentas Open Source em Java e ferramentas já existentes
para SGML.
2014-15
Sistemas Distribuídos
68
Page 24
Seja eco-eficiente, evite imprimir-me
24
Departamento de Engenharia Informática
Tecnologia XML
• Namespaces
–
Permite a unicidade de nomes e resolver colisões. Os Espaços de nomes são
normalmente associados a um domínio de aplicação
– Um nome torna-se único por associação a um URI
• Xpath
– Define um mecanismo de acesso a elementos dentro de um documento XML
• Xlink
– Mecanismo para indexar outros documentos semelhantes aos hiperlinks do HTML
mas mais robusto
• XSL
– XML style sheet- documentos XML que definem transformações de documentos
em XML
• DOM - Document Object Model
– O DOM define os métodos para aceder a um documento XML. Pressupõe que o
documento é carregado em memória e que através de uma API se acede aos
diferentes elementos
• SAX - Simple API for XML
– O SAX é um parser que invoca funções à medida que encontra elementos no
documento
2014-15
Sistemas Distribuídos
70
Departamento de Engenharia Informática
Exemplo simples – mensagem
Com definição de namespace
<mensagem xmlns="urn:empresa.pt:mensagem"
id="74536">
<!-- isto é um comentário -->
<de>João</de>
<para>Carla</para>
<assunto>Reunião</assunto>
<texto>Confirmo a reunião dia 6</texto>
</mensagem>
2014-15
Sistemas Distribuídos
71
Page 25
Seja eco-eficiente, evite imprimir-me
25
Departamento de Engenharia Informática
eXtensible Stylesheet Language (XSL)
• Permite:
–
–
–
–
Transformar XML em HTML
Transformar XML noutro XML
Filtrar e ordenar dados XML
Apresentar o mesmo documento de formas
diferentes dependendo do dispositivo de destino
(ecrã, impressão, telefone móvel, etc.)
2014-15
Sistemas Distribuídos
72
Departamento de Engenharia Informática
Esquema do Documento
• A especificação de documentos era inicialmente
efectuada em DTD – Document Type Definition
• Em 2001 foi proposto o XML Schema
– Estende as capacidades do DTD mas cuja principal vantagem é
ter uma sintaxe XML que o DTD não tinha
• Um parser usando um DTD ou XML Schema pode
verificar se o documento está sintacticamente correcto
e se está conforme com um determinado tipo
• A meta-descrição pode ser incluída no documento, mas
a utilização mais interessante é poder aceder-lhe
através de um URI partilhando-o entre aplicações
2014-15
Sistemas Distribuídos
73
Page 26
Seja eco-eficiente, evite imprimir-me
26
Departamento de Engenharia Informática
Comparação XML Schema e DTD
• DTD era anterior ao XML pelo que não suporta bem
alguns aspectos da norma como por exemplo os
namespaces
• O DTD tinha por objectivo descrever documentos
legíveis por humanos e não documentos para
representar dados, por conseguinte faltam-lhe alguns
construções para exprimir diversas restrições simples,
– ex.: idade só pode ter um valor não negativo entre 0 e 150
• A sintaxe do DTD não é a do XML o que torna mais
complexas as ferramentas
2014-15
Sistemas Distribuídos
74
Departamento de Engenharia Informática
DTD Simples para o documento
employeeList
<!DOCTYPE employeeList [
<!ELEMENT employeeList (employee*)>
Element emplyeeList consists of zero or more employee elements.
NOTE: “*” = zero or more, “?”= zero or one, “+”= one or more
<!ELEMENT employee (employee_id, name, extn, dept, email)>
Element employee contains elements employee_id, name, dept,
and email.
<!ATTLIST emplyee type (perm|contract) #REQUIRED>
Attribute type for element employee is required and must have
either of these two values: contract or perm.
<!ELEMENT employee_id (#PCDATA)>
<!ELEMENT NAME (first_name, last_name)>
<!ELEMENT first_name (#PCDATA)>
<!ELEMENT last_name (#PCDATA)>
<!ELEMENT extn (#PCDATA)>
<!ELEMENT dept (#PCDATA)>
<!ELEMENT email (#PCDATA)>
]>
2014-15
Sintaxe
próxima das
expressões
Element dept. may containregulares
any parsable character data
(PCData).
Sistemas Distribuídos
75
Page 27
Seja eco-eficiente, evite imprimir-me
27
Departamento de Engenharia Informática
XML Schema para o documento employeeList
</xml version=“1.0” encoding=“UTF-8”?>
<xsd:schema xmlns:xsd=“http://www.w3.org/2001/XMLSchema
targetNamespace=“http://www.flute.com“
xmlns=“http://www.flute.com“>
Namespace declaration
<!ELEMENT employeeList (employee*)>
<xsd:element name=“employeeList”>
<xsd:complexType>
<xsd:sequence>
<xsd:element ref=“employee” minOccurs=“1”
maxOccurs=“unbounded”/>
<xsd:seuqence>
</xsd:complexType>
</xsd:element>
<xsd:element name=“employee”
<xsd:complexType>
<xsd:sequence>
<xsd:element ref=“employee_id” minOccurs=“1” maxOccurs=“1”/>
<xsd:element ref=“name” minOccurs=“1” maxOccurs=“1”/>
<xsd:element ref=“extn” minOccurs=“1” maxOccurs=“1”/>
<xsd:element ref=“dept” minOccurs=“1” maxOccurs=“1”/>
<xsd:element ref=“email” minOccurs=“1” maxOccurs=“1”/>
</xsd:sequence>
<xsd:attributeGroup ref=“employeeAttribute”/>
</xsd:comlexType>
</xsd:element>
<!ELEMENT employee (employee_id, name,
extn, dept, email)>
<!ELEMENT name (first_name,
last_name)>
<xsd:element name=“name”
<xsd:complexType>
<xsd:sequence>
<xsd:element ref=“first_name” minOccurs=“1” maxOccurs=“1”/>
<xsd:element ref=“last_name” minOccurs=“1” maxOccurs=“1”/>
<xsd:sequence>
</xsd:complexType>
</xsd:element>
2014-15
Sistemas Distribuídos
76
Departamento de Engenharia Informática
<xsd:element name=“employee_id”>
<xsd:simpleType>
<xsd:restriction base=“xsd:int”>
<xsd:minlnclusive value=“1”/>
<xsd:maxlnclusive value=“100000”/>
<xsd:restriction>
</xsd:simpleType>
</xsd:element>
employee:_id must be an integer between
1 and 100,000.
<xsd:element name=“first_name” type=“xsd:string”/>
<!ELEMENT first_name (PCDATA)>
<xsd:element name=“last_name” type=“xsd:string”/>
<xsd:element name=“email” type=“xsd:string”/>
<!ELEMENT email (PCDATA)
<xsd:element name=“dept” >
<xsd:simpleType>
<xsd:restriction base=“xsd:string>
Department must be specified in the form:
“999-999-9999”.
<xsd:pattern value=“[0-9]{3}-[0-9]{3}-[0-9]{4}”/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name=“extn”>
<xsd:simpleType>
<xsd:restrition base=“xsd:string”>
<xsd:pattern value=“[0-9]{5}”/>
</xsd:restrition>
</xsd:simpleType>
</xsd:element>
Extension must be specified in the form
“99999” (String consisting of five digits).
<xsd:attributeGroup name0”employeeAttribute”>
<xsd:attribute name=“type” use=“required”>
<xsd:simpleType>
<xsd:restriction base=“xsd:string”>
<xsd:enumerator value=“contract”/>
<!ATTLIST employee type (permicontract)
#REQUIRED>
2014-15
Sistemas Distribuídos
77
Page 28
Seja eco-eficiente, evite imprimir-me
28
Departamento de Engenharia Informática
XML Schema
• Define
– Elementos obrigatórios e proibidos
– Estrutura hierárquica dos elementos
– Atributos necessários ou opcionais dos elementos e
gama de valores permitidos
– Referências de parte de um documento a outros
elementos do documento
2014-15
Sistemas Distribuídos
78
Departamento de Engenharia Informática
Tecnologia XML
79
2014-15
Sistemas Distribuídos
79
Page 29
Seja eco-eficiente, evite imprimir-me
29
Departamento de Engenharia Informática
SAX – Simple API for XML
• Processamento em série
• Baseado no tratamento de eventos
2014-15
Sistemas Distribuídos
80
Departamento de Engenharia Informática
Quando usar
• Quando pretendemos processar informação em
série (data stream).
• A informação a processar não precisa de
manter estado.
• Importação/exportação de dados
2014-15
Sistemas Distribuídos
81
Page 30
Seja eco-eficiente, evite imprimir-me
30
Departamento de Engenharia Informática
DOM - Document Object Model
• Manipulação de árvore em memória
2014-15
Sistemas Distribuídos
82
Departamento de Engenharia Informática
WSDL - Web Service Definition
Language
Definição do contrato do Serviço
2014-15
Sistemas Distribuídos
83
Page 31
Seja eco-eficiente, evite imprimir-me
31
Departamento de Engenharia Informática
WSDL - Web Service Definition Language
• A IDL para descrição dos contratos em Web Services
• Define o contrato a que o serviço se obriga
• A definição permite descrever
–
–
–
–
Qual o serviço
Que mensagens devem ser enviadas e qual a sua estrutura
Como usar os vários protocolos de transporte
Onde o serviço está localizado, mais precisamente para que
rede a mensagem deve ser enviada
Diferenças vs IDL de RPC?
2014-15
Sistemas Distribuídos
84
Departamento de Engenharia Informática
WSDL
Web Services Description Language
Interface
Abstracta
WSDL 1.1 Document
Structure
WSDL
Document
[Types]
{Messages}
Interface
Concreta
{Port Types}
2014-15
{Bindings}
{Services}
Sistemas Distribuídos
86
Page 32
Seja eco-eficiente, evite imprimir-me
32
Departamento de Engenharia Informática
WSDL information model
part
type
abstract interface
portType
(abstract)
message
(abstract)
operation
concrete
implementation
binding
(concrete)
message
(concrete)
message
Made concrete by
service
concrete endpoint port
Contains zero or more
2014-15
Sistemas Distribuídos
87
Departamento de Engenharia Informática
WSDL
Web Services Description Language
• O contrato WSDL indica quais as
operações disponibilizadas pelo
Web Service aos seus clientes
• O conjunto das operações é
designado por interface
• Para cada operação, especifica os
argumentos (inputs), os resultados
(outputs) e os erros (faults).
• Os tipos de dados dos argumentos,
resultados e erros são descritos
com esquemas XSD
• O contrato WSDL não é fácil de ler
– É extenso
– A sua organização está invertida
– Tem múltiplas dependências
2014-15
Sistemas Distribuídos
88
Page 33
Seja eco-eficiente, evite imprimir-me
33
Departamento de Engenharia Informática
Definições
• Port Type – Descreve a interface abstracta de um Web
service.
– Atenção porque o termo “port” é usado com um sentido
totalmente diferente dos sockets. Um port de um Web Service
é semelhante a uma interface Java
• message – assinatura das operações descrevendo o
nome e os parâmetros da operação
• types – colecção de todos os tipos de dados usados na
especificação.
• Estes elementos são reutilizáveis porque definem
entidades abstractas e não a concretização de um
serviço
2014-15
Sistemas Distribuídos
91
Departamento de Engenharia Informática
portType
<portType name=”PriceCheckPortType”>
<operation name=”checkPrice”>
<input message=”pc:PriceCheckRequest”/>
<output message=”pc:PriceCheckResponse”/>
</operation>
</portType>
• Descreve o que o Serviço faz
• As mensagens permitem saber a assinatura dos métodos
• Normalmente um documento WSDL contem apenas um port type por
razões de reutilização
2014-15
Sistemas Distribuídos
92
Page 34
Seja eco-eficiente, evite imprimir-me
34
Departamento de Engenharia Informática
Mensagens
<! - - Message definitions - ->
<! - - A PriceCheckRequest is simply an item code (sku) - ->
<message name=”PriceCheckRequest”>
<part name=”sku” type=”xsd:string”/>
</message>
<! - - A PriceCheckResponse consists of an availability structure,
- - >
<! - - defined above.
<message name=”PriceCheckResponse”>
<part name=”result” type=”avail:availabilityType”/>
</message>
• As mensagens podem ser de input, output ou assinalar faltas
• podem ser usadas para diferentes operações
2014-15
Sistemas Distribuídos
93
Departamento de Engenharia Informática
Tipos de dados
<types>
<xsd:schema
targetNamespace=http://www.skatestown.com/ns/availability
xmlns:xsd=http://www.w3.org/2001/XMLSchema>
<xsd:complexType name=”availabilityType”>
<xsd:sequence>
<xsd:element name=”sku” type=”xsd:string”/>
<xsd:element name=”price” type=”xsd:double”/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</types>
• Tipos utilizados no documento WSDL
• Os tipos são declarados num XML schema
2014-15
Sistemas Distribuídos
94
Page 35
Seja eco-eficiente, evite imprimir-me
35
Departamento de Engenharia Informática
Binding
• A função do binding é tornar concreto o serviço
definindo a forma como funciona
• Exemplos:
– Protocolo de transporte: SOAP; HTTP; SMTP
– Valor do Soap action
– Formatação da mensagem
• Um portType pode ter um mais bindings
associados, mas cada documento WSDL
normalmente só tem um.
2014-15
Sistemas Distribuídos
95
Departamento de Engenharia Informática
Exemplo de binding para HTTP
<binding name=”PriceCheckSOAPBinding” type=”pc:PriceCheckPortType”>
<soap:binding style=”rpc”
transport=http://schemas.xmlsoap.org/soap/http/>
<operation name=”checkPrice”>
<soap:operation soapAction=” “/>
<input>
<soap:body use=”encoded”
namespace= http://www.skatestown.com/services/PriceCheck
encodingStyle= http://schemas.xmlsoap.org./soap/encoding/”/>
</input>
<output>
<soap:body use=”encoded”
namespace= http://www.skatestown.com/services/PriceCheck
encodingStyle= http://schemas.xmlsoap.org/soap/encoding//>
</output>
</operation>
</binding>
2014-15
Sistemas Distribuídos
96
Page 36
Seja eco-eficiente, evite imprimir-me
36
Departamento de Engenharia Informática
Exemplo de binding para SMTP
<!- - Binding definitions - ->
<binding name=“PriceCheckSMTPBinding”
type=“pc:PriceCheckPortType”>
<soap:binding style= “document”
Transport= “http://schemas.xmlsoap.org/soap/smtp”/>
<operation name=“checkPrice”>
<input>
<soap:body use=“literal”/>
</ input>
<output>
<soap:body use=“literal”/>
</ output>
</ operation>
</ binding>
2014-15
Sistemas Distribuídos
97
Departamento de Engenharia Informática
Exemplo de opções no binding
RPC/encoded
document/literal
document/encoded
RPC/literal
2014-15
Sistemas Distribuídos
98
Page 37
Seja eco-eficiente, evite imprimir-me
37
Departamento de Engenharia Informática
Port
<! - - Service definition - ->
<service name=”PriceCheckService”>
<port name=”PriceCheck” binding=”pc:PriceCheckSOAPBinding”>
<soap:address location=
http://localhost:8080/axis/services/PriceCheck/>
</port>
</service
<! - - Service definition - - >
<service name=“PriceCheckSMTPService”>
<port name=“PriceCheckSMTP” binding=“PriceCheckSMTPBinding”>
<soap:address location= “mailto:[email protected]”/
</ port>
</ service>
• Define o endereço da rede da rede onde o Web service é disponibilizado.
• Se existirem vários bindings são definidos vários ports
– exemplo para http ou o endereço de email para SMTP
2014-15
Sistemas Distribuídos
99
Departamento de Engenharia Informática
Modelo dos Web Services
(arquitectura básica)
Service
Registry
Name & Service
description
Find
Client
Publish
Service
Service
Requestor
Bind
Request /Response
2014-15
Sistemas Distribuídos
Service
Provider
Service
description
104
Page 38
Seja eco-eficiente, evite imprimir-me
38
Departamento de Engenharia Informática
Universal Description Discovery &
Integration (UDDI)
• Definição de um conjunto de serviços que
suportam a descrição e a localização de:
– Entidades que disponibilizam Web Services
(empresas, organizações)
– Os Web Services disponibilizados
– As interfaces que devem ser utilizadas para aceder
aos Web Services
• Baseada em standards Web: HTTP, XML, XML
Schema, SOAP
2014-15
Sistemas Distribuídos
105
Departamento de Engenharia Informática
Informação representada na UDDI
• A UDDI permite pesquisar informação muito variada
sobre os Web Services. Ex:
– Procurar Web Services que obedeçam a uma determinada
interface abstracta
– Procurar Web Services que estejam classificados de acordo
com um esquema conhecido de classificação
– Determinar os protocolos de transporte e segurança
suportados por um determinado Web Service
– Procurar Web Services classificados com uma palavra-chave
• O acesso é via as API definidas mas os operadores
também disponibilizam sites para acesso via web
2014-15
Sistemas Distribuídos
106
Page 39
Seja eco-eficiente, evite imprimir-me
39
Departamento de Engenharia Informática
Modelo estrutural da informação
businessEntity
businessServices
human readable
businessServices
information
about the publisher
key
2014-15
businessServices
bindingTemplate
human readable
bindingTemplate
information
URL
bindingTemplate
about a
information
family of services
about the
URL
serviceinterfaces
interfaces
service
key
URL
key
tModel
tModel
tModel
service descriptions
Sistemas Distribuídos
107
Departamento de Engenharia Informática
Modelo estrutural da informação
• businessEntity: descreve uma empresa ou organização
que exporta Web Services
– A informação encontra-se conceptualmente dividida em:
– Páginas brancas – informação geral de contacto
– Páginas amarelas – Classificação do tipo de serviço e localização
– Páginas verdes – Detalhes sobre a invocação do serviço
• businessService: descreve um conjunto de Web
Services exportado por uma businessEntity
• bindingTemplate: descreve a informação técnica
necessária para usar um determinado serviço
• tModel: descreve o “modelo técnico” de uma entidade
reutilizável, como um tipo de Web Service, o binding a
um protocolo usado por um Web Service, etc.
2014-15
Sistemas Distribuídos
108
Page 40
Seja eco-eficiente, evite imprimir-me
40
Departamento de Engenharia Informática
Taxionomia
• Os serviços registados devem ser categorizados em
taxionomias que os permitam pesquisar
• Existem várias taxionomias normalizadas, ex.:
– ISO 3166 – geografias
– D-U-N-S – Data Universal Numbering System – Dun&Bradstreet
– UN/SPSC- produtos e serviços – ONU
• O UDDI permite que todas as entidades sejam
classificadas
• As pesquisas podem usar múltiplas classificações
• Para uso interno das organizações podem ser definidos
os seus esquemas de classificação. Ex.: qualidade de
serviço do fornecedor do web service
2014-15
Sistemas Distribuídos
109
Departamento de Engenharia Informática
Arquitectura UDDI - Registries
• Um Registry é composto por um ou mais nós
UDDI
• Os nós de um Registry gerem colectivamente
um conjunto bem definido de dados UDDI.
Tipicamente, isto é suportado com replicação
entre os nós do Registry
• A representação física de um Registry é deixada
à escolha das implementações
2014-15
Sistemas Distribuídos
110
Page 41
Seja eco-eficiente, evite imprimir-me
41
Departamento de Engenharia Informática
Registry Server privado
• Gere a base de dados com
os registos UDDI
• Modos de acesso
– Aplicações JAX-R
– Registry Browser
– Xindice
• Interfaces
– API
– Acesso directo aos registos
2014-15
Sistemas Distribuídos
111
Departamento de Engenharia Informática
Discovery Stack
• Protocolo de ligação ou binding entre o cliente e o
servidor.
• Os fornecedores dos serviços publicam a respectiva
interface
• O protocolo de inspecção permite verificar se um dado
serviço existe baseado na sua identificação
• O UDDI responde às questões
– Onde é que o Web service está localizado?
– Qual o processo de negócio que o serviço disponibiliza
• O UDDI permite encontrar o serviço baseado na sua
definição – capability lookup
2014-15
Sistemas Distribuídos
112
Page 42
Seja eco-eficiente, evite imprimir-me
42
Departamento de Engenharia Informática
JAX-R API
Estruturas de dados
• O JAX-R tem um modelo de
dados muito próximo do
standard UDDI
– O mapeamento de um para outro
é quase directo
– Só mudam alguns nomes
• Pacote de classes que
implementam o modelo de
dados:
–
2014-15
javax.xml.registry.infomodel
Sistemas Distribuídos
113
Page 43
Seja eco-eficiente, evite imprimir-me
43
Download

5 - Web Services 2015