Vous êtes sur la page 1sur 16

Web Services e XML

Um Novo Paradigma da Computao Distribuda



Aleksader Knabben Becker Daniela Barreiro Claro Joo Bosco Sobral
aleks@inf.ufsc.br danclaro@inf.ufsc.br bosco@inf.ufsc.br

Universidade Federal de Santa Catarina
Departamento de Informtica e Estatstica INE
Curso de Graduao em Cincias da Computao CCO
88040-900 Caixa Postal 476 Florianpolis Santa Catarina

Resumo

No ambiente heterogneo da Internet so encontrados equipamentos e sistemas de vrios
fabricantes diferentes em aplicaes diversas. Isto torna a integrao desses sistemas e
aplicaes, uma tarefa complicada e dispendiosa. Este trabalho aborda duas novas
tecnologias, a linguagem XML como um meio de compartilhar a informao de forma neutra
e Web Services, que representa um novo paradigma da programao distribuda e promove a
integrao de sistemas e aplicaes de uma maneira fracamente acoplada, dinmica e
programtica. Alm disso, so abordadas tecnologias relacionadas com Web Services, como
UDDI, WSDL e SOAP. Para exemplificar a integrao destas tecnologias foi implementada
uma aplicao relativa ao planejamento de uma viagem a um determinado lugar, que executa
operaes utilizando Web Services e XML.

Abstract

In the heterogeneus Internets environment are found equipaments and systems of several
diferents vendors in several applications. That makes the integration among systems and
applications a complex job.This paper will focus two new tecnologies, XML language as a
commom neutral way to share information and Web Services that represents a new distributed
programming paradigm and which promotes the integration among systems and applications
in a programatic, dynamic, and loosely coupled way. Besides, it approaches some Web
Services related tecnologies, such as SOAP, UDDI and WSDL. In order to show how is the
integration of this tecnologies was implemented an application related to planning a travel for
a specific place, that performs operations using Web Services and XML.

1. Introduo

No comeo dos anos 60, o modelo de computao vigente era um modelo centralizado, com
um grande computador central (mainframe) que possua um grande poder de processamento e
tinha vrios computadores de pouco ou nenhum poder de processamento (terminais burros)
conectados a ele. Nesta poca, no havia nenhuma preocupao com a padronizao de
protocolos e interfaces, e por isso cada fabricante tinha seus prprios produtos e solues que
na maioria das vezes no eram compatveis com os produtos de outros fabricantes.

Com o passar dos anos, a necessidade de padronizao foi ficando cada vez mais clara. A
diversidade de solues dificultava a interconexo de redes de computadores. Neste contexto,
em meados dos anos 70, comeam os trabalhos de padronizao da ISO, que props uma
arquitetura de conexo dividida em sete camadas.

O modelo de computao centralizada foi perdendo fora com o surgimento e a proliferao
da Internet. Quando a Internet foi aberta para a explorao comercial, o uso das redes de
computadores se popularizou rapidamente como um meio de trocar informaes. Hoje em dia,
existe um modelo de computao distribuda vigente na Internet, com a arquitetura cliente-
servidor desempenhando papel fundamental em um ambiente de rede descentralizado, com
mquinas autnomas e independentes. Este ambiente descentralizado utiliza o protocolo
TCP/IP como principal meio de comunicao entre mquinas de arquiteturas diferentes
executando sistemas operacionais e aplicaes diferentes.

Aplicaes distribudas podem ser implementadas utilizando objetos distribudos. Estas
aplicaes muitas vezes so transformadas em servios, que podem ficar disposio de um
grupo de usurios que utilizam estes servios de maneira transparente. Com a evoluo da
computao distribuda surgiram novos padres para o desenvolvimento de aplicaes
distribudas orientadas ao uso em rede, como, por exemplo, CORBA (Commom Object
Request Broker Architeture)[CORBA98]. Este padro proposto pela OMG (Object
Management Group) especifica uma arquitetura para o desenvolvimento de aplicaes
distribudas. A Microsoft tem sua proposta de objetos distribudos que o DCOM. Porm,
todas estas propostas levaram ao desenvolvimento de sistemas fortemente acoplados, onde
necessrio um pr-acordo entre as organizaes para determinar o tipo de dados e a interface
dos mtodos. Como resultado tem-se agora um cenrio onde os sistemas das organizaes
consistem em uma mistura de solues particulares, executando sob uma variedade de
plataformas. Integrar sistemas existentes com novo software uma tarefa complicada, alm
dos rgidos formatos de dados e interfaces no serem facilmente adaptados aos novos
requisitos. Desenvolvedores so desafiados com software escrito em diferentes linguagens,
para diferentes sistemas operacionais, diferentes redes, e hardwares.

Assim, faz-se necessrio a criao de padres para a especificao de um meio de
compartilhar informaes em um ambiente de aplicaes heterogneas como a Internet. A
linguagem XML foi criada como uma ferramenta para tornar este compartilhamento de
informaes possvel.

