Skip Navigation Links
Novas Tecnologias
Ferramentas Adicionais
Ferramentas Adicionais


Dica No :
407
Assunto : Visual Basic
Titulo: Alguns mistérios da compatibilidade binária

Gostou do texto ? Vote e dê sua opinião! Pontuação atual :

Translate this page now :






Adicione aos Favoritos!
BlogBlogs Rec6 Linkk Ueba Technorati Delicious DiggIt! StumbleUpon



A compatibilidade binária, necessária no momento da recompilação de componentes em especial em um sistema no qual existam muitos componentes utilizando outros componentes, pode ser um grande problema de gerenciamento.

Garantir que todos os programadores a utilizem e nunca haja uma quebra de compatibilidade ou, se houver em um componente A, por exemplo, que os componentes que usam o componente A sejam recompilados, isso já é um problema.

Mas o mecanismo da compatibilidade binária esconde alguns mistérios a mais. Os programadores sabem que para manter a compatibilidade binária é necessário que não hajam alterações na interface. Porém o Visual Basic é muito amigável com os programadores e permite que mesmo que hajam alterações em parâmetros ou inserção de novos métodos a compatibilidade binária seja mantida. Porém isso tem um custo.

Vamos imaginar um cenário. O componente A utiliza o componente B e o componente B sempre é compilado com a compatibilidade binária. Mas compilar o componente B, que já ganhou muitos novos métodos, com compatibilidade binária tem uma consequencia que muitos programadores não conhece : O ID (GUID) da interface default do component B muda. Ele mantém o ID antigo, mas passa a ter também um novo.

Imagine nesse cenário que a empresa possui um ambiente de desenvolvimento e um para homologação e que no momento os componentes estão funcionando em ambos os ambientes. Se o componente B é recompilado e reinserido no ambiente de homologação ele ganha um novo ID de interface, mas mantém o antigo. Assim sendo, o componente A que encontra-se no ambiente de homologação e que só conhece o ID de interface antigo ainda consegue acessa-lo, porém se o componente A em desenvolvimento for recompilado, seu novo executável (dll) passará a utilizar o novo ID de interface do componente B.

Imaginemos que mais uma vez o componente B foi atualizado em desenvolvimento, mas não foi passado para homologação. O componente A também foi atualizado em desenvolvimento, recompilado, e resolveu-se passa-lo para homologação.
Resultado : Por ter sido recompilado, o componente A aponta para o ID de interface do componente B mais atualizado. Porém ao ser inserido no ambiente de homologação o componente A encontrará um componente B que não possui essa interface. Consequentemente teremos uma falha no relacionamento entre o componente A e o componente B.

Resumindo : Se o componente A for compilado fazendo references para uma versão mais antiga do componente B, ele pode ser perfeitamente utilizado com a versão mais nova, pois esta guarda o ID de interface antigo. Mas se o componente A for compilado com uma versão mais nova do componente B, mesmo que não utilize nenhum recurso novo ele não pode ser utilizado com uma versão mais antiga, pois guardou o ID da nova interface. E tudo isso acontece mesmo com a compatibilidade binária estando sempre marcada.



Nome :
E-mail:
Comentarios :
 
 
Os Últimos Comentários
data: 3/24/2013 5:10:00 PM
nome: fernando
email: fmouravieira1@uol.com.br
comentário:
Grosso modo quais são mais compatíveis dentro da informática?
Gostaria de ter uma idéia assim, como um par perfeito numa comparação.


 1  
Dicas
Dica do Dia
Receba Dicas Por Email
E-mail :  
 


 (help)
Aceito receber informativos do devASPNet, informações de eventos e treinamentos

Veja Quais Informativos Você Receberá

Pesquisar Dicas
Pesquisar Artigos, Dicas e Noticias

Banco de Dados
Algumas Entrevistas
Links Importantes

Búfalo Informática, Treinamento e Consultoria
R. Alvaro Alvim, 37/920 Centro - Cinelândia - Rio de Janeiro Cep: 20031-010
Tel : (21) 2262-1368 (21) 9240-5134 E-mail : Contato@bufaloinfo.com.br