Universal Description, Discovery and Integration (UDDI)
Rafael Andrade
Mestrado em Ciências da Computação, 2002
Laboratório de Integração de Hardware e Software (LISHA)
Universidade Federal de Santa Catarina (UFSC), Brasil, 88040-900.
Fone (0XX48) 331-9498 R. 223, Fax (0XX48) 331-9770.
[email protected]
Resumo
Este trabalho apresenta uma visão geral do protocolo UDDI, (Universal
Description, Discovery and Integration), utilizado na comunicação de aplicações
distribuídas baseadas na Internet, e como as aplicações podem fazer uso de suas
funcionalidades. Registros baseados em UDDI ajudarão empresas a tirarem
vantagem dos serviços Web. Empresas terão um pensamento para descrever serviços
e processos negociáveis em um mundo global, abrindo o ambiente da internet para
expandir esse avanço. Uma barreira para participação rápida em uma economia de
internet global será expandida para qualquer negócio em qualquer lugar. Empresas
serão capazes de organizar suas pastas de serviços em um ambiente controlado.
Introdução
Atualmente
a
web
é
utilizada
principalmente para o acesso interativo a
documentos e aplicações. Na maioria dos casos,
este acesso é feito através de web browsers, por
usuários humanos. No entanto, acredita-se que a
partir do momento em que houver uma forte
integração entre diferentes aplicações na Internet, o
uso da web poderá ser maximizado.
Quando pensamos em computadores
móveis, cuja capacidade de processamento,
armazenamento e transmissão de dados é limitada,
esta necessidade de integração é ainda maior. Por
exemplo, tendo acesso a diferentes aplicações
distribuídas na web, computadores móveis
poderiam solicitar uma série de serviços que
executam na rede fixa, recebendo o resultado de
seu processamento. Como exemplos podem ser
citados serviços de impressão de arquivos,
armazenamento de documentos e conversão de
formatos.
No entanto, para que uma boa relação
custo-benefício seja alcançada, é necessário que
esta integração entre aplicações seja efetuada de
forma padronizada. Desta forma uma vez
desenvolvida a integração de uma aplicação, ela
estará pronta para ser acessada por qualquer outra,
através de um padrão único. Sendo assim o
desenvolvimento específico e artesanal de
integração de pares de aplicações é evitado,
gerando uma grande economia de gastos no
processo de integração como um todo.
Um Web Service pode ser definido como
uma aplicação de software ou um dispositivo de
hardware que pode ser acessado ou utilizado
através da web. Cada Web Service implementa
uma ou mais interfaces de serviço descritas através
de linguagens específicas. Estas interfaces
descrevem o conjunto de operações às quais o
serviço dá suporte, contendo toda a informação
necessária para interação com ele, incluindo o
formato das mensagens trocadas, o protocolo de
transporte utilizado e sua localização. Esta
interface esconde os detalhes de implementação do
serviço,
permitindo
sua
utilização
independentemente da plataforma de hardware ou
software na qual ele é implementado ou da
linguagem na qual ele é escrito.
Arquitetura Conceitual de Web
Services
A arquitetura padrão da tecnologia de Web
Services pode ser descrita em diversas camadas.
Para as diferentes operações de publicação,
descoberta e invocação de serviços são necessárias
diversas camadas que compõem a denominada
“Pilha de Web Services”, ilustrada na figura 1. As
camadas superiores são construídas utilizando
funcionalidades disponibilizadas pelas camadas
inferiores. As colunas no lado direito da figura
ilustram requisitos necessários em cada um dos
níveis da pilha, enquanto o texto da esquerda
representa as tecnologias e padrões que são
utilizados na implementação de em cada uma das
camadas.[2]
Para que Web Services possam ser
invocados por um cliente remoto, eles devem ser
acessíveis através da rede. Desta forma, na base da
pilha está a camada de rede. Na maioria das vezes
é interessante que os serviços sejam acessados
através da Internet, sendo então necessária a
utilização de protocolos amplamente difundidos na
grande rede. Devido a sua onipresença o protocolo
HTTP é o principal protocolo no nível de rede
utilizado na implementação de Web Services. No
entanto, outros protocolos também podem ser
utilizados como, por exemplo, SMTP ou FTP. Em
caso de implementação de Web Services em redes
locais, serviços confiáveis de trocas de mensagens
como, por exemplo, IBM MQSeries também
podem ser utilizados.
A segunda camada é a de troca de
mensagens baseadas em XML. O protocolo SOAP
é o escolhido para esta camada devido
principalmente ao seu mecanismo padronizado de
envelope de mensagens centradas em documentos
ou chamada remota de procedimentos (RPC).
Além disso, o protocolo possui uma maneira
padronizada de codificação, isto é, de
transformação de tipos de dados específicos a
diferentes linguagens de programação aos dados
necessários para a mensagem.
A próxima camada da pilha é a de
descrição de serviços. Nesta camada o padrão
utilizado é o chamado WSDL. Este padrão é
necessário para que se possa interoperar Web
Services. WSDL define a interface de comunicação
com o serviço assim como a dinâmica de interação
com este.
Uma arquitetura composta por estas três
primeiras camadas é o mínimo necessário para
possibilitar a utilização de qualquer Web Service.
Enquanto estas camadas apresentam as tecnologias
de interoperabilidade entre serviços, as duas
próximas camadas, de publicação e de descoberta
de serviços, podem ser implementadas através de
uma gama variada de soluções.
Qualquer ação que torna um documento
WSDL disponível para um cliente, em qualquer
estágio do ciclo de vida deste, é qualificada como a
publicação de um serviço. O exemplo mais simples
e estático de implementação desta camada é o
envio de um documento WSDL diretamente ao
cliente. Esta forma de publicação, chamada de
publicação direta, pode simplesmente utilizar o email como veículo de comunicação. O mecanismo
de publicação direta é bastante útil para aplicações
que são ligadas estaticamente a serviços. De
maneira alternativa, o provedor do serviço pode
publicar o documento WSDL em um broker que
poderá ser acessado posteriormente por clientes.
Neste broker, a principal tecnologia utilizada é o
UDDI, que pode ser visto como o padrão para
registrar, descrever e localizar Web Services
utilizando uma base de registro compartilhada
entre os diferentes clientes.
Figura 1 Pilha de protocolos da arquitetura
de Web Services
Uma vez que serviços não podem ser
descobertos sem terem sido publicados, a camada
de descoberta de serviços depende da camada de
publicação. Assim como acontece para a
publicação, um grande número de abordagens pode
ser utilizado nesta camada. Qualquer mecanismo
que permite que o cliente tenha acesso a descrição
do Web Service e a torna disponível para a
aplicação desejada em tempo de execução, pode
ser qualificado como um mecanismo de descoberta
de serviços. O exemplo mais simples e estático de
descoberta é aquele no qual o cliente recupera o
documento WSDL a partir de um arquivo local. No
entanto, um Web Service pode ser descoberto em
tempo de projeto ou de execução, através da busca
em uma base de registro comum ou broker.
A criação e gerência desta base de registro
e descoberta, compartilhada entre os diversos
clientes, são alguns dos pontos críticos do projeto
de Web Services. Isto se deve à necessidade de
acesso a esta base por diferentes clientes com
capacidades de hardware e software diferentes.
Desta forma, o protocolo UDDI vem sendo
utilizado como tecnologia para a implementação
desta base, principalmente por ser baseado em
padrões abertos e ubíquos. O protocolo UDDI será
apresentado com maiores detalhes na próxima
seção.
A implementação de um Web Service pode
ser encarada como a de um componente de
software. Desta forma, é natural construir novos
serviços compondo serviços pré-existentes.
Composições de serviços podem desempenhar
diferentes papéis. Dentro de um provedor de
serviços, diferentes Web Services podem colaborar
de forma a apresentar uma interface única para o
público. Da mesma forma, diferentes serviços de
diferentes provedores podem colaborar de forma a
oferecer serviços mais completos ou implementar
tarefas de integração. De forma alternativa um
gerenciador de workflow pode ser utilizado
chamando cada Web Service que participa de um
processo específico. A camada mais alta da pilha,
denominada camada de fluxo entre serviços, é a
responsável por esta tarefa, descrevendo como
comunicações entre serviços, colaboração e fluxo
de dados são implementadas. A tecnologia
emergente para a especificação e implementação
desta camada está baseada na linguagem WSFL
(Web Services Flow Language). Neste trabalho
esta linguagem não será discutida com maiores
detalhes, uma vez que esta é, dentre todas as
tecnologias utilizadas na implementação de Web
Services, a menos estabelecida e validada.
Para que Web Services possam ser utilizados
em aplicações reais e escaláveis alguns requisitos
de infra-estrutura devem ser oferecidos por cada
uma das camadas da pilha. Dentre estes podemos
citar segurança, gerenciamento e qualidade de
serviço. As soluções adotadas em cada uma das
camadas podem seguir abordagens diferentes, e
atualmente não existem padrões específicos que
possam ser utilizados para que estes requisitos
sejam alcançados. Acredita-se que, com o passar
do tempo e conseqüente maturidade da tecnologia
de Web Services, venham a surgir novos padrões
para a implementação destes requisitos.
Universal Description, Discovery and
Integration (UDDI)
A especificação do padrão Universal
Description, Discovery and Integration (UDDI)
define uma maneira de publicar e descobrir
informações relativas a Web Services. Trata-se de
uma proposta de um diretório universal de registro
de Web Services, onde seriam encontradas
informações sobre as empresas fornecedoras de
serviços. A primeira vista o processo
de
descoberta de Web Services pode parecer simples.
Na verdade, uma vez que se sabe qual o provedor
de serviços que oferece um conjunto de operações
agrupadas em serviços, o que mais é preciso
descobrir? No entanto, quando é necessário
descobrir quais provedores oferecem os serviços
desejados, a capacidade de descobrir as respostas
torna-se muito mais complicada.
Com a intenção de resolver este problema,
UDDI usa uma abordagem baseada em uma base
de registros distribuídos de provedores de serviços
e suas descrições de serviços, implementada
utilizando
um
formato
XML
comum.
Conceitualmente, a informação que faz parte da
base de registro UDDI consiste de três
componentes:
•
Páginas brancas: contêm o endereço,
pessoas de contato e outros identificadores
relativos a um provedor de serviço;
•
Páginas amarelas: incluem categorizações
industriais baseadas em taxonomias
padrão;
•
Páginas verdes: contêm informações
específicas sobre serviços disponibilizados
pelo provedor.
Na maioria dos casos programas e
desenvolvedores usam a base de registros UDDI
para localizar informações sobre serviços. No caso
específico de programadores a utilização está
focada na preparação de sistemas compatíveis com
Web Services anunciados ou para descrever seus
próprios serviços que serão utilizados por
terceiros.[1]
A especificação do UDDI descreve uma
nuvem conceitual de Web Services e uma interface
programável que define um framework simples
para a descrição de qualquer tipo de serviço. Esta
especificação consiste em um esquema XML para
a estrutura de dados e um outro que contém uma
API que define um protocolo para registro e
descoberta de serviços.
O esquema XML que representa os dados em
um documento UDDI possui quatro tipos de dados
principais, conforme ilustrado na figura 2:
Figura 2 Informação no esquema XML do UDDI
•
businessEntity:
contém
informações
relativas à entidade que publica
informações sobre uma família de
serviços;
•
businessService: contém informações
descritivas sobre um serviço particular;
•
bindingTemplate: contém informações
técnicas sobre um serviço e especificações
relativa s a sua construção;
•
tModel:
contém
descrições
a
especificações
para
serviços
ou
taxonomias. Na verdade, tModels são
utilizados como interfaces que são
implementadas por bindingTemplates.
Um outro tipo de elemento que também faz
parte do esquema UDDI é o Publisher Assertion
que possui informações relativas a relacionamento
entre duas entidades provedoras de serviços.
Estes tipos de dados fazem parte das
requisições e chamadas definidas na UDDI API
Schema. Esta API define aproximadamente 25
requisições e 15 respostas formatadas em XML
utilizadas na descoberta e publicação de serviços
em bases de registro UDDI. Exemplos de
requisições podem ser find_service, find_tModel,
save_service ou save_business.
Discussão e Conclusões
A tecnologia de Web Services surgiu há
poucos anos e vem se firmando como o padrão da
indústria para a interoperabilidade de serviços
distribuídos. No entanto, ainda existe pouca
pesquisa no meio acadêmico relacionada a esta
tecnologia. O principal fator para a forte aceitação
de Web Services pela indústria é o fato dele ser
baseado em protocolos abertos que utilizam
tecnologias amplamente estabelecidas na Internet,
como HTTP e XML.
A interoperabilidade de Web Services é
realizada em alto nível permitindo que clientes e
serviços sejam fracamente acoplados, separando
claramente a interface da implementação. A
utilização de Web Services em clientes móveis
torna-se especialmente interessante uma vez que
grande parte dos serviços necessários a eles pode
ser localizada na rede fixa. Os clientes podem
então fazer buscas dinâmicas por serviços
utilizando bases de registro UDDI, conectar-se a
eles e em seguida fazer solicitações utilizando o
protocolo SOAP. Apesar destas vantagens e de
muitas promessas da indústria relativas a Web
Services específicos para acesso de computadores
móveis, atualmente não existem muitos serviços
deste tipo implementados.[4]
Referências
[1] D. Ehnebuske, C. Riegen and D. Rogers
(editors), “UDDI Version 2.0 Data Structure
Specification,”
(http://www.uddi.org/pubs/DataStructureV2.00-Open-20010608.pdf)
[2] H. Kreger, Web Services Conceptual
Architecture, May 2001, (http://www4.ibm.com/software/solutions/webservices/pdf/
WSCA.pdf)
[3] UDDI Version 2.0 Operator’s Specification
http://www.uddi.org/pubs/OperatorsV2.00-Open-20010608.pdf
[4] www.w3c.org
Download

Universal Description, Discovery and Integration (UDDI