Web Services João Henrique da Rosa Universidade do Vale dos Sinos Unisinos 950, São Leopoldo, RS, Brasil [email protected] que existem algumas especificações e tecnologias definidas para a construção e utilização de Web services, e essas especificações e tecnologias atendem aos seguintes requisitos: uma forma comum de representar dados, um formato de mensagens comum e extensível, uma linguagem de descrição dos serviços, um mecanismo para localizar os serviços e um mecanismo para descobrir os provedores de serviços. Booth explica, que o XML, eXtensible Markup Language, é a melhor escolha para a representação de dados, e o XML Schema para representar os tipos de dados. Para a troca de informações, o SOAP, Simple Object Access Protocol, é um protocolo leve, o qual é divido em duas partes, uma delas é composta por um conjunto de regras de como utilizar o XML para representar os dados, e a outra define as associações ao protocolo HTTP e o formato das mensagens, ou seja, essa parte é uma convenção de como representar as chamadas de procedimentos remotos (RPCs). Partindo do pré suposto que os serviços a serem chamados não são conhecidos, é preciso que haja uma descrição deles. Para fazer essa descrição, ou documentação das mensagens que os Web services aceitam e geram, é usado o WSDL, Web Service Description Languagem. Segundo Booth, esse mecanismo padrão facilita a interpretação dos contratos pelos desenvolvedores e ferramentas de desenvolvimento. Nesse ponto já foram atendidas quase todas as especificações, restando apenas duas, as quais são: um mecanismo para localizar os serviços e um mecanismo para descobrir os provedores de serviços. Para localização dos serviços, Booth apresenta o protocolo Disco (Discovery Protocol), o qual, segundo ele, define um formato para um documento chamado Discovery, e um protocolo para devolvê-lo. Assim, possibilitando a localização dos serviços, em um Web site conhecido. Para atender a especificação de um mecanismo para descobrir os provedores de serviços, Booth apresenta o UDDI (Univesal Description, Discovery, and Integration). Ele explica que esse é um mecanismo para os fornecedores anunciarem a existência dos seus serviços, e para que os consumidores possam localizá-los. Booth, resumidamente, define um XML Web service como um serviço de software publicado na Web através Resumo Em meados dos anos 90, quando a Internet começou a se popularizar, as tecnologias que haviam possibilitavam você se conectar em um site e baixar o seu conteúdo. A linguagem que, de fato, permitia a apresentação das informações presentes na rede era o HTML (Hiper Text Makup Language). Porém, nos últimos anos novas tecnologias e frameworks de desenvolvimento estão surgindo, possibilitando uma maior integração entre os diversos aplicativos e serviços disponibilizados na Internet. Essas novas tecnologias e frameworks devem tratar tarefas complexas, como o gerenciamento de transações, através da disponibilização de serviços distribuídos que utilizem interfaces de acesso simples e bem definidas. Esses serviços ou aplicativos distribuídos são conhecidos como Web services. Pelo fato dos Web services serem baseados em tecnologias já padronizadas, tais como, a linguagem XML e o protocolo HTTP, eles são extremamente atrativos. Para entender-se a participação da linguagem XML em um Web service, é útil pensar-se em um documento escrito nessa linguagem, o qual pode possuir várias formatações. Entretanto, existem algumas formatações especiais de um documento desse tipo, as quais definem padrões como o SOAP, WSDL e o UDDI. Padrões esses que são utilizados para fazer a comunicação, descrição e o descobrimento dos serviços. Esse artigo apresenta os conceitos desses padrões e finalizará com uma comparação entre os Web services e o CORBA, o qual de certa forma pode ser considerado o antecessor dos Web services. Palavras Chaves: Web services, XML, XML Schema, SOAP, WSDL, UDDI. 1. Introdução Segundo Booth [1], um Web service é um componente, ou uma unidade lógica de aplicações, as quais são acessíveis através de protocolos de Internet. Ele define como componentes, os serviços que possuem uma funcionalidade, a qual pode ser reutilizada sem a preocupação de com ela é implementada. Booth mostra 1 do SOAP, descrito com um arquivo WSDL e registrado em UDDI. Os Web services prometem ser capazes de tornar as operações entre os serviços altamente distribuídos e heterogêneos hospedados na Web, mais ricas, eficientes e dinâmicas, como apresenta Hull [2]. Progressos substanciais têm sido feito para atingir essa meta, alguns exemplos são as padronizações emergentes mostradas, SOAP, WSDL e UDDI. A indústria tecnológica também tem se esforçado bastante para produzir ferramentas para dar suporte a esses tipos de aplicações, algumas delas são: IBM’s WebSphere Toolkit, Sun’s Open Net Environment and JiniTM Network technology, Microsoft’s .Net and Novell’s One Net initiatives, HP’s e-speak, BEA’s WebLogic Integration. A academia, por sua vez, tem empregado muita energia em pesquisas, que usam ou acrescentam vantagens aos Web services. Mas mesmo assim, segundo Hull, há um extenso caminho a se percorrer, especialmente se dando o longo objetivo de tornar possível o automatizado descobrimento, composição, promulgação e monitoramento de coleções de Web Services, quais estão trabalhando para alcançar um específico objetivo. Hull diz que os fundamentais desafios na composição de Web services consistem do desenho, e da análise de desenvolver técnicas e ferramentas necessárias para manipular os aspectos inovadores do paradigma. Ele também afirma que esses desafios levantam uma grande variedade de questões, as quais são relevantes para a base de dados da comunidade acadêmica. Algumas dessas questões são: Qual o caminho certo para modelar Web services e as suas composições? Qual é o caminho certo para consultá-los tendo em vista de suportar as composições autônomas e análises algorítmicas? E como são possíveis os aspectos de gestão de dados dos serviços compostos Web serem incorporados dentro de atuais padrões de Web sevices? A figura 1, qual foi retirada do trabalho de Hull, mostra três dimensões que medem modelos de descrição/composição de serviços Web. Hull explica que a dimensão Complexity of component services (complexidade de serviços de componentes) aponta a capacidade de informação da linguagem e o módulo representando o serviço. Ele analisa que nessa dimensão OWL-S é baixo por ele descrever somente a entrada e saída dos serviços. Ao contrário do que faz o WSDL, qual pega abundantes estruturas de informações com o XML Schema e usa mensagens para a entrada e saída. Ele ainda verifica que os módulos BPEL, CSP, π-Calculus, Mealy, Roman e BPML também modelam estados de serviços e mensagens ou seqüências de atividades. Explicações dos módulos com mais importância serão dadas mais adiante, então não se preocupe em entendê-los agora. Figura 1: Anatomia de composição de serviços Web. Hull nos explica que a habilidade de montar serviços que são individuais em um só, faz com que todos esses módulos se elevem ao longo da dimensão Complexity of glue language, essa dimensão descreve a capacidade de cada módulo de conectar componentes de software. E a terceira e última dimensão, de acordo com a explicação de Hull, é a habilidade de descrever semânticas. Ele ainda fala que o OWL-S pode descrever as propriedades sobre a entrada e saída de uma operação e também especificar como o serviço reage com um modelo abstrato do mundo real, e ele conclui dizendo que é isso o distingue dos outros modelos. Esse artigo está divido em seis partes. Da segunda até a quarta serão descritas, em detalhes, as principais padronizações feitas, para fazer dos Web services uma realidade. Na seção cinco os Web services são abordados de um ponto de vista histórico, sendo assim, essa seção não é de grande relevância para entender o funcionamento e a composição dos Web services, nesse tópico procura-se fazer uma comparação entre os Web services e o CORBA. Na última seção é feita uma conclusão do estudo sobre Web services. 2. SOAP (Simple Object Access Protocol) Segundo Booth, SOAP é o protocolo de comunicação entre os Web services. Ele diz que o SOAP é como uma especificação que define o formato das mensagens XML. Sendo assim, uma mensagem SOAP nada mais é que um fragmento XML bem formatado e encapsulado por um par de elementos SOAP. Booth explica que existem outros módulos da especificação SOAP que descrevem como representar os dados do programa em XML e como se usa o SOAP para fazer as chamadas de procedimentos remotos. Esses módulos opcionais da padronização são usados para implementar as aplicações no estilo RPC, onde a mensagem SOAP, que contem a chamada e os parâmetros 2 da função, é enviada pelo cliente, e o servidor retorna uma mensagem com os resultados da função que foi solicitada. Booth ainda diz que as implementações recentes do SOAP têm suporte para aplicações RPC, porque alguns programadores estão habituados com as aplicações CORBA ou COM, as quais têm a capacidade de aplicar esse estilo muito bem. Porém, além de suportar chamadas do tipo RPC, o SOAP também suporta aplicações no estilo de documentos, onde as aplicações são apenas um invólucro de um documento XML. Booth analisa, dizendo que as aplicações no estilo de documentos são muito flexíveis, pois alguns Web services usam elas, para implementar serviços que seriam difíceis de se desenvolver usando RPC. O último módulo especifica como o SOAP estabelece o formato de uma mensagem HTTP que possui uma mensagem SOAP. Booth explica que a ligação com o HTTP é opcional, mas a maioria das aplicações SOAP a suportam, pelo fato de ser o único protocolo padronizado para ele. Por a maioria das aplicações SOAP suportarem o HTTP, criou-se uma incorreta concepção de que o SOAP requer o HTTP. Exemplos de aplicações que suportam protocolos diferentes do HTTP são: MSMQ, MQ Series, SMTP e TCP/IP, mas quase todas as implementações de Web services usam o HTTP, porque ele é altamente difundido. Booth continua falando, que pelo fato do HTTP ser o protocolo central da Web, muitas empresas possuem um gerenciamento de redes que suportam o HTTP e pessoas habilitadas a gerenciá-las. muito diferentes. Booth explica que tentativas como essa já foram feitas no passado, mas nenhumas delas tiveram o mesmo sucesso do SOAP, pois ele é simples e a sua implementação é fácil. 3. WSDL (Web Services Description Language) Segundo Zanuz [3], o WSDL é o mais importante protocolo para a implementação de um Web service, devido ao fato dos serviços serem descritos através de um contrato do tipo WSDL. Zanuz continua explicando, que uma descrição de serviços WSDL expõe o ponto do contrato do serviço, o qual também é conhecido como endpoint. Esse endpoint estabelece a localização física dos serviços e disponibiliza uma descrição formal da sua interface, assim possibilitando aos programadores que querem se comunicar com os Web sevices saberem exatamente como estruturar as mensagens de requisição necessárias. Como Erl [4] mostra, a descrição de serviços WSDL pode ser separada em duas partes, a descrição abstrata e a concreta. A descrição abstrata firma as características de interface do Web service sem dar qualquer referência as tecnologias empregadas para hospedar ou transferir os dados. E a descrição concreta funda o protocolo de transporte físico para possibilitar que a interface abstrata possa se comunicar. O fato do WSDL ser dividido nessas duas tipos de descrição, abstrato e concreto, possibilita a preservação da integridade da descrição dos serviços, independente das possíveis alterações que possam ocorrer na plataforma tecnológica. 2.1. Kit de Ferramentas para SOAP Segundo Booth, o fato de algumas implementações diferirem das especificações do SOAP, é fonte de confusão. Ele explica que isso acontece porque muitas pessoas utilizam algum SOAP toolkit para criar e analisar as mensagens do SOAP. Esses toolkits geralmente traduzem chamadas de funções de alguma linguagem para uma mensagem SOAP. Ele exemplifica mostrando o Microsoft SOAP Toolkit 2.0, o qual transforma uma chamada função COM para SOAP, e o Apache Toolkit, que transforma uma chamada de função JAVA para SOAP. Booth explica que os tipos de chamadas e de parâmetros que são suportados podem variar dependendo da implementação, dessa forma uma função que funciona corretamente com um toolkit, pode não funcionar com outro, porém, Booth deixa bem claro ao afirmar que essa não é uma limitação do SOAP, mas sim da implementação particular que está sendo usada. 4. UDDI (Universal Discovery Description and Integration) Até esse ponto foi visto que o SOAP transporta os serviços e o WSDL os descreve, mas ainda é necessário um mecanismo para encontrá-los. Segundo a definição de Gunzer [5] sobre o UDDI, ele é um padrão desenvolvido para fornecer um diretório de busca para os negócios e seus serviços. Gunzer explica que o UDDI tem como meta ser um mediador entre o serviço e o cliente, ou seja, o seu objetivo é possibilitar que os clientes requisitantes encontrem o fornecedor do serviço por eles procurado. Muitos gostam de fazer uma analogia entre o UDDI e uma lista telefônica, pelo fato dele ser divido em “páginas” com três cores distintas, assim como é feito em uma lista telefônica. Sendo assim, a cor branca contém a informação sobre o nome, endereço e o número de telefone dos fornecedores do serviço, além de outras possíveis informações. As páginas amarelas contêm as listagens comerciais baseadas nos tipos desses negócios, de maneira organizada por categoria específica ou regiões demográficas. E as páginas verdes são usadas para indicar 2.2 Vantagens Segundo Booth o fato de o SOAP estar sendo implementado em diversas plataformas, faz dele muito funcional, pois isso possibilita a conexão de sistemas 3 os serviços disponibilizados por cada negócio, incluindo as informações técnicas envolvidas na interação com o serviço. da Web”, pegam automaticamente o largo escopo da Web, ao em vez de primeiramente pegar escopo das aplicações orientadas a objetos como faz o CORBA. 5. Corba e Web Services 6. Conclusão A introdução do paradigma de programação orientado a objetos em 1980 prometia fazer dos componentes de softwares reusáveis uma realidade. Apesar de certamente haver alguns ganhos na reutilização de alguns componentes dos softwares, como o da produtividade de programação, a alteração não foi substancial. Na década de 90 se viu tentativas para aumentar a reutilização dos códigos, focadas na idéia de componentes estendidos distribuidamente. Um notável esforço nessa área foi o CORBA (Common Object Request Broker Architecture), como mostra Tidwell [6]. Tidwell explica que o CORBA permite que componentes de software escritos em linguagens diferentes rodando sobre máquinas diferentes, as quais usam sistemas operacionais diferentes, posam se comunicar. Ele complementa afirmando que de certo ponto de vista, os Web services representam uma evolução do CORBA, e que eles são mais convenientes para se usar. Tidwell continua falando da dificuldade encontrada em usar sistemas distribuídos como o Corba, pelo fato de ter que lidar com as diversas linguagens. O que o CORBA fez para eliminar esse problema, foi mover as linguagens dentro de um background, definindo assim o IDL, Interface Definition Language. Para se entender melhor o que é o IDL deve voltar-se para o paradigma orientado a objetos em ambientes distribuídos, onde temos classes, objetos, distribuídos em servidores. Para acessar um desses objetos, é necessário conhecer quais são os serviços que ele oferece, e é isso que o IDL faz, ele descreve os serviços oferecidos pelos objetos. Então, antes de uma aplicação usar um objeto ela deve perguntar a ele quais são os serviços oferecidos. Ele responderá utilizando a linguagem IDL. Steve Vinoski [7] da mais algumas explicações sobre o IDL, ele diz que o IDL é uma linguagem declarativa com uma sintaxe muito parecida com a do C++, e que ele oferece um conjunto básico de tipos de dados, tais como: short, long, float, double and boolean. O fato de o IDL ter uma sintaxe muito parecida com a do C++, faz, indiretamente, com que os usuários tenham que conhecer linguagens vinculadas para usar o CORBA. Tidwell mostra que, havia um caminho em que a linguagem IDL poderia ser substituída por outra, com um nível maior de especificação. Com essa linguagem a comunicação poderia, certamente, ser feita de forma mais simples, pois ela usaria mensagens com significados. Ele ainda conclui que, felizmente os Web Services, os quais fazem uso da linguagem XML, e são definidos como “aplicações modulares auto contidas e auto descritivas que podem ser publicadas, localizadas e invocadas através Algumas das vantagens do protocolo SOAP encontram-se na sua simplicidade e, na facilidade de entendê-lo e implementá-lo. O SOAP comparado com as abordagens anteriores é significativamente menos complexo, facilitando assim a sua ampla aceitação por parte dos desenvolvedores de softwares. Mais alguns pontos significativos, é o fato de ele trabalhar com protocolos padrões de Web, como XML, HTTP e TCP/IP, e permitir que programas escritos em diferentes linguagens, em diferentes plataformas, se comuniquem de forma padronizada. 7. Referências [1] David Booth, W3C Fellow / Hewlett-Packard Hugo Haas, W3C Francis McCabe, Fujitsu Labs of America Eric Newcomer (until October 2003), Iona Michael Champion (until March 2003), Software AG Chris Ferris (until March 2003), IBM David Orchard (until March 2003), BEA Systems, “Web Services Architecture”, W3C Working Group Note 11 February 2004. [2] Richard Hull, “Tools for Composite Web Services: A Short Overview.” Bell Labs Research. Lucent Technologies. [3] Luciano Zanuz, Alexsandro S. Filippetto, Sergio Crespo, “Service-Oriented Architecture: Teoria e Prática”, Programa de Pós-Graduação em Computação Aplicada Universidade do Vale do Rio dos Sinos [4] Erl, T. (2007) “Defining the Web Service with WSDL”, http://www.wsstandards.com/wsdl.asp. [5] H. Gunzer, Introduction to Web Services, Março de 2002. http://bdn.borland.com/java/webtech/0,1418,10018,00.html [6] D. Tidwell, “Web Services—The Web’s Next Revolution,” IBM tutorial, 29 Nov. 2000, www-105.ibm.com/developerworks/ education.nsf/webservices-onlinecourse-bytitle/ BA84142372686CFB862569A400601C18? OpenDocument. [7] Steve Vinoski, “Distributed Object Computing with CORBA”, July/August 1993 Report magazine 4