Nos ltimos, anos a indstria tem visto uma evoluo de novos padres para melhorar a
integrao entre organizaes. TCP/IP e HTTP definem protocolos necessrios para uma rede
publica e mundial. A tecnologia Java permite a criao de aplicaes independentes de
plataforma. XML complementa Java permitindo a criao de dados independentes de
plataforma especfica.

Porm, as organizaes no podem simplesmente abandonar seus investimentos em
tecnologia e nos seus sistemas atuais. O requerimento de integrar software legado com novas
solues tem levado criao de novos produtos e padres que permitem aplicaes
existentes trabalhar junto de uma forma fracamente acoplada. Esta integrao flexvel entre
sistemas pode ser alcanada somente com a criao de um padro para a troca de dados
independente de plataforma. Uma forma de se alcanar esta integrao atravs da utilizao
de Web Services, que permite de integrar sistemas j existentes com novos sistemas.

Este trabalho est dividido em sees. A seo 2 est focada na definio de conceitos e
especificaes que formam a linguagem XML. Esta linguagem serve de base para a criao de
novas tecnologias que esto expostas na seo 3, UDDI, SOAP e WSDL. A seo 4 destina-se
a implementao da aplicao proposta e por fim a seo 5 refere-se as concluses deste
trabalho.

2. A Linguagem XML

XML ( EXtensible Markup Language ) ou linguagem extensvel de marcao, uma
linguagem designada para descrever e estruturar informaes. Como uma linguagem de
marcao, XML se assemelha com a linguagem HTML, possuindo marcaes para descrever
os dados. Porm, estas marcaes no so pr-definidas na linguagem, tornando possvel a
criao de marcaes de acordo com necessidades especficas.

XML uma recomendao da W3C (World Wide Web Consortium) e o seu desenvolvimento
e especificao tem sido supervisionado pelo XML Working Group. XML uma
especificao pblica, ou seja, no propriedade de nenhuma companhia. O desenvolvimento
de XML comeou em 1996 e um padro W3C desde fevereiro de 1998.

2.1 A Sintaxe XML

Um arquivo XML um arquivo texto, composto por marcaes aninhadas e delimitadas. A
primeira linha descreve a verso do documento. A prxima linha descreve o elemento raiz. As
prximas linhas definem os elementos derivados do elemento raiz. A listagem a seguir
mostra um exemplo de arquivo XML :

<?xml version="1.0"?>
<computador marca= DELL>
<preo> 3000,00 </preo>
<hd un=GB> 20 </hd>
<memria> 128 </memria>
<monitor marca= LG> 15
</monitor>
</computador>
Um elemento XML localiza-se entre de uma marcao de incio e uma marcao de fim,
incluindo a prpria marcao. Serve para delimitar contedo e todo documento XML deve
possuir pelo menos um elemento raiz.
Elementos possuem correspondncia com outros elementos, podendo ter uma relao de pai
ou filho, formando assim forma uma estrutura de rvore. Um elemento pode ter um contedo
outro elemento (contm outros elementos) alm de contedos misturados (contm texto e
outros elementos), contedo simples (texto) ou ainda contedo vazio (no contm
informao).
Documentos XML geralmente possuem correspondncia com uma tabela em uma base de
dados. Pode-se utilizar, por exemplo, os nomes dos campos da tabela como nomes de
elementos.
Elementos XML podem conter atributos. Um atributo armazena informao adicional sobre
elementos, informao que no faz parte dos dados do elemento. XML Namespaces so
atributos especiais de elementos que servem para evitar conflitos de nomes de elementos,
desde que estes nomes no sejam pr-definidos (palavras reservadas).
Quando um namespace definido na marcao de incio de um elemento , todos os elementos
filhos com o mesmo prefixo estaro associados ao mesmo namespace. Os endereos
utilizados para identificar um namespace no so utilizados pelo parser para processar
informaes. A principal finalidade destes endereos fornecer um nico nome ao
namespace. Comumente , um namespace utilizado como um ponteiro para uma pgina Web
que contm informaes a seu respeito .
2.2 XML e Validao de Documentos
Um documento XML bem formado um documento que est em conformidade com as
regras sintticas. Um documento XML vlido um documento bem formado e que est em
conformidade com as regras de um DTD ( Document Type Definition ou Definio do Tipo
do Documento). Um DTD define os elementos permitidos em um documento XML . O
propsito de um DTD definir a estrutura do documento com uma lista de elementos
possveis. Com o uso de uma definio de documento, cada arquivo XML pode carregar uma
descrio do seu prprio formato. Deste modo, grupos independentes podem concordar em
usar um DTD comum para a troca de informao. Uma aplicao pode usar um DTD para
verificar se os dados que recebeu so vlidos.
O ponto principal de um documento DTD a declarao de elementos e da estrutura do
documento XML. possvel declarar um elemento ou um conjunto de elementos como uma
expresso regular, permitindo a definio da ocorrncia de um determinado elemento.
2.3 As APIs XML
Um mdulo de software capaz de ler documentos e fornecer acesso a seu contedo e estrutura
chamado de XML parser e a interface de programao, incluindo os nomes dos mtodos e
atributos uma API XML. Desenvolvedores so livres para implementar suas prprias APIs,
levando em considerao os padres aceitos pela indstria. Fazendo isto, um desenvolvedor
pode escrever uma API que pode ser executada em diferentes ambientes sem maiores
modificaes.
Existem varias interfaces de programao (APIs) desenvolvidas ou em desenvolvimento para
a manipulao de XML, porm, as duas principais especificaes que esto se tornando
padres industriais so : SAX e DOM.
A XML DOM (Document Object Model) uma API abstrata para documentos XML. Ela
define uma maneira na qual um documento XML pode ser acessado e manipulado. Como uma
especificao da W3C (World Wide Web Consortium), ela fornece uma API padro para uma
variedade de aplicaes. DOM foi projetado para ser utilizado com qualquer linguagem de
programao ou sistema operacional. Para arquivos extensos isto pode se tornar um problema.
Se um grande arquivo est sendo transmitido via rede, pode no ser conveniente esperar o
trmino de download do arquivo para comear a manipul-lo. SAX ( Simple API for XML)
no requer que um documento completo esteja na memria para process-lo, pois o acesso ao
contedo do documento feita de forma seqencial. Diferente de DOM, onde o arquivo
percorrido seguindo uma estrutura de rvore. Alm disso, SAX uma interface baseada em
eventos.
Um parser XML um processador que l um documento XML e determina a estrutura e
propriedades dos dados. Se o parser vai alm das regras de validao para um XML bem
formado e valida o documento com um DTD, o parser dito ser um validador XML.
2.4 XML e XSL

