Descrevendo, descobrindo e integrando Web Services - UDDI
Como vimos até agora, o SOAP transporta, o WSDL descreve, mas onde vamos encontrar os serviços? O Universal Description, Discovery, and Integration (UDDI) é uma especificação técnica que tem como objetivo descrever, descobrir e integrar Web Services. Segundo a Organization for the Advancement of Structured Information Standards, é um elemento central do grupo de padrões que compõe a pilha de componentes dos serviços web.
No momento que construímos um Web Services, necessitamos que os serviços sejam acessados em algum lugar da Internet por um cliente. Uma das maneiras é fazer com que a aplicação cliente conheça a URI do serviço.
Gunzer define UDDI como um padrão desenvolvido para fornecer um diretório de busca para os negócios e seus serviços. Tem como objetivo ser um mediador do serviço, permitindo que os clientes requisitantes encontrem um fornecedor do serviço apropriado.
Foi lançado ao mercado em setembro de 2000, com a versão UDDI 1.0. Anunciado pela Microsoft, IBM e Ariba, atualmente o UDDI representa tanto uma especificação proposta para padronização, quanto um consórcio de apoiadores ao projeto (UDDI.org). Encontra-se no momento na versão 3.0, declarada oficialmente como padrão em fevereiro de 2005, desde aí, sem muitas modificações.
Podemos comparar o UDDI com uma lista telefônica, da seguinte maneira:
. Páginas Brancas: contêm informações sobre nomes, endereços, números de telefone, além de outras informações sobre os fornecedores do serviço.
. Páginas Amarelas: contêm listagens comerciais baseadas nos tipos desses negócios, de maneira organizada por categoria específica ou regiões demográficas.
. Páginas Verdes: são usadas para indicar os serviços oferecidos por cada negócio, incluindo todas as informações técnicas envolvidas na interação com o serviço. Resumindo, explica como fazer a comunicação com eles.
Ao passar dos anos, chegou-se à conclusão que os serviços web eram muito utilizados internamente nas empresas, de maneira privada. O que fez com que a versão 3.0 surgisse focada na possibilidade de permitir implementações com restrições as infra-estruturas da empresa.
Tabela: Tipos de registros previstos na especificação UDDI (3.0)
Tipo de Registro
|
Descrição
|
Analogia com a Web
|
Privado
|
É um registro interno, protegido por um firewall, isolado da rede pública. O acesso as tarefas administrativas e aos dados do registro é de forma segura. Os dados não são compartilhados com outros registros.
|
Intranet
|
Semi-Privado
|
É um registro desenvolvido dentro de um ambiente controlado. O acesso para o mundo externo é controlado e é compartilhado apenas com sócios externos confiáveis. Tarefas administrativas podem ser delegadas a partes confiáveis. Podem ser compartilhados dados com outros registros de um modo controlado.
|
Extranet
|
Público
|
Da perspectiva de um usuário final, um registro público parece ser um serviço em uma “nuvem”. Ainda que possam ser efetuadas funções administrativas de forma segura, o acesso aos dados dos registros é essencialmente aberto e público. Os dados podem ser compartilhados ou transferidos para outros registros.
|
Site Web
|
A figura abaixo apresenta os possíveis relacionamentos entre os registros armazenados pelo UDDI versão 3.

