I e codificando os elementos restantes. Vamos lá!

 

A UDDI SOAP API

Como já foi comentado ao longo desta série, todo serviço UDDI é obrigado a disponibilizar uma interface SOAP padrão para acesso programático, são as chamadas UDDI Inquiry API e UDDI Publish API. Neste artigo estaremos utilizando apenas a API de pesquisa, visto que a publicação já fizemos na parte III da série, usando a interface web disponibilizada pelo Windows Server 2003 para esse propósito.

A UDDI Inquiry API é relativamente simples, sendo composta de algumas poucas mensagens cujas descrições resumidas podem ser encontradas a seguir:

·                         find_binding: Usada para localizar vinculações específicas dentro de serviço (businessService) registrado, seu retorno é uma mensagem bindingDetail;

·                         find_business: Usada para localizar informações sobre provedores, seu retorno é uma mensagem businessList;

·                         find_relatedBusinesses: Usada para localizar informações sobre provedores (businessEntity) que são relacionados a uma unidade de negócio específica cuja chave é fornecida, seu retorno é uma mensagem relatedBusinessesList;

·                         find_service: Usada para localizar serviços específicos de um dado provedor (businessEntity) já registrado. Seu retorno é uma mensagem serviceList;

·                         find_tModel: Usada para localizar informações sobre estruturas tModel, ou seja, especificações abstratas de serviços de interesse da comunidade. Seu retorno é uma estrutura tModelList;

·                         get_bindingDetail: Usada para obter detalhes completos sobre vinculações (bindingTemplate) de um dado conjunto de serviços requisitados. Seu retorno é uma mensagem bindingDetail;

·                         get_businessDetail: Usada para obter informações completas sobre provedores (businessEntity), seu retorno é uma mensagem businessDetail;

·                         get_businessDetailExt: Usada para obter informações estendidas sobre provedores (businessEntity), seu retorno é uma mensagem businessDetailExt;

·                         get_serviceDetail: Usada para obter detalhes completos sobre um dado conjunto de serviços registrados, seu retorno é uma mensagem serviceDetail;

·                         get_tModelDetail: Usada para obter detalhes completos sobre um dado conjunto de tModels registrados, seu retorno é uma mensagem tModelDetail.

Maiores detalhes sobre a especificação da UDDI SOAP API podem ser obtidos em www.uddi.org. Bom, para começarmos a desenvolver o restante de nosso cenário precisaremos decidir como faremos esse acesso ao servidor UDDI. Obviamente codificar manualmente os envelopes SOAP e enviá-los, assim como realizar o processo inverso para o recebimento da resposta, é uma opção, vejamos como exemplo a formatação da mensagem find_tModel:

 

  [maxRows="nn"] generic="2.0"

  xmlns="urn:uddi-org:api_v2" >

  [<findQualifiers/>]

  [ []…]

  []

  []

 

Mesmo sabendo que essa é uma opção e que todas as mensagens da referida API são igualmente simples, podemos concluir com facilidade que essa não é a opção mais produtiva. O melhor caminho é buscarmos um framework que já faça esse trabalho repetitivo e de mais baixo nível para nós, de tal forma que possamos nos preocupar apenas com as regras de negócios envolvidas na lógica que queremos empregar.

 

Obtendo o Microsoft UDDI .NET SDK 2.0 Beta 1

Posso dizer que existem vários frameworks para esse propósito, aqui usaremos o Microsoft UDDI .NET SDK 2.0 Beta 1 que pode ser obtido gratuita e rapidamente, visto que o arquivo tem menos de 200Kb, através do link:  www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=542991CF-9056-49FD-BABF-7FF3638EE6B1.

A instalação do SDK é muito simples, basta darmos um duplo clique no arquivo que baixamos e a instalação irá iniciar. A seguir, na tela do assistente, podemos clicar em Next tantas vezes quanto forem necessárias, sem precisarmos especificar nenhuma configuração adicional.

O papel da instalação é basicamente copiar o assembly principal (Microsoft.Uddi.Sdk.dll), uma documentação pré-liminar e alguns exemplos, para a pasta <Program files>\Microsoft UDDI SDK\2.0 Beta.

 

Relembrando nosso cenário

Antes de darmos início à implementação dos componentes restantes de nosso cenário proposto, vamos antes relembrá-lo rapidamente. Através da Figura 1 podemos perceber que a entidade chamada Cache Web Services é a responsável por fazer as solicitações ao servidor UDDI, ela manterá essas informações em um cache interno, que é renovado periodicamente, de modo que possa fornecê-las às aplicações clientes que a solicitar. Essa será a primeira entidade que implementaremos na seqüência.

 

Figura 1. Arquitetura do cenário de exemplo

 

Posteriormente faremos a implementação da aplicação cliente, essa usará as informações obtidas junto ao cache para fazer requisições diretas aos Web Services. Veja que uma aplicação cliente também poderá dar um feedback ao cache notificando-o que uma determinada URL, por ele fornecida, apresentou uma falha. Discutiremos melhor o funcionamento geral desse modelo mais adiante, o objetivo aqui é apenas relembrar o contexto geral.

 

Implementando o cache de Web Services

Os mais atentos já devem estar suspeitando que essa aplicação será escrita em .NET e estão com toda razão, afinal optamos por usar um framework dessa plataforma. Contudo não pensem que isso implicará em restrições ou limitações de interoperabilidade da solução. Embora ela seja uma aplicação .NET e use framework .NET para acessar servidores UDDI, ela disponibilizará um acesso socket’s bem simples de modo a poder ser utilizada por qualquer aplicação, sendo ela escrita em qualquer linguagem, tendo como alvo qualquer plataforma.

Todos os fontes desenvolvidos ao longo da série estão disponíveis para download no site da ClubeDelphi, dessa maneira não pretendo listar toda a codificação aqui, na verdade estarei listando apenas alguns pontos-chave para que possamos comentá-los. A princípio dividi essa aplicação em três partes lógicas distintas que agrupadas darão origem a aplicação como um todo. Vamos então a elas. ...

Quer ler esse conteúdo completo? Tenha acesso completo