XML utiliza marcaes que no so pr-definidas, assim no so interpretadas pelo browser.
Ou seja, o browser no sabe como apresentar os elementos XML. Para contornar este
problema, necessrio um mecanismo que descreva como um documento XML deve ser
apresentado. Deste modo, foi desenvolvido pelo W3C a tecnologia XSL ( Extensible
StyleSheet Language) .
XSL uma linguagem que serve basicamente para formatar XML. Esta linguagem pode
filtrar e ordenar elementos XML, enderear partes especficas de documentos XML, formatar
dados baseados em seu valor e pode direcionar a sada de um documento para ser formatado
em vdeo, papel ou ainda em voz . Esta separao entre apresentao e contedo torna a
linguagem XML mais aperfeioada para o desenvolvimento de sistemas baseados na Web.
Assim, XML uma linguagem que est rapidamente se tornando um padro mundial de
compartilhamento de informaes. Vrios fabricantes esto disponibilizando produtos
baseados em XML entre eles Microsoft, HP, IBM, Sun e Oracle.
XML permite que as informaes sejam armazenadas em lugares distintos ao do modelo de
apresentao dos dados (XSL). Isto permite que se diferencie os dados e apresentao, o que
em HTML no era possvel.
Outra rea onde XML est sendo cada vez mais utilizado em comrcio eletrnico. Neste
caso, requisies de compra podem ser feitas utilizando-se o formato XML, bem como
pesquisas de preo.
Sendo uma meta-linguagem, XML tambm torna possvel a criao de novas linguagens que
padronizam o tratamento de qualquer tipo de informao, como p exemplo a apresentao de
dados(XSL), a transferncia de dados(SOAP), a comunicao entre aplicaes(WSDL), a
descrio de relacionamento entre dados(Xpointer, Xlink), a descrio de aplicaes
(AppML) entre outros.
Para a implementao de servios Web, XML fornece um meio de troca de informaes a
respeito de interfaces, tipos de parmetros e resultados, devido sua natureza independente de
linguagem ou plataforma especfica.
3. Web Services

Web Services so conjuntos de aplicaes auto-descritivas que podem ser publicadas,
localizadas e invocadas atravs da Web. Estas aplicaes podem ser desde simples processos,
como troca de mensagens, at complexas transaes industriais, como a compra de
mercadorias. Uma vez que um Web Service publicado, outras aplicaes (ou outros Web
Services) podem acess-los e invoc-los, tanto para a obteno de dados como interao com
servios que uma organizao oferece.

Diferente de outras tecnologias, Web Services no so acessados atravs de protocolos
especficos de modelagem de objetos, como IIOP, RMI ou DCOM. So acessados atravs de
protocolos e formatos de dados independentes de plataforma como HTTP, XML e SOAP. A
interface de um Web Service acessvel atravs de uma mensagem XML padronizada. So
descritos utilizando um padro formal chamado descrio de servio, que envolve os detalhes
necessrios para a interao com o servio, incluindo o formato das mensagens, tipos de
dados e localizao. A interface encapsula os detalhes de implementao do servio,
permitindo a sua utilizao independente de plataforma de hardware ou software na qual est
implementado o servio.

