Artigo do tipo Tutorial
Recursos especiais neste artigo:
Conteúdo sobre boas práticas.
WCF x REST: Uma alternativa para serviços
Ao se pensar na implementação de Web Services, quase que invariavelmente se imagina a construção dessas estruturas a partir do uso do protocolo SOAP. Por ser aberto e baseado em XML, este formato contribuiu de maneira significativa para a popularização de Web Services como principal instrumento de integração em tempo real de sistemas. No entanto, alternativas ao padrão SOAP existem, sendo uma das opções com maior aceitação, o modelo conhecido como REST, o qual conta com uma estrutura relativamente mais simples e de fácil utilização.


Em que situação o tema é útil
A implementação de Web Services seguindo a arquitetura REST pode, a partir de uma série de princípios e recomendações, simplificar consideravelmente a forma como serviços (e as funcionalidades por eles expostas) são acessados por outras aplicações. Grandes portais como Facebook, Twitter, Yahoo e Google enxergaram o potencial e os benefícios oferecidos por esta alternativa, sendo que os mesmos têm enfatizado a adoção deste modelo em muitas de suas soluções.

O surgimento de Web Services mudou profundamente a forma como as aplicações compartilham informações. Esta tecnologia viabilizou a integração em tempo real entre sistemas completamente distintos, simplificando assim, a transferência de dados entre aplicações de uma mesma empresa ou, mesmo, entre soluções de diferentes companhias.

Atualmente, grandes organizações como instituições financeiras e empresas de comércio eletrônico têm empregado Web Services em larga escala, com isto acontecendo em projetos críticos e de grande importância para as operações de tais companhias. Por serem geralmente criados em torno de formatos baseados em XML (como o protocolo SOAP – BOX 1), Web Services podem integrar sistemas concebidos nas mais diferentes plataformas, sendo este um dos principais fatores que contribuíram para sua ampla aceitação.

Do ponto de vista prático, Web Services são serviços (componentes) de software que disponibilizam funcionalidades específicas, com estas últimas podendo ser consumidas por aplicações com as mais variadas finalidades. A grande importância adquirida por essas estruturas (Web Services) motivou o surgimento de diversos padrões de modelagem e técnicas para a construção de serviços, com tais conceitos estando agrupados em um corpo de conhecimentos chamado de Arquitetura Orientada a Serviços (BOX 2).

Além do protocolo SOAP, o uso do padrão conhecido como REST corresponde à outra possível forma para implementação de Web Services. REST (sigla em inglês para “Representational State Transfer”) é uma especificação em que recursos são representados por meio de um endereço único, utilizando para isto URLs. Dados consumidos por uma aplicação sob a forma de objetos constituem exemplos de recursos. Um endereço único é formado por informações de identificação do recurso no serviço responsável por prover o mesmo, além de uma indicação da operação a ser efetuada sobre tal elemento.

Sendo a solução da Microsoft voltada à implementação de Web Services e projetos em conformidade com as práticas de SOA, a tecnologia WCF (Windows Communication Foundation) oferece amplo suporte aos padrões SOAP e REST.

A meta deste artigo é descrever, em termos gerais, as características de Web Services baseados em REST. Além disso, será abordada a criação de serviços WCF seguindo princípios desta arquitetura, através da construção de uma aplicação de exemplo.

BOX 1. SOAP

SOAP (sigla em inglês para "Simple Object Access Protocol") é um protocolo XML empregado em trocas de mensagens entre Web Services e consumidores destes tipos de serviços. Trata-se de um dos padrões mais utilizados na implementação de Web Services, sendo suportado pelas principais plataformas de desenvolvimento da atualidade (.NET, Java, PHP, Delphi etc.)

BOX 2. SOA

SOA (sigla do inglês "Service Oriented Architecture" - ou Arquitetura Orientada a Serviços, em português) é um modelo de arquitetura de software empregado, basicamente, no desenvolvimento de soluções que permitam a integração entre diferentes sistemas. Seu objetivo principal consiste, em termos gerais, no atendimento de necessidades de negócios através de serviços agrupados em componentes (módulos) de software. Normalmente, a implementação deste paradigma acontece por meio da utilização de Web Services. Aplicações construídas sob esta arquitetura priorizam o reuso de software, além de buscarem a interoperabilidade entre diferentes plataformas computacionais.

