Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Revista MSDN Magazine Edição 18 - Use WSDL com vários Web Services
Artigo Originalmente Publicado na MSDN Magazine Edição 18

Clique aqui para ler todos os artigos desta edição
Web Services
Use WSDL com vários Web Services
por Gerrard Lindsay
|
Este artigo discute |
Este artigo usa as seguintes tecnologias: |
|
· Os mistérios dos namespaces XML e a WSDL (Web Services Description Language) · Compartilhamento de tipos entre vários Web services sem precisar escrever código de cliente · A ferramenta WSDL.exe |
.Net framework, C#, xml e web services Download: WSDL.exe (147KB) |
|
Chapéu Web Services |
|
As soluções empresariais geralmente agregam informações de diferentes aplicativos internos e de fontes externas. Os Web services foram adotados rapidamente como um método para consumir de maneira fácil e confiável os diversos dados exigidos por essas soluções. Isso faz com que surjam situações inevitáveis, nas quais uma única solução requer o consumo de vários Web services complementares, que quase sempre compartilham tipos XML específicos ao domínio ou à empresa. Infelizmente, as muitas ferramentas que ajudaram a impelir a crescente adoção dos Web services, bem como as abstrações que eles possibilitam, podem freqüentemente impedir que os desenvolvedores espiem por trás dos panos os padrões XML que compõem a pilha dos Web services. Este artigo oferecerá uma solução que possibilitará o compartilhamento de tipos entre os proxies criados para Web services complementares e, ao mesmo tempo, fornecerá uma oportunidade de examinar a WSDL (Web Services Description Language) e sua interação com as ferramentas de Web services que tanto conhecemos e amamos.
A primeira vez que tentei criar dois Web services complementares para compartilhar um tipo XML comum, tive uma infeliz surpresa. Cada um dos proxies que foram criados em meu aplicativo cliente possuía uma representação de objeto separada para a mensagem comum, em um namespace em C# separado. Precisei copiar cada uma dessas propriedades manualmente da instância de uma classe para outra, o que parecia um artefato desnecessário da implementação atual das ferramentas.
No final das contas, tropecei em uma técnica que permite que você exponha um contrato individual de Web service que encapsula vários endpoints de Web services por meio da criação de um arquivo WSDL com vários vínculos. Essa explicitação define as relações entre os serviços e também tem a vantagem de gerar proxies que podem compartilhar as classes managed que representam as mensagens comuns.
É possível compartilhar os tipos definidos por vários contratos no mesmo namespace editando manualmente os proxies gerados pela ferramenta após o fato. No entanto, a combinação de vínculos de Web service a um único arquivo WSDL permite que o implementador do Web service defina a relação compartilhada, em vez de colocar a carga nos desenvolvedores que criam os clientes para os serviços. Essa técnica também evita que você precise recriar essas alterações na classe do proxy cada vez que alterar o contrato de serviço durante o desenvolvimento.
Este é um post disponível para assinantes MVPou para quem possui Créditos DevMedia. Clique aqui para saber mais!
Gerrard Lindsay
Gerrard Lindsay (glindsay@microsoft.com) é consultor de desenvolvimento de aplicativos para o Microsoft Services na região leste.



