Para garantir o desacoplamento dinâmico entre o provedor e o consumidor dos serviços, o barramento precisa de uma nova capacidade que podemos chamar de “Catálogo ou Registro”. Esta capacidade garante que o consumidor possa descobrir as informações mais relevantes dos serviços. O pacote “BizTalk ESB Toolkit 2.0” vem com vários provedores de resolução: como o UDDI, WS-MEX, BRE, XPATH e o uso de registros estáticos. A melhor solução a escolher será definida de acordo com a aplicação. O Serviço de Resolução fornece uma interface web service para uso de aplicativos externos. Para consumir um serviço, você precisa disponibilizar no seu código um “ResolverString”. Este “ResolverString” define o tipo de provedor e o nome do serviço do qual você quer resgatar informações. Baseado neste cenário, o “ResolverString” vai ser processado e irá retornar o resultado para o consumidor com as descrições do serviço. Exemplo de um “ResolverString” com UDDI 3.0: “UDDI3:\\serverUrl=http://localhost/uddi;serviceKey=uddi:esb:purchaseorder” De modo geral, podemos definir o seguinte cenário: o consumidor quer acessar um serviço de cadastramento de usuários, mas ele não tem as informações necessárias para estabelecer uma conexão direta. O consumidor precisa mandar uma requisição para o serviço de resolução, que vai retornar as informações disponíveis no catálogo de serviços. É importante mencionar que este serviço não passa pela mensageira do servidor BizTalk Server, mas pode ser usado diretamente como descrito ou dentro de um fluxo de interações.
Para garantir o desacoplamento dinâmico entre o provedor e o consumidor dos serviços, o barramento precisa de uma nova capacidade que podemos chamar de “Catálogo ou Registro”. Esta capacidade garante que o consumidor possa descobrir as informações mais relevantes dos serviços. O pacote “BizTalk ESB Toolkit 2.0” vem com vários provedores de resolução: como o UDDI, WS-MEX, BRE, XPATH e o uso de registros estáticos. A melhor solução a escolher será definida de acordo com a aplicação.
O Serviço de Resolução fornece uma interface web service para uso de aplicativos externos. Para consumir um serviço, você precisa disponibilizar no seu código um “ResolverString”. Este “ResolverString” define o tipo de provedor e o nome do serviço do qual você quer resgatar informações. Baseado neste cenário, o “ResolverString” vai ser processado e irá retornar o resultado para o consumidor com as descrições do serviço.
Exemplo de um “ResolverString” com UDDI 3.0: “UDDI3:\\serverUrl=http://localhost/uddi;serviceKey=uddi:esb:purchaseorder”
De modo geral, podemos definir o seguinte cenário: o consumidor quer acessar um serviço de cadastramento de usuários, mas ele não tem as informações necessárias para estabelecer uma conexão direta. O consumidor precisa mandar uma requisição para o serviço de resolução, que vai retornar as informações disponíveis no catálogo de serviços. É importante mencionar que este serviço não passa pela mensageira do servidor BizTalk Server, mas pode ser usado diretamente como descrito ou dentro de um fluxo de interações.
Descrição:
Exemplo de Código com enpoint : (http://server/ESB.ResolverServices.WCF/ResolverService.svc)
O serviço de resolução executa este ruleset e traz novamente o valor que o Transformar serviço requer para a conclusão (Valor Mapa).
2: ("ResolverEndpoint");
3: try
4: {
5: rClient.ClientCredentials.Windows.AllowedImpersonationLevel =
6: System.Security.Principal.TokenImpersonationLevel.Impersonation;
7: string resolverString = @"BRE:\\policy=Teste.transformacao;version=1.0;useMsg=";
8: Resolver[] resolverCollection = rClient.Resolve(resolverString);
9: foreach (Resolver resolver in resolverCollection)
10: {
11: if (resolver.Name == "Resolver.TransformType")
12: {
13: mapa = resolver.Value;
14: break;
15: }
16: }
17: rClient.Close();
18: }
19: catch (System.ServiceModel.CommunicationException){client.Abort();}
20: catch (System.TimeoutException) { client.Abort(); }
21: catch (System.Exception) { client.Abort(); throw; }
22: Console.WriteLine("Calling ESB Guidance transform service");
23: string resultString = client.Transform(xmlString, mapa);
24: Console.WriteLine(resultString);
25: client.Close();
26: }
27: catch (System.ServiceModel.CommunicationException){client.Abort();}
28: catch (System.TimeoutException) { client.Abort(); }
29: catch (System.Exception) { client.Abort(); throw; }
30: Console.WriteLine("done");
31: Console.ReadLine();
Na semana que vem, vamos falar mais sobre as outras capacidades do “BizTalk ESB Toolkit 2.0”
Microsoft BizTalk ESB Toolkit 2.0 Ref.: http://msdn.microsoft.com/en-us/dd876606.aspx
O pacote está disponível no link a seguir:
Download BizTalk ESB Toolkit 2.0 Ref.: http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=bc86cf1e-ef29-4b19-95f7-388f64555090
Artigo MSDN: http://msdn.microsoft.com/pt-br/library/dd920288.aspx
Abraço Markus