WebService:Conceitos, Funcionamento e Protocolos

O que é WebService?

WebService é uma tecnologia de chamada remota que permite a comunicação entre sistemas heterogêneos, independentemente da linguagem de programação ou sistema operacional utilizado. Em termos práticos, um aplicativo no computador A pode invocar métodos de um objeto hospedado no computador B via web. Por exemplo, um sistema de ponto de venda (POS) em uma loja pode chamar funções de transferência bancária executadas em servidores do banco, ou plataformas como serviços de previsão do tempo podem expor funcionalidades para integração com terceiros.

Existem duas perspectivas principais para entender o WebService: superficialmante, é uma aplicação que expõe uma API acessível via web, permitindo que clientes a chamem programaticamente. Em um nível mais profundo, é uma plataforma baseada em padrões abertos para construir aplicações distribuídas interoperáveis. Isso significa que desenvolvedores podem usar qualquer linguagem ou plataforma, desde que sigam os padrões do WebService para consulta e acesso.

Características do WebService

  • Autocontido: encapsula todas as dependências necessárias.
  • Autodescritivo: fornece metadados sobre sua interface.
  • Interoperável entre plataformas e linguagens.
  • Fundamentado em padrões abertos.
  • Componível: pode ser combinado com outros serviços.
  • Acoplamento flexível entre cliente e servidor.
  • Acesso programático via rede.
  • Publicação, descoberta e uso por meio de protocolos web.

Métodos de Publicação

Diversas abordagens existem para publicar WebServices, incluindo: JWS (Java Web Services), Axis2, CXF e ksoap2-android. Cada uma oferece ferramentas específicas para implementação e deploy.

Terminologias-Chave

XML (eXtensible Markup Language)

O WebService utiliza o protocolo HTTP para transporte de dados, com XML como formato de encapsulamento. O XML descreve qual método do serviço remoto chamar, os parâmetros de entrada e os resultados de saída. Sua principal vantagem é a independência de plataforma e fornecedor. Para definir tipos de dados padronizados, o XML Schema (XSD) é empregado, permitindo a extensão de tipos conforme necessário. Ferramentas de desenvolvimento normalmente convertem automaticamente tipos de dados locais para XSD, mas ajustes podem ser feitos.

SOAP (Simple Object Access Protocol)

O SOAP é um protocolo que define como estruturar mensagens XML para comunicação via HTTP. Ele inclui cabeçalhos específicos para indicar fromatos e fornece um método RPC padronizado para invocação de serviços. Uma mensagem SOAP típica segue esta estrutura:

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
    soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <soap:Header>
        <!-- Elementos de cabeçalho opcionais -->
    </soap:Header>
    <soap:Body>
        <!-- Conteúdo da mensagem -->
        <soap:Fault>
            <!-- Informações de erro, se aplicável -->
        </soap:Fault>
    </soap:Body>
</soap:Envelope>

Regras sintáticas incluem codificação obrigatória em XML, uso do namespace Envelope, ausência de DTDs e instruções de processamento. O SOAP é extensível, simples e independente de linguagem ou fornecedor.

WSDL (Web Services Description Language)

O WSDL é uma linguagem baseada em XML que descreve as funções, parâmetros e valores de retorno de um WebService. Ele é legível tanto por humanos quanto por máquinas. Ferramentas podem gerar WSDL a partir de código ou gerar classes proxy a partir de arquivos WSDL. O documento WSDL contém elementos como:

  • types: define tipos de dados usando XSD.
  • message: descreve mensagens de comunicação.
  • portType: agrupa operações suportadas.
  • binding: associa operações a protocolos e formatos.
  • service: expõe endpoints de rede.

Exemplo de estrutura WSDL simplificada:

<definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
             xmlns:tns="http://example.com/service"
             xmlns:xsd="http://www.w3.org/2001/XMLSchema"
             targetNamespace="http://example.com/service">
    <types>
        <xsd:schema targetNamespace="http://example.com/service">
            <xsd:element name="RequestData" type="xsd:string"/>
            <xsd:element name="ResponseData" type="xsd:string"/>
        </xsd:schema>
    </types>
    <message name="InputMsg">
        <part name="requestData" element="tns:RequestData"/>
    </message>
    <message name="OutputMsg">
        <part name="responseData" element="tns:ResponseData"/>
    </message>
    <portType name="ServiceInterface">
        <operation name="processData">
            <input message="tns:InputMsg"/>
            <output message="tns:OutputMsg"/>
        </operation>
    </portType>
    <binding name="ServiceBinding" type="tns:ServiceInterface">
        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
        <operation name="processData">
            <soap:operation soapAction="http://example.com/process"/>
            <input><soap:body use="literal"/></input>
            <output><soap:body use="literal"/></output>
        </operation>
    </binding>
    <service name="WebServiceExample">
        <port name="ServicePort" binding="tns:ServiceBinding">
            <soap:address location="http://localhost:8080/service"/>
        </port>
    </service>
</definitions>

Clientes precisam do endereço WSDL para invocar serviços, que pode ser obtido via UDDI ou fornecido diretamente.

UDDI (Universal Description, Discovery and Integration)

O UDDI é um diretório para publicar e descobrir WebServices, permitindo que empresas registrem seus serviços para facilitar a integração B2B.

Funcionamento do WebService

A arquitetura do WebService envolve três papéis: provedor (que hospeda o serviço), solicitante (que consome o serviço) e intermediário (como o UDDI). Os principais fluxos são:

  1. Publicação: o provedor registra o serviço no UDDI.
  2. Descoberta: o solicitante busca serviços no UDDI.
  3. Vinculação: o solicitante invoca o serviço usando WSDL e SOAP.

Implementação típica envolve: projetar e publicar o serviço, registrar no UDDI, e clientes gerarem mensagens SOAP baseadas em WSDL para chamadas remotas.

Anotações em Java para WebService

Em Java, anotações facilitam a criação de WebServices. Exemplos incluem:

  • @WebService: marca uma classe como WebService, com atributos como name (nome do portType), targetNamespace (namespace XML) e serviceName (nome do serviço).
  • @WebMethod: indica métodos expostos, com atributos como operationName e exclude para ocultar métodos.
  • @WebParam: customiza parâmetros, definindo name, mode (IN, OUT, INOUT) e header.
  • @WebResult: mapeia valores de retorno, com atributos como name e targetNamespace.

Essas anotações simplificam a geração de WSDL e a implementação do serviço.

Vantagens e Desvantagens

Vantagens

  • Comunicação através de firewalls: útil para aplicações distribuídas globalmente.
  • Integração de sistemas heterogêneos: permite unir aplicativos feitos em diferentes linguagens e plataformas.
  • Integração B2B: facilita o comércio eletrônico entre empresas, reduzindo custos.
  • Reutilização de código e dados: evita a necessidade de instalar componentes localmente.

Desvantagens

  • Aplicações monolíticas: para comunicação local, APIs nativas como COM ou .NET Remoting podem ser mais eficientes.
  • Ambientes de rede local: em redes internas, protocolos como DCOM ou TCP-based RPC oferecem melhor desempenho do que SOAP/HTTP.

Tags: WebService SOAP WSDL UDDI XML

Publicado em 6-7 21:10 por Thomas