terça-feira, 8 de dezembro de 2009

Web Services, computação descentralizada para sistemas distribuídos, por Ramon Rosa da Silva

Resumo. O crescimento dos serviços disponibilizados na internet tornou necessário uma padronização de protocolos para troca de informações.

Para a interoperabilidade dos serviços desenvolvidos em diferentes arquiteturas, sistemas operacionais e linguagens, mais do que nunca é ressaltada a importância de padrões como XML (eXtensible Markup Language) e HTTP (Hypertext Transfer Protocol).

Com ajuda destes padrões Web Services podem resolver problemas de comunicação entre diferentes aplicações, e disponibilizar serviços que podem ser utilizados por vários clientes sem necessidade de reconfiguração do servidor, isto é reutilização de serviços.

1.Introdução

Na década de 60 a computação era baseada em grandes mainframes e terminais burros, isto é computação centralizada, existia pouca ou nenhuma preocupação com padronização de protocolos de comunicação, cada fabricante propunha sua própria especificação de seus produtos que não eram compatíveis com os produtos concorrentes. Muito rápido isso se tornou um problema para os clientes, que passava a ser também um problema aos fabricantes, foi neste contexto que sugiu a ISO, que propôs um modelo de arquitetura dividido em 7 camadas (famosa até hoje, arquitetura OSI).

Conforme foi sendo popularizado os computadores desktop e com a abertura da internet (por HTTP), a computação centralizada foi perdendo espaço, um novo modelo de computadores pessoais que operam sem necessidade de mainframes, que se comunicam pelo protocolo TCP/IP baseado no modelo OSI, assim iniciou a computação descentralizada.

A descentralização possibilitou o surgimento de serviços disponibilizados na web, os Web Services, e novos padrões foram criados para o desenvolvimento de aplicações distribuídas, como CORBA (Commom Object Request Broker Architeture), DCOM da Microsoft entre outros. Em meados da década de 90 existiam vários padrões que criavam um forte acoplamento entre os sistemas, e se tornava complicado diferentes sistemas interagirem entre si.

Mais uma vez foi necessário uma reformulação do modo de diferentes serviços se comunicarem, para este fim foi criada a XML, linguagem/padrão de troca de informações.

Atualmente as empresas se esforçam para aperfeiçoamento de padrões como XML e HTTP, com linguagens como Java e PHP, que permitem a criação de sistemas independentes de arquiteturas e plataformas. Essas tecnologias são utilizadas tanto com os novos padrões quanto antigos em sistemas legados.

2.Padrão Web Service

O padrão do Web Service é padronizado pela W3C, com: “um sistema de software projectado para suportar a interoperabilidade entre máquinas sobre rede”.

Essas interoperabilidade é garantida pelo seu padrão de comunicação baseado em XML encapsulado em SOAP.

3.XML

Atualmente de facto XML é a linguagem padrão para comunicação entre serviços com serviços, e serviços com clientes.


Fig. 1: Comunicação entre os serviços.

A linguagem XML é muito similar a HTML (Hyper Text Model Linguage), é escrita com tags com uma identificação e dados dentro das tags, podem existir tags dentro de tags. Por exemplo:

Fig. 2: Exemplo XML

O XML trafega pela rede dentro de um pacote HTTP ou HTTPS para conexões seguras, que é desempacotado pelo servidor.

4.SOAP

Simple Object Access Protocol, trás a mesma ideia do RPC (Remote Procedure Call) para XML, atualmente é um especificação da W3C.

É um protocolo baseado em XML para comunicação entre aplicações HTTP.

RCP não é recomendado para internet pois teria problemas com segurança e com firewalls ou proxyes.

Mensagens SOAP, são dividas em 3 partes:

SOAP envelope: Define o conteúdo da mensagem.

SOAP header: Contém a autenticação, transação e contabilização, é opcional.

SOAP body: informações dos métodos e parâmetros que serão utilizados.



Fig. 3: Exemplo mensagem SOAP

5.Web Services

Web Services são aplicações publicadas na web, desde simples processos como cálculos até complexas transações de empresariais, depois de publicados permitem obtenção e submissão de dados.

São acessados de forma independente de plataforma ou linguagem de programação, utilizando padrões como HTTP, XML e SOAP. Seus serviços são conhecidos através de uma mensagem padrão XML.

