SlideShare uma empresa Scribd logo
1 de 50
Web Services
Web Services A Web service is a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards. Fonte:http://www.w3.org/TR/2004/NOTE-ws-arch-20040211 2
Web Services Um cenário de utilização 3
Web Services Um Web Service é um bloco de software que pode ser acedido pela Internet e usado remotamente por outras aplicações 4 Infra-estrutura para a comunicação entre aplicações
Web Services Antecedentes DCOM – Distributed Component Object Model CORBA -Common Object Request Broker Architecture Java RMI – Remote Method Invocation Problemas de interoperabilbidade Orientados à ligação Dependentes da plataforma 5
Web Services Características de um Web Service Expõe funcionalidades de programação na Web - serviço São acedidos usando protocolos standard - HTTP Comunicam por meio de mensagens Usam XML para codificar as mensagens Estruturam as mensagens usando o protocolo SOAP São auto-descritivos permitindo a um cliente facilmente comunicar com o serviço - WSDL São serviços que podem ser registados e facilmente descobertos – UDDI 6 Independentes de plataformas, linguagens de programação e sistemas operativos
Arquitectura de um Web Service Service-Oriented Architecture + Web =  	Web Services Fornecedor do serviço - Implementa o serviço, define as funcionalidades a desenvolver e disponibiliza o serviço na Internet. Cliente do serviço - Qualquer aplicação que usa o serviço. Faz chamada remota ao fornecedor do serviço criando uma conexão e enviando um pedido Registo do serviço - é um directório de serviços logicamente centralizado. Fornece um lugar para registar os serviços e definir mecanismo simples de publicação/descoberta desses serviços. 7
Web Services Arquitectura baseada em SOAP,WSDL e UDDI Fonte:Introduction to Web Services by Philippe Le Hégaret– w3c.org 8
Camadas de Protocolos Serviço de transporte - é responsável pelo transporte das mensagens entre aplicações. HTTP , SMTP , FTP  Mensagens XML - responsável pela codificação das mensagens num formato XML, de modo a serem facilmente interpretadas pelas aplicações. XML-RPC e SOAP   Descrição do serviço - é responsável pela descrição da interface publica do serviço, implementada através do protocolo WSDL   Descoberta do Serviço - é responsável pela centralização dos serviços, simplificando a sua publicação/descoberta - UDDI  9
Camadas de Protocolos 10
Web Services 11
SOAP Simple Object Access Protocol 12
SOAP SOAP Version 1.2 (SOAP) is a lightweight protocol intended for exchanging structured information in a decentralized, distributed environment. It uses XML technologies to define an extensible messaging framework providing a message construct that can be exchanged over a variety of underlying protocols. The framework has been designed to be independent of any particular programming model and other implementation specific semantics. [SOAP Version 1.2 Part 1: Messaging Framework ] http://www.w3.org/TR/2003/REC-soap12-part1-20030624/ 13
SOAP SOAP é um protocolo baseado em XML para troca de mensagens entre aplicações Define: A  estrutura das mensagens Um modelo de processamento que descreve como as mensagens devem ser processadas pelo serviço. 14
SOAP Template de uma mensagem SOAP: 	<soap:Envelopexmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <!-- optional -->  	<!-- header blocks go here... -->  </soap:Header> <soap:Body> 	 <!-- payload or Fault element goes here... -->  </soap:Body> </soap:Envelope>  15
SOAP <soap:Envelope> Elemento raiz de uma mensagem SOAP. Contém um Header opcional e um Body obrigatório <soap:Header> 	usado para codificar informação adicional da mensagem – header blocks <soap:Body> contém o conteúdo principal da mensagem a enviar e deve ser um documento XML válido. <soap:Fault> trata os erros de um modo centralizado, permitindo ao servidor comunicar ao cliente os erros encontrados no processamento da mensagem 16
Mensagem SOAP .Net [WebMethod ] public int Add(int x, int y)  {return x+y;} Codificação da chamada Add(3,5) <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">   <soap:Body>   <Add xmlns="http://w2kslosaw/DemoService/">        <x>3</x>    	<y>5</y>     </Add>  </soap:Body> </soap:Envelope> 17
Mensagem SOAP .Net Codificação da Resposta <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:xsd="http://www.w3.org/2001/XMLSchema"  xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">   <soap:Body>    <AddResponse xmlns="http://w2kslosaw/helloworld/">     	<AddResult> 			8 		</AddResult>     	</AddResponse>  </soap:Body> </soap:Envelope> 18
SOAP – Protocol Binding Para além da codificação da mensagem em SOAP é necessário definir como a mensagem será enviada.  Uma da grandes vantagens do SOAP é que não está ligado a nenhum protocolo particular. As mensagens SOAP podem ser enviadas por qualquer protocolo que possa transmitir XML A especificação SOAP define apenas um “protocol binding” – enviar mensagens SOAP via HTTP POST 19
SOAP – Protocol Binding Exemplo de um pedido HTTP com uma mensagem SOAP: POST /losaw/dir1/demoservice.asmx HTTP/1.1 Host: w2ks Content-Type: text/xml; charset=utf-8 Content-Length: 312 SOAPAction: "http://w2kslosaw/helloworld/Add"<?xml version="1.0" encoding="utf-8"?> <soap:Envelope … xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">   <soap:Body>     <Add xmlns="http://w2kslosaw/helloworld/">      	<x>3</x>       	<y>5</y>     </Add>   </soap:Body> </soap:Envelope> 20 Request
SOAP – Protocol Binding Exemplo de resposta HTTP com mensagem SOAP:   HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: 100 <?xml version="1.0" encoding="utf-8"?> <soap:Envelope … xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">   <soap:Body>     <AddResponse xmlns="http://w2kslosaw/helloworld/">         	<AddResult>8</AddResult>     </AddResponse>   </soap:Body> </soap:Envelope> 21 Response
Camadas de Protocolos 22
WSDL  Web Service Description Language 23
WSDL WSDL is an XML format for describing network services as a set of endpoints operating on messages containing either document-oriented or procedure-oriented information. The operations and messages are described abstractly, and then bound to a concrete network protocol and message format to define an endpoint. Related concrete endpoints are combined into abstract endpoints (services). WSDL is extensible to allow description of endpoints and their messages regardless of what message formats or network protocols are used to communicate.  [Web Services Description Language (WSDL) 1.1 ] http://www.w3.org/TR/2001/NOTE-wsdl-20010315 24
WSDL - Web Service Description Language WSDL é uma especificação para descrever um     Web Service num vocabulário XML WSDL é um documento XML para descrever: ,[object Object]
A informação dos tipos de dados para as mensagens de chamada/resposta dos serviços
A informação sobre o protocolo de transporte a usar
A informação sobre a localização do serviço25 WSDL representa um contrato entre o cliente do serviço e o fornecedor do serviço
WSDL - Web Service Description Language Estrutura de um documento WSDL <definitions> é o elemento  raíz do documento WSDL <types> especifica o tipo de dados usados no serviço que serão referenciados pelas mensagens <message> especifica as mensagens do serviço <portType> especifica as <operation>( interface) do serviço <binding> especifica o formato das mensagens e um protocolo de transporte <service> especifica a localização para invocar o serviço<port> 26
WSDL - Web Service Description Language Definitions 	É o elemento raíz de um documento WSDL. O atributo targetNamespace permite definir um namespace e o atributo xmlns permite referenciar outos namespaces <definitionsxmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:s0="http://w2kslosaw/addservice/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" targetNamespace="http://w2kslosaw/addservice/" xmlns="http://schemas.xmlsoap.org/wsdl/"> 27
WSDL - Web Service Description Language <types>  Contém declarações de tipos de dados referenciadas pelas mensagens É um Schema embebido no documento. 28 [WebMethod ] public int Add(int x, int y)  {return x+y;} <types>  <s:schema elementFormDefault="qualified" targetNamespace="http://w2kslosaw/addservice/"> <s:element name="Add">  <s:complexType>  <s:sequence>   <s:element minOccurs="1" maxOccurs="1" name="x" type="s:int" />   <s:element minOccurs="1" maxOccurs="1" name="y" type="s:int" />    </s:sequence>   </s:complexType>  </s:element> Add
WSDL - Web Service Description Language <message> Uma descrição abstracta das mensagens entre o cliente e o servidor.  Cada mensagem contém uma ou mais <part> que descrevem um item a ser enviado ou recebido Um element part tem um atributo element ou type <message name="AddSoapIn">  <partname="parameters" element="s0:Add" /> </message> <message  name="AddSoapOut"> <partname="parameters" element="s0:AddResponse" />  </message> 29 Referência a types
WSDL - Web Service Description Language <message name="AddSoapIn">  <partname="parameters" element="s0:Add" /> </message> 30 <types>… <s:element name="Add"> … <s:element minOccurs="1" maxOccurs="1" name="x" type="s:int" />  <s:element minOccurs="1" maxOccurs="1" name="y" type="s:int" />    </s:sequence>   </s:complexType>   </s:element> <soap:Body> <Add xmlns="http://w2kslosaw/DemoService/">         <x>3</x>          <y>5</y>   </Add>  </soap:Body> Request
WSDL - Web Service Description Language <portType> (Interfaces) Define um grupo de <operation>relacionadas, isto é uma interface para o serviço.  Cada operação é constituída por combinações de elementos input e output (e fault opcional) dependendo do padrão da mensagem (Message Exchange Pattern) <portType name="DemoServiceSoap"> <operation name="Add">  <inputmessage="s0:AddSoapIn" /> <outputmessage="s0:AddSoapOut" />  </operation> </portType> 31 <message name="AddSoapIn">  <partname="parameters" element="s0:Add" /> </message>
WSDL - Web Service Description Language Message Exchange pattern 32
WSDL - Web Service Description Language <binding>    Descreve os detalhes concretos da utilização de um determinado portType com um dado protocolo.   Define o formato das mensagens e os detalhes do protocolo.  Especifica como criar um envelope SOAP para uma operation <binding name="DemoServiceSoap“ type="s0:DemoServiceSoap">  <soap:bindingstyle="document"   transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="Add">  <soap:operationstyle="document"           soapAction="http://w2kslosaw/addservice/Add"/> <input> <soap:bodyuse="literal" /></input> <output> <soap:bodyuse="literal" /></output>  </operation>  </binding> 33
WSDL - Web Service Description Language <soap:binding> binding através de SOAP transport define o protocolo de transporte 			transport=http://schemas.xmlsoap.org/soap/http style – tipo de documento style="document" 34
WSDL - Web Service Description Language <soap:binding> 	<soap:operation style="document"           soapAction="http://w2kslosaw/addservice/Add" />     <input> <soap:body use="literal" /> </input> <output> <soap:body use="literal" /> </output>  </operation>  <soap:operation> define a forma como é feito o binding de determinada operação <soapAction>define cabeçalho http SOAPACTION <soap:body> - define a codificação da mensagem no body do SOAP use="literal" 35
WSDL - Web Service Description Language <service> O elemento service define um ou mais elementos port ( ponto de acesso).  Um elemento <port> é usado para especificar um endereço do Web Service com referência a um determinado binding.  <service name="DemoService"> <port name="DemoServiceSoap" binding="s0:DemoServiceSoap"> <soap:address location="http://w2ks/losaw/dir1/demoservice.asmx" /> </port> </service> 36
UDDI Universal Description, DiscoveryandIntegration 38
UDDI Um registo de serviços UDDI Business registry  Um local para descobrir serviços e informação detalhado sobre o serviço , p.e WSDL Classificar, catalogar e gerir Web services  Selecção dinâmica da implementação de um serviço em Runtime Criado inicialmente por Microsoft, IBM e Ariba 39
UDDI Repositórios UDDi de teste http://test.uddi.microsoft.com/ https://uddi.ibm.com/testregistry/registry.html http://udditest.sap.com Replicação da informação nos repositórios Registo da informação White pages – identificação da empresa Yellow pages – classificação do serviço Green pages – informação técnica sobre o serviço 40
UDDI UDDI Programmers APIs  Inquiry API Set  Publication API Set  Security Policy API Set  Subscription API Set  Value Set API Set  Implementações Microsoft UDDI SDK IBM UDDI4J Java API for XML Registry – JAXR WASP UDDI 41
Web Services Web Services em .Net Criação de um serviço Web Criação de um cliente do serviço 42
WSDL - Web Service Description Language Exemplos 1 – Web service .Net básico Somarservice.asmx 2 – Criar Cliente do serviço 3 - Cliente para um serviço maquina w2ks http://w2ks/losaw/dir1/demoservice.asmx 4 – Tempo nos aeroportos 43
Web Services .Net Ficheiro .asmx <%@ WebService Language="c#" Codebehind="demoservice.asmx.cs" Class="demoservice.DemoService" %> Ficheiro .asmx.cs [WebService(Namespace=http://w2ks.dei.isep/addservice)] public class DemoService : System.Web.Services.WebService 	{ 		public DemoService()} ... [WebMethod] 	public int Add(int x, int y)    { 	return x+y;     } 44
Web Services .Net Framework .Net para Web Service 45 Fonte: Anatomy of an XML Web Service Lifetime - .NET Framework Developer's Guide
Web Services .Net  O cliente cria uma nova instância da classe proxy do serviço web w2ks.DemoService ws=new w2ks.DemoService();  A classe proxy é criada através da descrição do serviço no ficheiro .wsdl  (Reference.cs) public class DemoService : System.Web.Services.Protocols.SoapHttpClientProtocol {     public DemoService() {   this.Url = "http://w2ks/losaw/dir1/demoservice.asmx"; } …. public int Add(int x, int y) { object[] results = this.Invoke("Add", new object[]  					{x,y});   return ((int)(results[0])); } 46
Web Services .Net O cliente chama um método do serviço resultado=ws.Add(x,y); A plataforma no cliente serialize os argumentos do método numa mensagem SOAP e envia a mensagem através da rede usando o protocolo HTTP para o computador onde reside o serviço Web O serviço Web recebe a mensagem SOAP e deserialize o XML recebido. Cria uma instância da classe que implementa o serviço e invoca o método do serviço. 47

Mais conteúdo relacionado

Mais procurados

Maratona JBoss 2010 - JBossWS
Maratona JBoss 2010 -  JBossWSMaratona JBoss 2010 -  JBossWS
Maratona JBoss 2010 - JBossWSDextra
 
Mini Curso Web Services com PHP
Mini Curso Web Services com PHPMini Curso Web Services com PHP
Mini Curso Web Services com PHPelliando dias
 
AAB304 - Windows Workflow Foundation - wcamb
AAB304 - Windows Workflow Foundation - wcambAAB304 - Windows Workflow Foundation - wcamb
AAB304 - Windows Workflow Foundation - wcambMicrosoft Brasil
 
Serviços na Plataforma .NET (SOA, REST, Microservices, WCF, Web API)
Serviços na Plataforma .NET (SOA, REST, Microservices, WCF, Web API)Serviços na Plataforma .NET (SOA, REST, Microservices, WCF, Web API)
Serviços na Plataforma .NET (SOA, REST, Microservices, WCF, Web API)Renato Groff
 
Web Services com Apache Axis
Web Services com Apache AxisWeb Services com Apache Axis
Web Services com Apache AxisIgo Coelho
 
PHP RESTful Web Services - PHPConf'09
PHP RESTful Web Services - PHPConf'09PHP RESTful Web Services - PHPConf'09
PHP RESTful Web Services - PHPConf'09Felipe Ribeiro
 
Introdução à Arquitetura Web
Introdução à Arquitetura WebIntrodução à Arquitetura Web
Introdução à Arquitetura WebBreno Vitorino
 
Introdução a Arquitetura Orientada a Serviços
Introdução a Arquitetura Orientada a ServiçosIntrodução a Arquitetura Orientada a Serviços
Introdução a Arquitetura Orientada a ServiçosIgor Takenami
 
JME Web Services API: um estudo de caso
JME Web Services API: um estudo de casoJME Web Services API: um estudo de caso
JME Web Services API: um estudo de casoLuiz Matos
 
Criando Webservices RESTFul com CakePHP
Criando Webservices RESTFul com CakePHPCriando Webservices RESTFul com CakePHP
Criando Webservices RESTFul com CakePHPRenan Gonçalves
 
Tecnologia em Redes - Servidor WEB
Tecnologia em Redes - Servidor WEBTecnologia em Redes - Servidor WEB
Tecnologia em Redes - Servidor WEBelliando dias
 
Sistemas Distribuidos Java
Sistemas Distribuidos JavaSistemas Distribuidos Java
Sistemas Distribuidos Javalimadavi
 
Criando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONCriando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONMarcio Junior Vieira
 
SOA - Uma Breve Introdução
SOA - Uma Breve IntroduçãoSOA - Uma Breve Introdução
SOA - Uma Breve IntroduçãoAndré Borgonovo
 

Mais procurados (20)

Maratona JBoss 2010 - JBossWS
Maratona JBoss 2010 -  JBossWSMaratona JBoss 2010 -  JBossWS
Maratona JBoss 2010 - JBossWS
 
Web services
Web servicesWeb services
Web services
 
Web Services XML - .NET framework
Web Services XML - .NET frameworkWeb Services XML - .NET framework
Web Services XML - .NET framework
 
Mini Curso Web Services com PHP
Mini Curso Web Services com PHPMini Curso Web Services com PHP
Mini Curso Web Services com PHP
 
AAB304 - Windows Workflow Foundation - wcamb
AAB304 - Windows Workflow Foundation - wcambAAB304 - Windows Workflow Foundation - wcamb
AAB304 - Windows Workflow Foundation - wcamb
 
Serviços na Plataforma .NET (SOA, REST, Microservices, WCF, Web API)
Serviços na Plataforma .NET (SOA, REST, Microservices, WCF, Web API)Serviços na Plataforma .NET (SOA, REST, Microservices, WCF, Web API)
Serviços na Plataforma .NET (SOA, REST, Microservices, WCF, Web API)
 
Web Services Rest
Web Services RestWeb Services Rest
Web Services Rest
 
Web Services com Apache Axis
Web Services com Apache AxisWeb Services com Apache Axis
Web Services com Apache Axis
 
PHP RESTful Web Services - PHPConf'09
PHP RESTful Web Services - PHPConf'09PHP RESTful Web Services - PHPConf'09
PHP RESTful Web Services - PHPConf'09
 
Introdução à Arquitetura Web
Introdução à Arquitetura WebIntrodução à Arquitetura Web
Introdução à Arquitetura Web
 
Rest
RestRest
Rest
 
Introdução a Arquitetura Orientada a Serviços
Introdução a Arquitetura Orientada a ServiçosIntrodução a Arquitetura Orientada a Serviços
Introdução a Arquitetura Orientada a Serviços
 
Web Service - XML
Web Service - XMLWeb Service - XML
Web Service - XML
 
JME Web Services API: um estudo de caso
JME Web Services API: um estudo de casoJME Web Services API: um estudo de caso
JME Web Services API: um estudo de caso
 
Criando Webservices RESTFul com CakePHP
Criando Webservices RESTFul com CakePHPCriando Webservices RESTFul com CakePHP
Criando Webservices RESTFul com CakePHP
 
Tecnologia em Redes - Servidor WEB
Tecnologia em Redes - Servidor WEBTecnologia em Redes - Servidor WEB
Tecnologia em Redes - Servidor WEB
 
WebServices-XML
WebServices-XMLWebServices-XML
WebServices-XML
 
Sistemas Distribuidos Java
Sistemas Distribuidos JavaSistemas Distribuidos Java
Sistemas Distribuidos Java
 
Criando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSONCriando e consumindo webservice REST com PHP e JSON
Criando e consumindo webservice REST com PHP e JSON
 
SOA - Uma Breve Introdução
SOA - Uma Breve IntroduçãoSOA - Uma Breve Introdução
SOA - Uma Breve Introdução
 

Semelhante a Web services, aplicações, acesso a aplicações, XML, API

Web Services - Grupo F
Web Services - Grupo FWeb Services - Grupo F
Web Services - Grupo Fmdmansur
 
Web Services Xml
Web Services XmlWeb Services Xml
Web Services XmlUFMG
 
Webservices e Xml
Webservices e XmlWebservices e Xml
Webservices e Xmlsys10
 
Sistemas Distribuídos - Big Web Services
Sistemas Distribuídos - Big Web ServicesSistemas Distribuídos - Big Web Services
Sistemas Distribuídos - Big Web ServicesKeyo Galvao
 
SOA - Padrões Associados
SOA - Padrões AssociadosSOA - Padrões Associados
SOA - Padrões Associadosalinebicudo
 
Http (hyper text transfer protocol)
Http (hyper text transfer protocol)Http (hyper text transfer protocol)
Http (hyper text transfer protocol)Liliana Costa
 
Consumindo dados via web service no android
Consumindo dados via web service no androidConsumindo dados via web service no android
Consumindo dados via web service no androidAlexandre Antunes
 
Psdc - 2014/01
Psdc - 2014/01Psdc - 2014/01
Psdc - 2014/01Isa Prati
 
Capítulo 3 funcionalidades e protocolos da camada de aplicação
Capítulo 3   funcionalidades e protocolos da camada de aplicaçãoCapítulo 3   funcionalidades e protocolos da camada de aplicação
Capítulo 3 funcionalidades e protocolos da camada de aplicaçãoSimba Samuel
 
Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSPledsifes
 
Sistemas Distribuídos - Aula 07 - Servicos Web
Sistemas Distribuídos - Aula 07 - Servicos WebSistemas Distribuídos - Aula 07 - Servicos Web
Sistemas Distribuídos - Aula 07 - Servicos WebArthur Emanuel
 
Prog web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webProg web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webRegis Magalhães
 

Semelhante a Web services, aplicações, acesso a aplicações, XML, API (20)

Web service
Web serviceWeb service
Web service
 
Web Services - Grupo F
Web Services - Grupo FWeb Services - Grupo F
Web Services - Grupo F
 
Web Services Xml
Web Services XmlWeb Services Xml
Web Services Xml
 
Webservices e Xml
Webservices e XmlWebservices e Xml
Webservices e Xml
 
WebServices intro
WebServices introWebServices intro
WebServices intro
 
Trabalho Final PSDC - Simião
Trabalho Final PSDC - SimiãoTrabalho Final PSDC - Simião
Trabalho Final PSDC - Simião
 
Sistemas Distribuídos - Big Web Services
Sistemas Distribuídos - Big Web ServicesSistemas Distribuídos - Big Web Services
Sistemas Distribuídos - Big Web Services
 
SOA - Padrões Associados
SOA - Padrões AssociadosSOA - Padrões Associados
SOA - Padrões Associados
 
Http (hyper text transfer protocol)
Http (hyper text transfer protocol)Http (hyper text transfer protocol)
Http (hyper text transfer protocol)
 
Web Services
Web ServicesWeb Services
Web Services
 
Consumindo dados via web service no android
Consumindo dados via web service no androidConsumindo dados via web service no android
Consumindo dados via web service no android
 
Psdc - 2014/01
Psdc - 2014/01Psdc - 2014/01
Psdc - 2014/01
 
Capítulo 3 funcionalidades e protocolos da camada de aplicação
Capítulo 3   funcionalidades e protocolos da camada de aplicaçãoCapítulo 3   funcionalidades e protocolos da camada de aplicação
Capítulo 3 funcionalidades e protocolos da camada de aplicação
 
Web services
Web  servicesWeb  services
Web services
 
Arquitetura
 Arquitetura Arquitetura
Arquitetura
 
Ferramentas Web 2.0
Ferramentas Web 2.0Ferramentas Web 2.0
Ferramentas Web 2.0
 
Ferramentas Web 2.0
Ferramentas Web 2.0Ferramentas Web 2.0
Ferramentas Web 2.0
 
Introdução à Servlets e JSP
Introdução à Servlets e JSPIntrodução à Servlets e JSP
Introdução à Servlets e JSP
 
Sistemas Distribuídos - Aula 07 - Servicos Web
Sistemas Distribuídos - Aula 07 - Servicos WebSistemas Distribuídos - Aula 07 - Servicos Web
Sistemas Distribuídos - Aula 07 - Servicos Web
 
Prog web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_webProg web 00-modelo-cliente_servidor_web
Prog web 00-modelo-cliente_servidor_web
 

Web services, aplicações, acesso a aplicações, XML, API

  • 2. Web Services A Web service is a software system designed to support interoperable machine-to-machine interaction over a network. It has an interface described in a machine-processable format (specifically WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards. Fonte:http://www.w3.org/TR/2004/NOTE-ws-arch-20040211 2
  • 3. Web Services Um cenário de utilização 3
  • 4. Web Services Um Web Service é um bloco de software que pode ser acedido pela Internet e usado remotamente por outras aplicações 4 Infra-estrutura para a comunicação entre aplicações
  • 5. Web Services Antecedentes DCOM – Distributed Component Object Model CORBA -Common Object Request Broker Architecture Java RMI – Remote Method Invocation Problemas de interoperabilbidade Orientados à ligação Dependentes da plataforma 5
  • 6. Web Services Características de um Web Service Expõe funcionalidades de programação na Web - serviço São acedidos usando protocolos standard - HTTP Comunicam por meio de mensagens Usam XML para codificar as mensagens Estruturam as mensagens usando o protocolo SOAP São auto-descritivos permitindo a um cliente facilmente comunicar com o serviço - WSDL São serviços que podem ser registados e facilmente descobertos – UDDI 6 Independentes de plataformas, linguagens de programação e sistemas operativos
  • 7. Arquitectura de um Web Service Service-Oriented Architecture + Web = Web Services Fornecedor do serviço - Implementa o serviço, define as funcionalidades a desenvolver e disponibiliza o serviço na Internet. Cliente do serviço - Qualquer aplicação que usa o serviço. Faz chamada remota ao fornecedor do serviço criando uma conexão e enviando um pedido Registo do serviço - é um directório de serviços logicamente centralizado. Fornece um lugar para registar os serviços e definir mecanismo simples de publicação/descoberta desses serviços. 7
  • 8. Web Services Arquitectura baseada em SOAP,WSDL e UDDI Fonte:Introduction to Web Services by Philippe Le Hégaret– w3c.org 8
  • 9. Camadas de Protocolos Serviço de transporte - é responsável pelo transporte das mensagens entre aplicações. HTTP , SMTP , FTP  Mensagens XML - responsável pela codificação das mensagens num formato XML, de modo a serem facilmente interpretadas pelas aplicações. XML-RPC e SOAP   Descrição do serviço - é responsável pela descrição da interface publica do serviço, implementada através do protocolo WSDL   Descoberta do Serviço - é responsável pela centralização dos serviços, simplificando a sua publicação/descoberta - UDDI 9
  • 12. SOAP Simple Object Access Protocol 12
  • 13. SOAP SOAP Version 1.2 (SOAP) is a lightweight protocol intended for exchanging structured information in a decentralized, distributed environment. It uses XML technologies to define an extensible messaging framework providing a message construct that can be exchanged over a variety of underlying protocols. The framework has been designed to be independent of any particular programming model and other implementation specific semantics. [SOAP Version 1.2 Part 1: Messaging Framework ] http://www.w3.org/TR/2003/REC-soap12-part1-20030624/ 13
  • 14. SOAP SOAP é um protocolo baseado em XML para troca de mensagens entre aplicações Define: A estrutura das mensagens Um modelo de processamento que descreve como as mensagens devem ser processadas pelo serviço. 14
  • 15. SOAP Template de uma mensagem SOAP: <soap:Envelopexmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <!-- optional --> <!-- header blocks go here... --> </soap:Header> <soap:Body> <!-- payload or Fault element goes here... --> </soap:Body> </soap:Envelope>  15
  • 16. SOAP <soap:Envelope> Elemento raiz de uma mensagem SOAP. Contém um Header opcional e um Body obrigatório <soap:Header> usado para codificar informação adicional da mensagem – header blocks <soap:Body> contém o conteúdo principal da mensagem a enviar e deve ser um documento XML válido. <soap:Fault> trata os erros de um modo centralizado, permitindo ao servidor comunicar ao cliente os erros encontrados no processamento da mensagem 16
  • 17. Mensagem SOAP .Net [WebMethod ] public int Add(int x, int y) {return x+y;} Codificação da chamada Add(3,5) <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <Add xmlns="http://w2kslosaw/DemoService/"> <x>3</x> <y>5</y> </Add> </soap:Body> </soap:Envelope> 17
  • 18. Mensagem SOAP .Net Codificação da Resposta <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <AddResponse xmlns="http://w2kslosaw/helloworld/"> <AddResult> 8 </AddResult> </AddResponse> </soap:Body> </soap:Envelope> 18
  • 19. SOAP – Protocol Binding Para além da codificação da mensagem em SOAP é necessário definir como a mensagem será enviada. Uma da grandes vantagens do SOAP é que não está ligado a nenhum protocolo particular. As mensagens SOAP podem ser enviadas por qualquer protocolo que possa transmitir XML A especificação SOAP define apenas um “protocol binding” – enviar mensagens SOAP via HTTP POST 19
  • 20. SOAP – Protocol Binding Exemplo de um pedido HTTP com uma mensagem SOAP: POST /losaw/dir1/demoservice.asmx HTTP/1.1 Host: w2ks Content-Type: text/xml; charset=utf-8 Content-Length: 312 SOAPAction: "http://w2kslosaw/helloworld/Add"<?xml version="1.0" encoding="utf-8"?> <soap:Envelope … xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <Add xmlns="http://w2kslosaw/helloworld/"> <x>3</x> <y>5</y> </Add> </soap:Body> </soap:Envelope> 20 Request
  • 21. SOAP – Protocol Binding Exemplo de resposta HTTP com mensagem SOAP:   HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: 100 <?xml version="1.0" encoding="utf-8"?> <soap:Envelope … xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <AddResponse xmlns="http://w2kslosaw/helloworld/"> <AddResult>8</AddResult> </AddResponse> </soap:Body> </soap:Envelope> 21 Response
  • 23. WSDL Web Service Description Language 23
  • 24. WSDL WSDL is an XML format for describing network services as a set of endpoints operating on messages containing either document-oriented or procedure-oriented information. The operations and messages are described abstractly, and then bound to a concrete network protocol and message format to define an endpoint. Related concrete endpoints are combined into abstract endpoints (services). WSDL is extensible to allow description of endpoints and their messages regardless of what message formats or network protocols are used to communicate. [Web Services Description Language (WSDL) 1.1 ] http://www.w3.org/TR/2001/NOTE-wsdl-20010315 24
  • 25.
  • 26. A informação dos tipos de dados para as mensagens de chamada/resposta dos serviços
  • 27. A informação sobre o protocolo de transporte a usar
  • 28. A informação sobre a localização do serviço25 WSDL representa um contrato entre o cliente do serviço e o fornecedor do serviço
  • 29. WSDL - Web Service Description Language Estrutura de um documento WSDL <definitions> é o elemento raíz do documento WSDL <types> especifica o tipo de dados usados no serviço que serão referenciados pelas mensagens <message> especifica as mensagens do serviço <portType> especifica as <operation>( interface) do serviço <binding> especifica o formato das mensagens e um protocolo de transporte <service> especifica a localização para invocar o serviço<port> 26
  • 30. WSDL - Web Service Description Language Definitions É o elemento raíz de um documento WSDL. O atributo targetNamespace permite definir um namespace e o atributo xmlns permite referenciar outos namespaces <definitionsxmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:s0="http://w2kslosaw/addservice/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" targetNamespace="http://w2kslosaw/addservice/" xmlns="http://schemas.xmlsoap.org/wsdl/"> 27
  • 31. WSDL - Web Service Description Language <types>  Contém declarações de tipos de dados referenciadas pelas mensagens É um Schema embebido no documento. 28 [WebMethod ] public int Add(int x, int y) {return x+y;} <types> <s:schema elementFormDefault="qualified" targetNamespace="http://w2kslosaw/addservice/"> <s:element name="Add"> <s:complexType> <s:sequence>   <s:element minOccurs="1" maxOccurs="1" name="x" type="s:int" />  <s:element minOccurs="1" maxOccurs="1" name="y" type="s:int" />   </s:sequence>  </s:complexType>  </s:element> Add
  • 32. WSDL - Web Service Description Language <message> Uma descrição abstracta das mensagens entre o cliente e o servidor. Cada mensagem contém uma ou mais <part> que descrevem um item a ser enviado ou recebido Um element part tem um atributo element ou type <message name="AddSoapIn">  <partname="parameters" element="s0:Add" /> </message> <message name="AddSoapOut"> <partname="parameters" element="s0:AddResponse" /> </message> 29 Referência a types
  • 33. WSDL - Web Service Description Language <message name="AddSoapIn">  <partname="parameters" element="s0:Add" /> </message> 30 <types>… <s:element name="Add"> … <s:element minOccurs="1" maxOccurs="1" name="x" type="s:int" /> <s:element minOccurs="1" maxOccurs="1" name="y" type="s:int" />   </s:sequence>  </s:complexType>  </s:element> <soap:Body> <Add xmlns="http://w2kslosaw/DemoService/"> <x>3</x> <y>5</y> </Add> </soap:Body> Request
  • 34. WSDL - Web Service Description Language <portType> (Interfaces) Define um grupo de <operation>relacionadas, isto é uma interface para o serviço. Cada operação é constituída por combinações de elementos input e output (e fault opcional) dependendo do padrão da mensagem (Message Exchange Pattern) <portType name="DemoServiceSoap"> <operation name="Add">  <inputmessage="s0:AddSoapIn" /> <outputmessage="s0:AddSoapOut" />  </operation> </portType> 31 <message name="AddSoapIn">  <partname="parameters" element="s0:Add" /> </message>
  • 35. WSDL - Web Service Description Language Message Exchange pattern 32
  • 36. WSDL - Web Service Description Language <binding>  Descreve os detalhes concretos da utilização de um determinado portType com um dado protocolo. Define o formato das mensagens e os detalhes do protocolo. Especifica como criar um envelope SOAP para uma operation <binding name="DemoServiceSoap“ type="s0:DemoServiceSoap">  <soap:bindingstyle="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="Add">  <soap:operationstyle="document" soapAction="http://w2kslosaw/addservice/Add"/> <input> <soap:bodyuse="literal" /></input> <output> <soap:bodyuse="literal" /></output>  </operation>  </binding> 33
  • 37. WSDL - Web Service Description Language <soap:binding> binding através de SOAP transport define o protocolo de transporte transport=http://schemas.xmlsoap.org/soap/http style – tipo de documento style="document" 34
  • 38. WSDL - Web Service Description Language <soap:binding> <soap:operation style="document" soapAction="http://w2kslosaw/addservice/Add" /> <input> <soap:body use="literal" /> </input> <output> <soap:body use="literal" /> </output>  </operation>  <soap:operation> define a forma como é feito o binding de determinada operação <soapAction>define cabeçalho http SOAPACTION <soap:body> - define a codificação da mensagem no body do SOAP use="literal" 35
  • 39. WSDL - Web Service Description Language <service> O elemento service define um ou mais elementos port ( ponto de acesso). Um elemento <port> é usado para especificar um endereço do Web Service com referência a um determinado binding. <service name="DemoService"> <port name="DemoServiceSoap" binding="s0:DemoServiceSoap"> <soap:address location="http://w2ks/losaw/dir1/demoservice.asmx" /> </port> </service> 36
  • 40.
  • 41. UDDI Universal Description, DiscoveryandIntegration 38
  • 42. UDDI Um registo de serviços UDDI Business registry Um local para descobrir serviços e informação detalhado sobre o serviço , p.e WSDL Classificar, catalogar e gerir Web services Selecção dinâmica da implementação de um serviço em Runtime Criado inicialmente por Microsoft, IBM e Ariba 39
  • 43. UDDI Repositórios UDDi de teste http://test.uddi.microsoft.com/ https://uddi.ibm.com/testregistry/registry.html http://udditest.sap.com Replicação da informação nos repositórios Registo da informação White pages – identificação da empresa Yellow pages – classificação do serviço Green pages – informação técnica sobre o serviço 40
  • 44. UDDI UDDI Programmers APIs Inquiry API Set Publication API Set Security Policy API Set Subscription API Set Value Set API Set Implementações Microsoft UDDI SDK IBM UDDI4J Java API for XML Registry – JAXR WASP UDDI 41
  • 45. Web Services Web Services em .Net Criação de um serviço Web Criação de um cliente do serviço 42
  • 46. WSDL - Web Service Description Language Exemplos 1 – Web service .Net básico Somarservice.asmx 2 – Criar Cliente do serviço 3 - Cliente para um serviço maquina w2ks http://w2ks/losaw/dir1/demoservice.asmx 4 – Tempo nos aeroportos 43
  • 47. Web Services .Net Ficheiro .asmx <%@ WebService Language="c#" Codebehind="demoservice.asmx.cs" Class="demoservice.DemoService" %> Ficheiro .asmx.cs [WebService(Namespace=http://w2ks.dei.isep/addservice)] public class DemoService : System.Web.Services.WebService { public DemoService()} ... [WebMethod] public int Add(int x, int y) { return x+y; } 44
  • 48. Web Services .Net Framework .Net para Web Service 45 Fonte: Anatomy of an XML Web Service Lifetime - .NET Framework Developer's Guide
  • 49. Web Services .Net O cliente cria uma nova instância da classe proxy do serviço web w2ks.DemoService ws=new w2ks.DemoService(); A classe proxy é criada através da descrição do serviço no ficheiro .wsdl (Reference.cs) public class DemoService : System.Web.Services.Protocols.SoapHttpClientProtocol { public DemoService() { this.Url = "http://w2ks/losaw/dir1/demoservice.asmx"; } …. public int Add(int x, int y) { object[] results = this.Invoke("Add", new object[] {x,y}); return ((int)(results[0])); } 46
  • 50. Web Services .Net O cliente chama um método do serviço resultado=ws.Add(x,y); A plataforma no cliente serialize os argumentos do método numa mensagem SOAP e envia a mensagem através da rede usando o protocolo HTTP para o computador onde reside o serviço Web O serviço Web recebe a mensagem SOAP e deserialize o XML recebido. Cria uma instância da classe que implementa o serviço e invoca o método do serviço. 47
  • 51. Web Services .Net 48 POST /losaw/dir1/demoservice.asmx HTTP/1.1 Host: w2ks Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: http://w2kslosaw/addservice/Add <?xml version="1.0" encoding="utf-8"?> <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <Add xmlns="http://w2kslosaw/addservice/"> <x>int</x> <y>int</y> </Add> </soap:Body> </soap:Envelope>
  • 52. Web Services .Net O serviço executa o código e serialize o resultado enviando uma mensagem de resposta para o cliente O cliente deserialize a mensagem ... 49
  • 53. Web Services .Net 50 HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Length: length <?xml version="1.0" encoding="utf-8"?> <soap:Envelopexmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Body> <AddResponsexmlns="http://w2kslosaw/addservice/"> <AddResult>int</AddResult> </AddResponse> </soap:Body> </soap:Envelope>