Os Web Services possuem uma arquitetura baseada na interao de trs categorias : provedor
do servio (service provider), provedor de registro (registry provider ou registry broker) e o
cliente do servio ( service requestor). Estas categorias envolvem as operaes de procura
(find) , publicao (publish) e acoplamento (bind) do servio.O provedor publica o servio
com a operao publish. O cliente do servio utiliza a operao find para obter uma descrio
de servio do provedor de registro e usa esta descrio para, dinamicamente, acessar e
interagir (bind) com o provedor do servio. A figura 1 ilustra esta arquitetura :

Fig. 1 : Arquitetura e Integrao de Web Services .

A interao entre Web Services pode ser feita estaticamente ou dinamicamente em tempo de
execuo. Um solicitante de um servio descreve as caractersticas do servio procurado e
utiliza o provedor de registro para localizar um servio apropriado. Uma vez localizado o
servio, a informao na descrio do servio utilizada para a interao entre cliente e
servidor. A descoberta, a invocao dinmica de servios (publish, find, bind) e uma
colaborao baseada em mensagens permite o desenvolvimento de aplicaes distribudas
fracamente acopladas com um enorme grau de interoperabilidade.

Web Services uma tecnologia que se constitui de outras tecnologias e padres que esto
sendo desenvolvidas h pouco tempo. Estes padres especificam meios de troca de mensagens
entre servios (SOAP), busca de servios em registros (UDDI) e configurao dinmica de
clientes baseadas em descries de servios (WSDL). A figura 2 retrata a interoperabilidade e
padres na qual so desenvolvidos Web Services :

Outros padres ainda no definidos
Universal Description Discovery Integration ( UDDI )
Web Services Description Language ( WSDL )
Simple Object Access Protocol ( SOAP )
Extensible Markup Language ( XML )
Protocolos Internet ( TCP/IP , HTTP, SMTP )
Fig. 2 : Pilha de protocolos que compe Web Services.

Nos prximos itens, so abordadas as formas de comunicao que permitem a implementao
de Web Services .

3.1 RPC

RPC (Remote Procedure Call) um conjunto de regras para a construo de sistemas
distribudos. Estas regras especificam meios de codificar e decodificar informao
transmitida entre duas aplicaes. Efetivamente, RPC fornece um mecanismo para definio
de interfaces que podem ser invocadas atravs de uma rede .

Uma operao RPC possui uma assinatura( o nome da operao) , seus parmetros de entrada,
resultados e excees que podem acontecer. A assinatura de uma operao encapsulada em
uma estrutura chamada IDL (Interface Definition Language).

Chamar um procedimento que est localizado em um sistema remoto requer especificar qual
sistema contatar, como codificar os parmetros, como receber a resposta e como decodificar a
resposta para utilizao em um sistema especfico .

Uma das primeiras especificaes para construo de sistemas distribudos foi feita em 1990
pela OSF (Open Software Foundation) com DCE (Distributed Computing Environment). Dois
outros produtos de desenvolvimento de aplicaes distribudas que surgiram em seguida
foram CORBA(OMG) e DCOM(Microsoft). Estes produtos especificam mecanismos que
foram a utilizao de um protocolo especfico para a comunicao entre as aplicaes .

3.2 SOAP

SOAP (Simple Object Access Protocol) originou-se da idia de um mecanismo de RPC
baseado em XML originalmente proposto por Dave Winer em 1998. A idia evoluiu e hoje
SOAP uma especificao da W3C proposta por organizaes como Userland, Ariba,
Microsoft, IBM, Compaq, HP, Ltus, SAP, entre outras.

SOAP um protocolo baseado em XML que permite a comunicao entre aplicaes
utilizando-se HTTP. Atualmente , aplicaes comunicam-se atravs de objetos distribudos
como CORBA e DCOM. HTTP no foi designado para isto. Utilizar RPC na Internet tambm
representa um problema de segurana. Firewalls e proxys normalmente iro bloquear este tipo
de fluxo na rede. Uma melhor forma de comunicao entre aplicaes seria a utilizao de
HTTP, uma vez que este protocolo suportado por todos os servidores Web, browsers e
firewalls.
A sintaxe de uma mensagem SOAP simples. Esta deve ser codificada no padro XML e
contm as seguintes partes :
SOAP Envelope : define o contedo da mensagem e os vrios namespaces que so
usados pelo resto da mensagem, incluindo xmlns:SOAP-ENV(SOAP Evelope),
xmlns:xsi (Xml Schema for Instances) e xmlns:xsd (Xml Schema for Datatypes)
SOAP Header (opcional ) : contm informao a respeito de autenticao, transao e
contabilizao.
SOAP Body : contm informao a respeito de mtodos e parmetros a serem
chamados ou respostas enviadas. Quando SOAP utilizado como RPC, esta parte
possui um nico elemento que contm o nome do mtodo, parmetros e a
identificao do servio.

