quinta-feira, 7 de maio de 2009

Engenharia reversa em .Net é com o Lutz Roeder Reflector

Antes de mais nada, o conceito:
A engenharia reversa é uma técnica usada para obter o código fonte de um software a partir do arquivo já compilado.
No caso dos softwares criados em .Net, este é um processo até simples usando Reflection*.

Uma ferramenta free que faz isso de forma magistral é o Lutz Roeder Reflector. Esta ferramenta foi criada por um entusiasta de .Net e de tão boa foi comprada pela Red-Gate. A Red-Gate então criou uma versão paga mas manteve uma versão free para benefício da comunidade, como ela própria a denomina.

Para quem lida com tecnologias novas feitas com .Net, como versões beta, componentes de terceiros, bibliotecas com documentação precária entre outros, uma ferramenta que permita ver o que essas tecnologias estão fazendo por "baixo do pano" se torna indispensável. Inclusive, é possível reverter o código-fonte do próprio .Net Framework.

Um período que usei ele intensamente foi quando em 2007 estávamos desenvolvendo uma solução para um cliente utilizando o Workflow Foundation em versão beta e que entraria em homologação ainda na versão RTM. Como a documentação era pouca, nada como investigar as entranhas das bibliotecas para entender seu real funcionamento. Atualmente, "brinco" olhando as dlls do Sharepoint e do próprio .Net Framework.

Além disto, para quem está começando com .Net, nada como aprender olhando o código-fonte dos outros, ou melhor, da Microsoft. Por exemplo, digamos que você vai criar um TextBox redondo, nada como dar uma espiada no código-fonte do TextBox da Microsoft para aprender algumas boas práticas na criação de um componente. Veja imagem a seguir.


E como toda linguagem de programação .Net segue o padrão definido pelo Common Language Specification (CLS) é possível olhar o código na linguagem que você está mais acostumado (VB.NET, C++, Delphi, etc) ou até em Intermediate Language (IL) para quem gosta de sofrer.

Os recursos que acho mais interessante no Lutz são:
1) Multi-linguagens
2) Interface simples e prática.
3) Navegação pelo próprio código-fonte. Por exemplo, ao clicar no nome de uma classe o código fonte desta classe é exibido.
4) É possível exportar o código-fonte para arquivos em um projeto do Visual Studio.

Informações sobre o Lutz Reflector:
Aproveite esse utilitário com responsabilidade e respeito à propriedade intelectual!

Veja também:
* Artigo"Entendendo o Reflection"

terça-feira, 5 de maio de 2009

Webcasts de alto nível - MIX09

Para quem curte tecnologia web, quer sempre estar a par das novidades e de preferência vindo das melhores fontes, nada como assistir os vídeos do MIX. O MIX é um evento da Microsoft com foco em tecnologias para o desenvolvimento de sites e aplicativos web. O evento ocorre nos Estados Unidos e no mês de março deste ano, completou sua quarta edição trazendo como palestrantes os gurus de diversas tecnologias que utilizamos no desenvolvimento web. Os vídeos, em inglês, podem ser baixados no site http://videos.visitmix.com/.

Há muita informação lá, mas quero destacar dois assuntos que você não deveria deixar de ver: Velocity e Silverlight. A propósito, Silverlight dominou os assuntos neste Mix, assim como foi na edição brasileira do TechEd 2008. 2009/2010 promete ser um ano fantástico pro Silverlight e de quebra para nós profissionais de tecnologias web.

Agora, é esperar o PDC 2009 para ver "bombar" o Visual Studio Team System 2010.

Até mais...

Abertura do blog

Olá.

Estou abrindo este blog para compartilhar um pouco do meu envolvimento com o desenvolvimento de software. O foco principal é tecnologias Microsoft como C#, .Net, Sharepoint, workflow, certificação, Xbox 360, Live Services entre outros assuntos tecnologicos como IPhone e Google services.

O nome do blog surgiu devido à uma iniciativa tomada há alguns anos atrás junto com um pessoal aqui de Blumenau - SC, que foi de montar um grupo de .Net filiado ao INETA. Infelizmente, devido a N fatores nosso grupo não vingou, e hoje está resumido a um forum usado mais para networking. Quem quiser participar, acesse http://br.dir.groups.yahoo.com/group/bludotnet/.

Para saber um pouco mais sobre quem sou, acesse meu perfil na barra lateral do blog.

No mais, seja bem vindo ao meu blog, espero que os posts que virão lhe sejam úteis e fique a vontade para interagir!

Abraços.

Rafael Leonhardt