Reflexão em .NET com o Magic xpa

Atributos_Reflection1

Um dos atributos que definem o Magic xpa é ser uma ferramenta para desenvolvimento de soluções de negócio e missão crítica.

Soluções de negócio clássicas, para melhor se situar, seriam os “Sistemas de Gestão” (ou “ERPs”).

Um Sistema de Gestão pode ser simples, complexo, específico, genérico…

Podemos citar como exemplos de sistemas complexos e genéricos, criados com o Magic xpa, o i-Corp, o CIGAM, o eOrganiza, entre outros.

Seja específico ou genérico, um sistema de gestão precisa ser capaz de ‘se adequar’ à necessidade do negócio do cliente (e não o contrário). Senão, não será um produto de sucesso.

Não basta ter uma boa interface de entrada de pedidos, por exemplo. Tem de ser uma interface que contemple todo o processo que aquele cliente, em específico, possui para registrar seus pedidos.

Por isso, um dos pontos fortes que definem a qualidade de um Produto (Sistema) de Gestão é a sua capacidade de Personalização (ou Customização).

São AddOns dentro do produto, que permitem acrescentar regras externas dinamicamente.

É a capacidade de se alterar o sistema, sem realmente mudar o código do sistema, acrescentando regras que complementam, mudam, ou substituem determinados fluxos do processo de negócio.

É ter uma implantação personalizada em cada cliente, usando sempre o mesmo sistema original.

Para os sistemas criados com o Magic xpa isso é uma tarefa (tecnicamente) simples.

Com o recurso Call By Name é muito fácil chamar programas localizados em outros módulos (.ecf), através de seus nomes públicos, informados ao ‘deployment’ Magic xpa como simples ‘strings’ que podem vir de qualquer fonte externa de configuração (totalmente late bind!).

Mas é só com outros módulos Magic xpa  que uma aplicação Magic xpa  pode fazer late bind?

A resposta é não.

O MS.NET possui o recurso de late bind, através de suas classes Reflection.

É a capacidade de se carregar assemblies, instanciar classes e invocar métodos dinamicamente, sendo que seus detalhes e localização não são conhecidos durante a etapa de desenvolvimento. Só no momento da execução (deployment) é que estas informações estarão disponíveis.

Ora, se o Magic xpa é perfeitamente integrado ao MS.NET, e este possui recursos de late bind, então… uma solução Magic xpa pode carregar um assembly .NET dinamicamente sem conhecer os detalhes de sua interface durante a etapa de desenvolvimento!

Observe que não é complicado criar uma rotina/função para executar dinamicamente métodos de classes .NET no Magic xpa:

 

 

ao melhor estilo CALLDLL.

Isto permite fazer com que os sistemas possam executar rotinas .NET que eles não ‘conheciam’ quando foram desenvolvidos:

 

 

 

 

É quase como se não houvesse limites para as soluções desenvolvidas com Magic xpa e MS.NET!

 

NOTA: Se você deseja ver o projeto exemplo que carrega e invoca dinamicamente uma classe .NET, acesse este endereço e baixe-o. O projeto é Magic xpa 2.5b.

 

Manoel Frederico Silva – Gerente de Produto e Evangelista de Tecnologia – Magic Brasil
Manoel Frederico Silva – Gerente de Produto e Evangelista de Tecnologia – Magic Brasil

Para receber os artigos do Blog Magic Brasil em primeira mão no seu email registre-se aqui

Deixe um comentário

O seu endereço de e-mail não será publicado.