Mensagens SOAP podem ser enviadas utilizando outros protocolos de transporte, como por
exemplo SMTP. A figura 3 contm um exemplo de uma requisio SOAP/HTTP utilizada
como RPC :

Fig. 3 : Formato de uma Requisio SOAP/HTTP.

Uma mensagem SOAP/HTTP geralmente processada por uma aplicao que est em um
servidor Web. Quando a aplicao recebe uma requisio, esta primeiro confere a existncia
do campo SOAPAction na requisio. Se possuir tal campo, a requisio direcionada para a
SOAP Engine, responsvel por processar a parte XML da mensagem e usar o endereo do
servio especificado para executar uma varredura em seu registro local ( este registro contm
informaes a respeito dos servios disponveis no servidor ). Ento, utilizado reflexo para
localizar e invocar o mtodo especificado no servio e retornar a resposta.

POST /soap/servlet/rpcrouter HTTP/1.0
Host: localhost:8070
Content-Type: text/xml
Content-Length: 461
SOAPAction: ""
<SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<SOAP-ENV:Body>
<ns1:getRate xmlns:ns1="urn:xmethods-exchange" SOAP-
ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<country1 xsi:type="xsd:string">USA</country1>
<country2 xsi:type="xsd:string">japan</country2>
</ns1:getRate>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Uma resposta SOAP retornada em um documento XML estruturado como em uma
requisio, exceto quando contm o resultado do mtodo requisitado.

A segurana no envio de mensagens SOAP um tpico importante. Em um nvel mais baixo,
mensagens SOAP podem ser trocadas pela rede utilizando HTTPS ao invs de HTTP. Como
HTTPS utiliza SSL no seu transporte, fica garantida a proteo contra possveis intervenes.
Alm disso, o cliente e servidor podem verificar cada um suas respectivas identidades.

Embora HTTPS resolva o problema de proteo das mensagens contra possveis invasores,
este no ajuda muito quando se necessita da segurana necessria para a autenticao de
usurios de Web services especficos. Estes servios iro fornecer algum tipo de combinao
de usurio/senha durante a fase inicial de registro no servio e ento esta ser utilizada para
acessos futuros. Os servios UDDI so um tipo de Web Services que requerem um registro
inicial antes da utilizao de seus servios de publicao. No h ainda um padro de
autenticao para Web services , mas tal padro dever surgir em pouco tempo devido
trabalho de organizaes como Microsoft e Verisign.

O apoio industrial ao protocolo SOAP est aumentando a cada dia com o lanamento de
produtos que suportam este protocolo pelas maiores organizaes. Enquanto cada um destes
produtos possuem suas prprias capacidades, todos so capazes de produzir e processar
mensagens SOAP. Isto significa que no importa como a aplicao foi implementada , ou
onde est localizada, ou ainda em qual linguagem foi implementada, o que interessa que a
interoperabilidade entre aplicaes est garantida.

3.3 WSDL

WSDL (Web Services Description Language) uma linguagem baseada em XML projetada
para descrever Web Services, como o que um servio pode fazer, onde est localizado e
como invoc-lo. Uma descrio de servio contm uma definio abstrata para um conjunto
de operaes e mensagens, um protocolo de integrao para estas operaes e uma
localizao especfica na rede.

Sendo baseado em XML, um documento WSDL dividido em sees constitudas por
elementos. O elemento <definition> contm informaes a respeito de um ou mais servios.
Dentro deste elemento, encontram-se outros quatro elementos :
<message> e <portType> : define quais operaes o servio fornece.
<type> : este elemento opcional serve para definir tipos de dados estruturados .
<binding> : designa como as operaes so invocadas.
<service> : explicita onde o servio est localizado.

Um documento WSDL pode ser dividido em documentos distintos, um que se refere
implementao de um servio e outro que se refere interface do servio. Neste caso, o
documento de implementao conter um elemento <service> e um elemento <import> que
apontar para o documento WSDL com a definio da interface do servio. No documento
que define a interface sero encontrados os elementos < types>, <message>, <portType> e
<binding>.
3.4 UDDI

UDDI (Universal Description Discovery and Integration) uma iniciativa da indstria que
permite s organizaes publicar e buscar informaes a respeito de Web Services.
composto por um grupo de registros baseados na Web que fornecem informaes a respeito
de uma organizao ou entidade. Estes registros so executados em mltiplos servidores
(operadores ) e podem ser usados por qualquer um que queira tornar disponvel informaes a
respeito de negcios ou entidades, ou ainda por qualquer um que queira buscar estas
informaes.

A informao definida em uma descrio de servio encontrada em um documento WSDL
complementar informao encontrada em um registro UDDI. Este fornece suporte para
vrios tipos de descries de servios, ou seja, UDDI no possui suporte direto para WSDL
ou outro mecanismo de descrio de servios.

