sábado, 2 de junho de 2012

Descrevendo, descobrindo e integrando Web Services - UDDI


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 (businessKeyserviceKey).
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