Figura 01: Diagrama de interação dos registros UDDI versão 3.
Resumidamente, o UDDI é uma interface web, que define serviços que possibilitam a descrição e descoberta de negócios, organizações e outros provedores de serviço, disponibilizando o acesso e o gerenciamento destes serviços. O UDDI é baseado em vários outros padrões de indústria já estabelecidos, como o HTTP, XML, XML Schema (xsd), SOAP e WSDL.
Estrutura de uma publicação UDDI
Como as demais tecnologias, o UDDI é baseado na tecnologia XML, a qual fornece uma plataforma-neutra de dados e permite descrever relações hierárquicas de um modo natural.
“O XSD (XML Schema) foi escolhido por causa do seu suporte a um rico conjunto de tipos de dados e a sua habilidade de facilmente descrever e validar informações baseadas nos modelos representados nos schemas. O UDDI XSDS define alguns tipos centrais de centro de informação que provê os tipos de informação que os usuários e aplicações precisariam conhecer por usar um serviço de Rede particular. Junto, estes formam um modelo básico de informação e um framework para interação de registros UDDI”
A estrutura do registro UDDI define uma hierarquia através dos elementos:
. businessService: elemento filho do elemento businessEntity, descreve a função de negócio de um serviço. Indicadores únicos que indicam as categorias as quais o Web Service pertence (businessKey, serviceKey).
01 <businessService serviceKey="uuid:D6F1B765-BDB3-4837-828D-8284301E5A2A"
02 businessKey="uuid:C0E6D5A8-C446-4f01-99DA-70E212685A40"> 03 <name>Oi Web Service</name> 04 <description>Eh um oi Web service</description> 05 <bindingTemplates> ... </bindingTemplates> 06 <categoryBag /> 07 </businessService> |
. businessEntity: representa o provedor de um Web Service. Apresenta dados de contato, categoria, serviços oferecidos, identificadores de negócio de uma determinada organização / empresa.
01 <businessEntity businessKey="uuid:C0E6D5A8-C446-4f01-99DA-70E212685A40"
02 operator="http://www.ibm.com" authorizedName="John Doe"> 03 <name>Cia Oi</name> 04 <description>descricao</description> 05 <contacts> 06 <contact useType="general info"> 07 <description>Informacoes gerais</description> 08 <personName>Mauricio</personName> 09 <phone>0123-4567</phone> 10 <email>email@email.com</email> 11 </contact> 12 </contacts> 13 <businessServices> ... </businessServices> 14 <identifierBag> 15 <keyedReference TModelKey="UUID:8609D82E-FE1F-4E5B-B203-3CB14AD31423" 16 name="D-U-N-S" value="123456" /> 17 </identifierBag> 18 <categoryBag> 19 <keyedReference TModelKey="UUID:C0C9FEF3-173F-414D-8A2B-5004328E5BB2" 20 name="NAICS" value="112343" /> 21 </categoryBag> 22 </businessEntity> |
. bindingTemplate: referencia os detalhes técnicos do serviço, interface ou API.
01 <bindingTemplate serviceKey="uuid:D6F1B765-BDB3-4837-828D-8284301E5A2A"
02 bindingKey="uuid:C0E6D5A8-C446-4f01-99DA-70E212685A40"> 03 <description>Hello World </description> 04 <accessPoint URLType="http">http://localhost:8080</accessPoint> 05 <TModelInstanceDetails> 06 <TModelInstanceInfo TModelKey="uuid:EB1B645F-CF2F-4868705F5904"> 07 <instanceDetails> 08 <overviewDoc> 09 <description>Descricao WSDl</description> 10 <overviewURL>http://localhost/helloworld.wsdl</overviewURL> 11 </overviewDoc> 12 </instanceDetails> 13 </TModelInstanceInfo> 14 </TModelInstanceDetails> 15 </bindingTemplate> |
. tModels: qualquer conceito abstrato pode ser registrado, como taxonomia, transportes, assinaturas digitais, etc.
01 <TModel TModelKey="uuid:xyz987..."
02 operator="http://www.ibm.com" authorizedName="John Doe"> 03 <name>Oi Interface Port Type</name> 04 <description>descricao</description> 05 <overviewDoc/> 06 <overviewURL>http://localhost/helloworld.wsdl</overviewURL> 07 </overviewDoc> 08 </TModel> |
“Em muitos casos, o tModel contém o arquivo WSDL que descreve a interface SOAP do serviço web, mas o tModel é flexível o suficiente para descrever quase todo tipo de serviço”.
Na figura abaixo, a estrutura de um UDDI.

Figura 02: Estrutura UDDI
As versões 2 e 3 do UDDI adicionaram dois tipos para facilitar a afiliação dos registros, são:
. publisherAssertion: cria o relacionamento entre entidades no registro.
. Subscription: localiza mudanças para uma lista de entidades.
A figura abaixo apresenta graficamente o modelo de dados do UDDI.

Figura 03: Modelo de dados UDDI.
Concluindo, tipicamente fornecedores de serviços de UDDI operam um serviço conhecido como UDDI Business Registry (UBR), o qual representa um diretório público de serviços disponíveis, e pode ser acessado para publicar e solicitar informações sobre um Web Service.
Bibliografia
[GUNZER2002] H. Gunzer, Introduction to Web Services, Março de 2002. http://bdn.borland.com/java/webtech/0,1418,10018,00.html
[HENDRICKS2002] HENDRICKS, M.; GALBRAITH, B., et al., Profissional Java Web Services. Rio de Janeiro: Alta Books, 2002.
[OASIS 2001] Organizatuion for the Advancement of Structured Information Standards, 2001. SAML specification. http://lists.oasis-open.org/archives/securityservices/200106/pdf00002.pdf
Nenhum comentário:
Postar um comentário