Os quatro tipos de dados encontrados em um registro UDDI so :
businessService : fornece informaes sobre uma organizao e pode conter um ou
mais businessService.
businessEntity: fornece informaes tcnicas e descries de servio . Pode conter um
ou mais bindingTemplate.
bindingTemplate : contm uma referncia a um ou mais tModels.
tModel: utilizado para definies de especificaes tcnicas de servio.

A informao fornecida por um registro UDDI pode ser comparada uma lista telefnica. As
pginas brancas (white pages), fornecem informaes tais como nome da organizao, contato
e identificadores. As pginas amarelas (yellow pages) so compostas por um ndice de
servios e produtos e as pginas verdes (green pages) contm informaes a respeito de
transaes, descries de servio e invocao de aplicaes.

UDDI uma especificao em constante desenvolvimento. coordenada por UDDI.ORG,
que composta por vrios membros da indstria, como Microsoft, IBM e Ariba. Esta
especificao fornece uma API para consulta e publicao de servios em registros UDDI.

A consulta e publicao em registros UDDI executada utilizando-se mensagens no formato
SOAP . Estas operaes so baseadas na especificao de uma API proposta por UDDI.ORG
e possui mensagens especificas para a busca, publicao e alterao de registros.

4. Implementao

Nesta seo mostrado um exemplo de implementao que tem como objetivo principal
exemplificar as caractersticas da utilizao de Web Services e XML. Atravs do exemplo,
exposto o modo como a integrao destas tecnologias permite a criao de uma aplicao que
atravs de uma funo de alto nvel, como o planejamento de uma viagem a um determinado
lugar, executa operaes de baixo nvel com Web Services, como a consulta de aluguel de
carros, reservas em hotis e passagens de avies. Estes servios podem ser selecionados em
tempo de execuo baseados no seu custo, qualidade, viabilidade e segurana.

Outra caracterstica interessante que deve-se notar a separao da apresentao e contedo
que possvel alcanar com o uso de XML e XSL.

As ferramentas utilizadas para a implementao do exemplo so disponibilizadas como
freeware e so as seguintes :

Apache Jakarta Tomcat 3.2.1 servidor Web de cdigo aberto , tambm implementa
a especificao Java Servlet API 2.2 , ou seja , atua como um servlet container.
[JSP01]
Apache SOAP 2.0 implementao do protocolo SOAP para Java , inclui suporte
para a especificao SOAP 1.1 e integra o servidor web.
Apache Xerces 1.2 este parser XML de cdigo aberto para Java implementa as
especificaes XML mais recentes , bem como DOM e SAX .
Apache Xalan Java implementa a especificao XSL 1.0 e tambm a linguagem
Xpath 1.0 .
IBM WSTK 2.4 Web Services ToolKit da IBM, fornece ferramentas teis no
processo de desenvolvimento e publicao de Web Services.
JDK Java Development Kit , necessrio para executar o servidor e as classes que
formam a aplicao.

Para exemplificar o uso de Web Services e XML , tem-se um sistema que fornece uma
interface com o usurio como mostrado na figura 4 :

Fig. 4 : Interface do usurio da aplicao.

Esta interface possui um formulrio que permite a definio de quatro parmetros : o pas e a
cidade de destino, a data de ida e a data de retorno. Pode-se opcionalmente escolher que tipos
de servios deseja-se consultar. Aps a definio dos parmetros, o usurio submete o
formulrio para processamento no servidor. No servidor esto hospedadas as aplicaes
cliente que executaro as consultas.
Existem duas maneiras de se construir um cliente de um Web Service: estaticamente e
dinamicamente. Quando se tem conhecimento prvio da localizao e interface de um
servio, no necessrio realizar uma consulta a um registro UDDI para determinar estas
informaes. O cliente que acessa este servio j possui conhecimento prvio da interface,
localizao e tipos dos parmetros que devem ser utilizados, que so implementados no
desenvolvimento da aplicao. Este tipo de cliente seleciona o servio estaticamente. Porm,
nem sempre possvel o conhecimento prvio destas informaes. Deste modo, necessrio
uma consulta um registro UDDI para obter estas informaes, que esto definidas em um
documento WSDL. Ento o cliente determina a localizao e interfaces do servios com base
em uma consulta e dinamicamente seleciona os servios que deseja acessar em tempo de
execuo. No exemplo so utilizados Web Services acessados dinmica e estaticamente.

Com base nos parmetros que so enviados para o servidor, feita uma srie de consultas aos
servios disponibilizados na Web. Estes servios so disponibilizados por organizaes em
todo mundo.

A primeira consulta a chamada a um servio Web que fornece a taxa de converso de
moedas entre dois pases. Este servio aceita dois parmetros como entrada, que so os nomes
dos pases e retorna uma resposta que a taxa de converso de moedas entre estes dois paises.
Como j se conhece a localizao e a interface do servio, o cliente j est configurado para
chamar o mtodo, bastando apenas setar um parmetro que o pas que se deseja obter a taxa
de converso.

