Departamento de Engenharia Informática Objectivo desta aula: Serviços e aplicações de grande escala na Internet 12/13 Sistemas Distribuídos 1 Departamento de Engenharia Informática Web Services 12/13 Sistemas Distribuídos Page 1 2 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 12/13 Sistemas Distribuídos 11 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 12/13 Sistemas Distribuídos Page 2 12 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 12/13 Sistemas Distribuídos 13 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, 12/13 Sistemas Distribuídos Page 3 14 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) 12/13 Sistemas Distribuídos 15 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 12/13 Sistemas Distribuídos Page 4 18 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 12/13 Service description Sistemas Distribuídos 19 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 12/13 Transport Sistemas Distribuídos Page 5 20 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 12/13 • Contratos Sistemas Distribuídos 21 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 12/13 Sistemas Distribuídos Page 6 22 Departamento de Engenharia Informática Exemplo: Composição de Web Services flight bookinga flight booking b Travel Agent Service Client hire car booking a hire car bookingb hotel booking a 12/13 hotel booking b Sistemas Distribuídos 23 Departamento de Engenharia Informática JAX – WS (sucessor do JAX-RPC) Integração dos Web Services com o ambiente Java 12/13 Sistemas Distribuídos Page 7 24 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) 12/13 Sistemas Distribuídos 26 Departamento de Engenharia Informática Exemplo Implementation-First Definição da interface do Web Service @WebService public interface Hello { @WebMethod String sayHello(String name); } 12/13 Sistemas Distribuídos Page 8 27 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 + "!"; } } 12/13 Sistemas Distribuídos 28 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 12/13 Sistemas Distribuídos Page 9 31 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 12/13 Sistemas Distribuídos 32 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 12/13 Sistemas Distribuídos Page 10 33 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 12/13 Sistemas Distribuídos 34 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) 12/13 Servlet recebe pedidos HTTP e invoca a operação correspondente da implementação do Web Service Sistemas Distribuídos 36 Page 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 12/13 Sistemas Distribuídos 39 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); } } 12/13 Sistemas Distribuídos Page 12 41 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); 12/13 Sistemas Distribuídos } 42 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 12/13 Sistemas Distribuídos Page 13 43 Departamento de Engenharia Informática Simple Object Access Protocol SOAP Protocolo de comunicação dos Web Services 12/13 Sistemas Distribuídos 45 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 12/13 Sistemas Distribuídos Page 14 46 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 12/13 Sistemas Distribuídos 47 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] 12/13 Sistemas Distribuídos Page 15 48 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 12/13 Sistemas Distribuídos 49 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 12/13 Sistemas Distribuídos Page 16 50 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> 12/13 Sistemas Distribuídos 51 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> 12/13 Sistemas Distribuídos Page 17 52 Departamento de Engenharia Informática Exemplo • Servidor que disponibiliza o último preço praticado para um produto • Função Remota float GetLastTradePrice(string symbol) 12/13 Sistemas Distribuídos 53 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> 12/13 Sistemas Distribuídos Page 18 54 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> 12/13 Sistemas Distribuídos 55 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 12/13 Sistemas Distribuídos Page 19 56 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> 12/13 Sistemas Distribuídos 57 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> 12/13 Sistemas Distribuídos Page 20 58 Departamento de Engenharia Informática eXtensible Markup Language XML Resolver a heterogeneidade na comunicação e nos dados de forma universal 12/13 Sistemas Distribuídos 62 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 12/13 Sistemas Distribuídos Page 21 63 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 12/13 Sistemas Distribuídos 64 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 12/13 Sistemas Distribuídos Page 22 65 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 12/13 Sistemas Distribuídos 66 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.flute.com”> <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> 12/13 Sistemas Distribuídos Page 23 employeeList 67 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. 12/13 Sistemas Distribuídos 68 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. 12/13 Sistemas Distribuídos Page 24 69 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 12/13 Sistemas Distribuídos 71 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> 12/13 Sistemas Distribuídos Page 25 72 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.) 12/13 Sistemas Distribuídos 73 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 12/13 Sistemas Distribuídos Page 26 74 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 12/13 Sistemas Distribuídos 75 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)> ]> 12/13 Sintaxe próxima das expressões Element dept. may containregulares any parsable character data (PCData). Sistemas Distribuídos Page 27 76 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> 12/13 Sistemas Distribuídos 77 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> 12/13 Sistemas Distribuídos 78 Page 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 12/13 Sistemas Distribuídos 79 Departamento de Engenharia Informática Tecnologia XML 80 12/13 Sistemas Distribuídos Page 29 80 Departamento de Engenharia Informática SAX – Simple API for XML • Processamento em série • Baseado no tratamento de eventos 12/13 Sistemas Distribuídos 81 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 12/13 Sistemas Distribuídos Page 30 82 Departamento de Engenharia Informática DOM - Document Object Model • Manipulação de árvore em memória 12/13 Sistemas Distribuídos 83 Departamento de Engenharia Informática WSDL - Web Service Definition Language Definição do contrato do Serviço 12/13 Sistemas Distribuídos Page 31 84 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? 12/13 Sistemas Distribuídos 85 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} 12/13 {Bindings} {Services} Sistemas Distribuídos Page 32 87 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 12/13 Sistemas Distribuídos 88 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 12/13 Sistemas Distribuídos Page 33 89 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 12/13 Sistemas Distribuídos 92 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 12/13 Sistemas Distribuídos Page 34 93 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 12/13 Sistemas Distribuídos 94 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 12/13 Sistemas Distribuídos Page 35 95 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. 12/13 Sistemas Distribuídos 96 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> 12/13 Sistemas Distribuídos Page 36 97 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> 12/13 Sistemas Distribuídos 98 Departamento de Engenharia Informática Exemplo de opções no binding RPC/encoded document/literal document/encoded RPC/literal 12/13 Sistemas Distribuídos Page 37 99 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 12/13 Sistemas Distribuídos 100 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 12/13 Sistemas Distribuídos Page 38 Service Provider Service description 105 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 12/13 Sistemas Distribuídos 106 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 12/13 Sistemas Distribuídos Page 39 107 Departamento de Engenharia Informática Modelo estrutural da informação businessEntity businessServices human readable businessServices information about the publisher key 12/13 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 108 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. 12/13 Sistemas Distribuídos Page 40 109 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 12/13 Sistemas Distribuídos 110 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 12/13 Sistemas Distribuídos Page 41 111 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 12/13 Sistemas Distribuídos 112 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 12/13 Sistemas Distribuídos Page 42 113 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: – 12/13 javax.xml.registry.infomodel Sistemas Distribuídos Page 43 114