Um Web Service é feito para suportar 3 categorias: provedor do serviço, provedor de registro e o cliente do serviço. Com operações de procura (find), publicação (publish) e acoplamento (bind).

O cliente procura o serviço, e obtém a descrição do serviço e do provedor de registro, com essas informações ele pode acessar e interagir (bind) com o provedor do serviço.



Fig. 3: Ciclo de vida de um Web Service


5.1.WSDL

Web Services Description Language, linguagem XML, desenvolvida para descrever o Web Services, o que o serviços faz, como utiliza-lo e onde ele está localizado.


Contém o elemento "definition" dividido em:
"message" e "portType" : define quais operações o serviço fornece.
"type" : este elemento opcional serve para definir tipos de dados estruturados .
"binding" : designa como as operações são invocadas.
"service" : explicita onde o serviço está localizado.


5.2.UDDI

Universal Description Discovery and Integration, é um conjunto de registros baseados na web que provem informações a respeito de uma entidade ou organização, podem ser utilizadas por qualquer um que queira tornar disponível ou queira obter informações a respeito de negócios ou entidades.

São encontrados 4 tipos de UDDI:

BusinessService: pode conter informações sobre uma ou mais organizações.

BusinessEntity: informações técnicas e de descrições de serviços.

BindingTemplate : contem referencias a um ou mais tModels

tModel: definições de especificações técnicas de serviços.

Uma UDDI é similar a uma lista telefônica. Páginas brancas (white pages), contém informações como nome da organização, contato e identificadores. As páginas amarelas (yellow pages) um índice de serviços e produtos e as páginas verdes (green pages) contém informações a respeito de transações, descrições de serviço e invocação de aplicações.

6.Segurança

Atualmente a segurança é uma das questões mais criticas em um Web Service, não existe falta de tecnologia para segurança, mas um falta de consenso para escolha desta tecnologia.

Existe uma grande preocupação de separar bancos de dados importantes das empresas com os Web Services para maior segurança.

Principais mecanismos de segurança são: SSL, XML signature, XML encryption, WS-security e SAML.

6.1.SSL

Secure Socket Layer, desenvolvido para pequenos dispositivos, oferece autenticação, integridade e privacidade. Trabalha em cima de HTTP, com a desvantagem de ser mais lento que HTTP puro.

6.2.XML signature

Iniciado pela IETF (Internet Engineering Task Force) e W3C, como uma especificação de XML com assinatura digital. Com vantagem de ser independente de linguagem de desenvolvimento, ao contrario de outras assinaturas digitais.

6.3.XML encryption

Também iniciado pela IETF e W3C, define um processo de encriptação e decriptamento de dados no formato XML, onde o XML pode ser acessado por qualquer um, mas apenas o proprietário da chave pode entender os dados.

6.4.WS-security

Web Service seguro, iniciativa da Microsoft, IBM e Verisign, para XML signature e XML encryption, fornecer segurança para SOAP.

6.5.SAML

Security Assertion Markup Language, ainda pouco utilizada, é desenvolvida para prover autenticação e autorização em diferentes Web Services com níveis de direitos de acesso, permitindo que trabalhem como se fosse apenas um apicação.


7.Implementação

Um Web Service pode ser implementado de diferentes linguagens de programação. Linguagens como PHP, ASP, Java, possuem servidores que provem bibliotecas para facilitar a implementação.

No caso do PHP existe o Apache, um dos servidores mais populares para internet, para ASP a Microsoft desenvolve seu próprio servidor e para Java a Sun Microsystens definiu uma arquitetura que é implementada por diferentes empresas como IBM com WebSphere, Oracle, Apache.org com Tomcat entre outras.

8.Conclusões

Os Web Services tem se tornados cada vez mais importantes para as empresas, já substituíram o paradigma de computação centralizada, estão atualmente substituindo servidores que usam protocolos fortemente acoplados como CORBA.

A tendencia é que cada vez mais as empresas passem a disponibilizar seus serviços por Web Services.

Na medida que grandes empresas desenvolvedoras de software estão se dedicando no aperfeiçoamento de arquiteturas como J2EE, plataforma .Net, e também comunidade por trás do PHP, tem ficado cada vez mais simples para as empresas terem seus próprio Web Services.


9.Referencias

W3C

w3schools

www.ws-i.org

2 comentários:

Ducheno disse...

Bastante util, o poste. obrigadão me ajudou e tanto...

Ducheno disse...

muito obrigado pelo poste me ajudou...