Para invocar um servio Web com um cliente Java , so importados os pacotes necessrios
para preparar uma chamada remota SOAP (org.apache.soap.*). Esta chamada remota feita
atravs de um objeto Call . Cada parmetro representado por um objeto Parameter com o
nome do argumento, o tipo do argumento, o seu valor e o tipo de codificao do argumento,
como demonstrado abaixo :

Vector params = new Vector();
params.addElement( new Parameter( "country1", String.class, brazil, null ) );
params.addElement( new Parameter( "country2", String.class, usa, null ) );
Para enviar a chamada do mtodo, executado o mtodo invoke() do objeto Call. Para isto
so setados a URL, o nome do mtodo e a identificao do mtodo bem como seus
argumentos. A resposta ento retornada em um objeto RESPONSE. O trecho de cdigo
abaixo mostra este procedimento :

call.setParams( params );
call.setTargetObjectURI("urn:xmethods-CurrencyExchange" );
call.setMethodName( "getRate" );
Response response = call.invoke(new URL( "http://services.xmethods.net/soap" ), "" );
A seguir efetuada uma consulta a um servio para obter preos de passagem de avio e
disponibilidade de vos. Esta consulta feita atravs de uma chamada SOAP-RPC a um
servio que tem como parmetros de entrada a data de ida e retorno , bem como as siglas dos
aeroportos de destino e retorno. Na tabela 1 podemos ver o texto em formato XML que
enviado para o provedor do servio e na tabela 2 tem-se a resposta da requisio:
<search>
<depart>
<depart_airportcode>LAX</depart_airportcode>
<arrive_airportcode>GRU</arrive_airportcode>
<depart_year>2001</depart_year>
<depart_month>Jul</depart_month>
<depart_day>13</depart_day>
</depart>
<return>
<return_year>2001</return_year>
<return_month>Aug</return_month>
<return_day>22</return_day>
</return>
</search>

<flight>
<price>1649.70</price>
<outbound>
<airline>Lan Chile</airline>
<number>601</number>
</outbound>
<return>
<airline>Lan Chile</airline>
<number>750</number>
</return>
</flight>

Tab. 1 :Requisio do servio. Tab. 2: Resposta do servio.

Esta resposta armazenada em um arquivo XML. Este arquivo utilizado juntamente com
um arquivo XSL para a formatao em HTML. Esta formatao pode ser feita no browser do
cliente ou pode ser transformado no servidor. A segunda opo foi utilizada neste caso, com o
uso do pacote Xalan, que possui o processador XSL responsvel por executar a
transformao. O seguinte trecho de cdigo executa esta transformao :

TransformerFactory tFactory = TransformerFactory.newInstance();
File ht = new File(arqDest.html);
FileOutputStream os = new FileOutputStream(ht);
Transformer trans = tFactory.newTransformer(new StreamSource(arqXsl.xsl));
trans.transform(new StreamSource(arqXml.xml),new StreamResult(os));
Aps a execuo deste procedimento tem-se uma sada HTML (tabelas) que incorporada
pgina do cliente em tempo de requisio, gerando a resposta ilustrada na figura 5:

Fig. 5 : Resultado da pesquisa nos Web Services.
Por fim, executada uma pesquisa em um registro UDDI para obteno de servios
relacionados com hospedagem e reservas em hotis, com base na cidade destino. Registros
UDDI fornecem meios de buscar informaes baseadas em cdigos industriais (taxonomias)
como por exemplo NAICS, UN/SPSC ou baseadas em localizao geogrfica ( ISO ).
Para executar tal consulta, utilizado o pacote WSTK da IBM que fornece uma API para
manipulao de registros UDDI que abstrai a complexidade do uso de consultas a registros
UDDI. O trecho de cdigo que realiza a busca detalhado abaixo :

ServiceRegistryProxy srp = new ServiceRegistryProxy();
ServiceDefinition[ ] sdList = srp.findServices(service, false);
ServiceDefinition sd = sdList[0];
Esta consulta retorna uma lista com os servios encontrados. Aps a seleo do servio, o
prximo passo encontrar a definio de servio, que o arquivo WSDL, e define os
parmetros e interface do servio. Para isto executado o seguinte cdigo :

WSDLDocument wsdl = sd.getServiceImplementation().getWSDLDocument();
Com a definio de servio em mos, feita uma invocao ao servio. Esta invocao feita
de forma dinmica, ou seja, a mensagem a ser enviada construda em tempo de execuo.
Utiliza-se para isto os objetos ServiceProxy e SoapServiceRequest, encontrados no pacote
WSTK da IBM. O cdigo exemplificado a seguir :

