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>
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.