Pergunta

Alguém tem algum tipo de experiência com programação dinâmica usando WCF.Por programação dinâmica quero dizer o consumo de WSDL em tempo de execução.Encontrei uma entrada/ferramenta de blog:http://blogs.msdn.com/vipulmodi/archive/2006/11/16/dynamic-programming-with-wcf.aspx

Alguém aqui encontrou boas ferramentas para isso?

Foi útil?

Solução

Este é um dos aspectos mais estranhos do WCF.Você pode criar dinamicamente um channelfactory, mas apenas com um tipo conhecido.

Eu encontrei uma solução que não é perfeita, mas funciona:

Crie uma interface, "IFoo", que contenha um único método, digamos Execute().No seu ESB, crie dinamicamente um ChannelFactory<IFoo> para o endpoint ao qual você deseja se conectar.Defina as propriedades da conexão (URI, etc.).

Agora você pode anexar serviços dinamicamente ao seu ESB, desde que eles sempre implementem a interface "IFoo".

Outras dicas

Já fiz isso há muito tempo com serviços da web SOAP.Havia uma ferramenta no GotDotNet que acho que se tornou Estúdio de serviços web expresso, que tinha um código que inspecionava/analisava um arquivo WSDL e permitia que você o chamasse.

Acho que a suposição é que o WSDL é conhecido no momento da criação do cliente e você não precisa estar conectado em tempo de execução.Se você inspecionar o WSDL em tempo de execução, ainda precisará de algum tipo de lógica para decidir como gerar o proxy.Por que você não pode consumir o WSDL antes do tempo de execução?Os serviços da Web devem ser bastante estáticos, com uma interface que não muda depois de publicada.

Você pode usar o .NET CodeDom para gerar código para executar e usar o serviço da web descrito pelo WSDL.O WSDL pode ser analisado usando as classes XML .NET padrão.

Na verdade, estou pensando em criar um pequeno ESB, onde um usuário pode adicionar um serviço da web para rotear em tempo de execução.Então não consigo adicionar WSDLs estaticamente

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top