ServiceProxy proxy = ServiceProxyFactory.getServiceProxy(service, port, wsdl);
SoapServiceRequest request = new SoapServiceRequest(operation, args);
request.setSoapMappingRegistry(getSMR());
ServiceResponse sr = proxy.invoke(request);
Response response = (Response)sr.getOneResult(1);
Esta implementao mostra as etapas necessrias para localizao e invocao esttica e
dinmica de Web Services. Caractersticas de segurana, controle de autenticao e
gerenciamento de transao no foram abordados, haja vista o carter introdutrio deste
exemplo. Porm, estes so detalhes importantes que devem ser levados em considerao no
projeto de sistemas distribudos.

5. Concluso

Web services uma tecnologia recente que representa uma evoluo e um novo paradigma de
programao distribuda. Esta nova proposta pode se tornar um novo modelo na qual
transaes comerciais ou no so realizadas pela Internet, onde as mesmas podem ser
dinamicamente selecionadas e acessadas utilizando-se o protocolo SOAP.

Na arquitetura de Web Services, cada componente visto como um servio, encapsulando seu
comportamento e fornecendo uma API para invocao atravs da Internet. Este modelo
fornece vantagens como por exemplo a interoperabilidade entre aplicaes de uma maneira
simples, pois sua interface limitada ao que absolutamente necessrio e de baixo custo,
desde que a comunicao baseada em texto (XML) e, alm disso, suas principais
ferramentas de desenvolvimento so disponibilizadas como freeware.
Porm, como uma tecnologia composta por padres recentemente desenvolvidos, Web
Services tem alguns problemas a serem melhor resolvidos, como a segurana, autenticao e
controle de transao .

Existe um grande interesse da industria em torno de Web Services, com as maiores
organizaes participando da definio dos padres e fornecendo suporte em seus produtos a
esta tecnologia . o caso da Microsoft , que tem sua plataforma .NET baseada na tecnologia
dos Web Services bem como a IBM, que fornece integrao de produtos como WebSphere
com Web Services. Outras grandes companhias esto lanando produtos que suportam Web
Services como a Oracle, HP, Ariba, entre outras.

Assim, espera-se nos prximos anos uma grande disseminao do uso desta tecnologia no que
pode se tornar um passo evolucionrio no desenvolvimento de aplicaes distribudas .

7. Referncias

Seely, Scott . SOAP Cross Platform Web Service Development using XML, Prentice
Hall, Upper Saddle River, NJ 07458, USA, 2001.

Laurent, Simon; Johnston, Joe. Programming Web Services with XML-RPC, OReilly,
California , USA, 2001.

McGrath, Sean. XML Aplicaes Prticas, Editora Campus, Rio de Janeiro, Brasil, 1999.

[JSP01] Houghland, Damon; Tavistock, Aaron. Core JSP, Prentice Hall , Upper Saddle
River, NJ 07458, USA, 2001.

UDDI.ORG. UDDI Version 2.0 API Especification,
http://www.uddi.org/pubs/ProgrammersAPI-V2.00-Open-20010608.pdf , 2001.

UDDI.ORG. UDDI Version 2.0 Data Structure Reference,
http://www.uddi.org/pubs/DataStructure-V2.00-Open-20010608.pdf, 2001.

Kreger, Heather. Web Services Conceptual Architeture, http://www.ibm.com/webservices,
IBM Sotware Group, May, 2001.

[CORBA98] Orfali, Robert; Harley, Dan; Client Server Programming with Java and
CORBA, Wiley, USA, 1998.

8. Biografia
Aleksander Knabben Becker graduando da ltima fase do curso de Cincias da
Computao da Universidade Federal de Santa Catarina. Atualmente trabalha como estagirio
na Prefeitura Municipal de Florianpolis. Suas reas de interesse so Programao para Web,
redes de computadores e sistemas distribudos.

Daniela Barreiro Claro doutoranda em Cincia da Computao na UFSC - Universidade
Federal de Santa Catarina, na rea de Engenharia de Sistemas Distribudos. Ela bacharel em
Cincia da Computao pela UNIFACS - Universidade Salvador. Atualmente, ela trabalha
com planejamento e desenvolvimento de sistemas computacionais em empresa privada alm
de participar do programa de extenso no nvel de ps-graduao do CPGCC/UFSC. Suas
reas de interesse so Computao Distribuda com Agentes Mveis, Banco de Dados,
tecnologias Web e suas aplicaes.

Joo Bosco Mangueira Sobral professor na Universidade Federal de Santa Catarina, na
rea de Engenharia de Sistemas Distribudos. doutor pela Universidade Federal do Rio de
Janeiro(COPPE) em 1996. Cursou seu mestrado em Engenharia de Sistemas e Computao
pela UFRJ/COPPE em 1977. graduado em Matemtica pelo Instituto de Matemtica da
UFRJ (1973). Desde 1978 trabalha no Departamento de Informtica e Estatstica, atuando no
Curso de Graduao e Ps-Graduao em Cincia da Computao da UFSC. Suas reas de
interesse so Computao Distribuda, Mobilidade em Computao e suas aplicaes.

Vous aimerez peut-être aussi