Chamar dinamicamente uma orchestration com shape “Call Orchestration”
Usar o shape de “Call Orchestration” nos obriga a adicionar a referencia do projeto que inclui a Orchestration que vai ser chamada. Mas isso tem um grande inconveniente: se 100 projetos usarem essa Orchestration, quando houver alguma atualização, vou precisar excluir as 100 Orchs do Console para conseguir fazer o Update.
Então quais seriam as opções disponíveis chamar a orchestration dinamicamente?
- Publicar a orchestration como Web Service. Problemas: Envolve o IIS, que em caso de grande demanda poderá ficar fora.
- Usar direct port. Apesar de cair um pouco a performance, seria uma boa opção se a orchestration não retornasse nenhuma mensagem, exigindo uma porta de request-response.
- No caso de request-response usar a direct port com self-correlation. Problemas: volta ao problema original de criar uma dependência entre os projetos, pois devemos usar a mesma porta nas duas orchestration.
Pesquisando na internet encontrei em um blog a solução perfeita: uma forma de passar o Assembly da Orchestration de forma dinâmica para o shape “Call Orchestration”.
No blog, ele sugere criar uma Dll que imita uma orchestration, ou seja, fazer uma orchestration customizada sem a parte gráfica. Nessa “orchestration”, recebe dois parâmetros, o Assembly da orchestration e um ArrayList com os parâmetros que deverão ser passados.
Muito inteligente a solução e realmente funciona. No blog o autor coloca um link para baixar o exemplo, com a Dll, orchestrations e exemplo de como utilizar o shape Expression para chamar a orchestration (precisa adicionar referência).
Segue o endereço do blog.
http://www.jonfancey.com/default.aspx?key=2007-03-07T09:08:12Z
Eu também disponibilizei um exemplo, baseado no que ele fez. Segue o link.
http://dynamicinvocation.codeplex.com/
Até a próxima! Espero que tenham gostado. :)
3 Comentários:
Muito interessante o blog!!!
Materiais importantes e disponibilizados em portugues ótima idéia!! Pioneiros com este nivel de conteudo! não deixem o blog morrer!!
abraços
Por favor leiam a segunda parte desse artigo:
http://biztalkbrasil.blogspot.com/2009/11/chamar-dinamicamente-uma-orchestration.html
Esta solução contem um bug quando usado com portas do tipo Request-Response, por favor leiam a Parte 2 deste post.
Postar um comentário