Web services, aplicações, acesso a aplicações, XML, API
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 2,544 views

Um Web Service é um bloco de software que pode ser acedido pela Internet e usado remotamente por outras aplicações

Um Web Service é um bloco de software que pode ser acedido pela Internet e usado remotamente por outras aplicações

Statistics

Views

Total Views
2,544
Views on SlideShare
2,411
Embed Views
133

Actions

Likes
0
Downloads
38
Comments
0

3 Embeds 133

http://www.matospereira.com 71
http://matospereira.com 61
http://www.gorettiguedes.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

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

  • 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:
    • A interface pública descrevendo todas as funções disponibilizadas pelo serviço
    • 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ço
    25
    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
  • 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>
  • 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
  • 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>