Alternativas para Integração do V-ART com o SIlverlight

Olá a todos que acompanham o projeto V-ART. Como dito no meu primeiro post aqui, um dos meus objetivos dentro do V-ART é realizar um gadget para a sidebar do Windows Vista usando Silverlight integrado com o V-ART. Também mencionei duas alternativas: usar recursos de interoperabilidade para chamar o código C++ unmanaged a partir de código managed usado para aplicações de Silverlight ou então uma reescrita total do V-ART usando uma linguagem do CLR. Esse post vai discutir essas duas alternativas.

Reescrita do Código em V-ART

Essa alternativa é de longe a mais simples do ponto de vista técnico. Entretanto é, muito provavelmente, a mais custosa. A tradução do código, além de ser um trabalho braçal e demorado, também pode apresentar uma série de complicações em recursos da linguagem original que não tenha um equivalente exato na linguagem para a qual se deseja fazer a tradução.

Além desses problemas, também vale ressaltar que reescrever a V-ART em outra linguagem implica em fazer um fork do projeto. Como a biblioteca ainda tem seu desenvolvimento ativo seria um esforço adicional manter os dois códigos atualizados. Cada atualização e novo recurso que aparecesse em cada versão da biblioteca teria que ser feito na outra também.

Interoperabilidade de Código Managed e Unmanaged

Usar o código do V-ART direto de uma aplicação Silverlight seria a alternativa mais rápida e prática. Afinal, a biblioteca já está escrita, seria apenas uma questão de fazer com que ela se comunique com a aplicação. A parte boa é que isso é possível de se fazer. A parte ruim é que não é tão simples assim. E é justamente o que tenho estudado nessas últimas semanas.

Para tentar descobrir a melhor alternativa li um artigo da MSDN sobre justamente Interoperabilidade entre código managed e unmanaged. O artigo, como o nome diz, é introdutório sobre o assunto e ele fala sobre 3 tecnologias que podem ser usadas para realizar a interação entre os dois tipos de código. Entre essas 3 alternativas, a mais apropriada para o trabalho parece ser o C++ interop, também conhecido como IJW (It Just Works). Apesar do nome, não é tão simples assim de fazer funcionar.

O caminho a ser seguido primeiro será esse da interoperabilidade. O próximo passo é pesquisar mais a fundo as maneiras de conseguir isso. Algumas tentativas com o IJW já foram feitas, mas é um tanto confuso de trabalhar com ele devido à grande quantidade de novos conceitos e novas siglas introduzidas. Assim que novas informações forem sendo descobertas serão testadas e descritas por aqui. Um glossário esplicando cada um dos conceitos também pode vir a ser útil nesse trabalho e em breve começarei a escrever algo do gênero.

Last edited Jul 11, 2008 at 9:40 PM by kcfelix, version 1

Comments

No comments yet.