O protocolo SOAP: uma visão geral dos Web Services baseados em XML

Antes de prosseguir com uma discussão mais aprofundada da arquitetura REST, é necessário analisar algumas características de Web Services que empregam o protocolo SOAP. O objetivo disto é tornar explícitas as diferenças entre estes dois modelos de implementação, de forma a enfatizar posteriormente os pontos que tornam mais simples a utilização de serviços baseados em REST.

Conforme mencionado anteriormente, o protocolo SOAP foi elaborado a partir do padrão XML, sendo este um dos fatores que possibilitaram a interoperabilidade (capacidade de se comunicar) entre aplicações concebidas nas mais diversas tecnologias (.NET, Java, mainframe).

A construção de Web Services baseados em SOAP pressupõe a existência de contratos que descrevem a estrutura destes componentes. É graças a esta característica que sistemas voltados às variadas plataformas conseguem, seguindo uma especificação de caráter genérico, acessar as funcionalidades disponibilizadas por serviços remotos.

Entre os itens que fazem parte do contrato de um Web Service, estão as operações (métodos) disponibilizadas pelo mesmo, além dos tipos (estruturas contendo dados) manipulados por estas últimas. Em termos práticos, o contrato de um serviço SOAP é gerado sob a forma de um documento XML padronizado, o qual toma por base as seguintes especificações:

· Web Services Description Language (WSDL): usado na descrição da interface (estrutura) de um serviço. Através deste padrão, aplicações consumidoras podem gerar proxies (BOX 3), a fim de utilizar as funcionalidades disponibilizadas via Web Service;

· XML Schema Definition Language (XSD): especificação que define a estrutura (schema) dos diversos tipos de objetos manipulados por um Web Service. Documentos no formato XSD estão normalmente referenciados em descrições WSDL de contratos de serviços;

· WS-Policy: permite a representação de características e requisitos a serem levados em consideração ao se utilizar os recursos fornecidos por um serviço.

BOX 3. Proxy

Um Proxy é uma classe baseada em um padrão de projeto de mesmo nome e que oferece através da forma como se encontra estruturada, um meio para encapsular uma série de instruções complexas acionadas durante chamadas a um serviço remoto. Neste caso, essas operações são executadas apenas quando for consumida uma funcionalidade do serviço considerado, de forma a simplificar e tornar mais eficiente o processo de comunicação remota com tal componente.

A arquitetura REST

As diversas diretrizes que compõem o modelo REST surgiram ainda no ano de 2000, como parte de um trabalho acadêmico do pesquisador Roy Fielding na Universidade da Califórnia (EUA). A construção de Web Services esteve, num primeiro momento, quase que exclusivamente ligada à utilização do protocolo SOAP. Contudo, a arquitetura REST vem crescendo nos últimos anos, motivada principalmente por uma maior simplicidade na implementação de novas soluções, sobretudo quando se compara este padrão a Web Services baseados em XML.

Serviços construídos seguindo a arquitetura REST são conhecidos como RESTful Web Services, com a modelagem dessas estruturas girando em torno da ideia de “recursos”. O conceito de recurso refere-se a elementos (conjuntos de dados) dos quais uma ou mais aplicações dependem, com estas últimas executando operações de consulta, criação, atualização e exclusão de tais itens a partir de serviços desenvolvidos especificamente para este fim.

A implementação de serviços em conformidade com o padrão REST deve ser orientada pelos seguintes princípios (descritos em maior profundidade nas próximas seções):

· O uso de métodos HTTP de forma explícita;

· A exposição de recursos por meio de URIs;

· A representação de recursos empregando formatos como XML e JSON;

· Independência de estado (serviços “stateless”).

Na Figura 1 é demonstrado, de maneira genérica, um exemplo de como seria a interação entre uma aplicação financeira e um serviço hipotético de consulta a cotações de moedas estrangeiras.

abrir imagem em nova janela

Figura 1. Exemplo de interação entre serviço REST e uma aplicação genérica

...
Quer ler esse conteúdo completo? Tenha acesso completo