Escassez de documentação, entenda como as coisas funcionam
Publicado em: domingo, 3 de set de 2017
Tags: IL

Se você não é capaz de entender uma implementação lendo código, é bom começar. Mesmo que por hobby, ler código lhe fará entender melhor como as coisas funcionam, ou pelo menos lhe dar mais opções na hora de avaliar alguma implementação. Há inúmeros projetos Open Source bem documentados, no entanto quando se depara com algo recente, a escassez de documentação é uma realidade dolorosa.

Ao encontrar um projeto relevante, provavelmente buscará um tutorial, ou algo que te aproxime do entendimento, mas nem sempre esse tipo de material está disponível. Há momentos que você quer algo específico e também não encontra conteúdo indexado no google. Há momentos em que você só quer entender como um pedaço do projeto foi feito, para entender como alguns problemas são resolvidos, quais padrões foram usados, enfim, como foi feito. Ler código é importantíssimo.

Na hora de usar uma nova biblioteca ou framework, você pode até usar a tentativa-e-erro, mas acho que posso te ajudar a ser mais assertivo, principalmente quando falamos de .NET, seja no .NET Framework, .NET Standard ou .NET Core. Então vamos aos conceitos necessários para entender o que quero propor:

IL

Os assemblies .NET são feitos de IL, intermediate language, uma linguagem agnóstica resultante da compilação de fontes .net. Seja C#, VB ou F#, seus compiladores geram IL para assim ser executado pelos runtimes, independente da tecnologia. Há exceções que não comuns no dia-a-dia, principalmente quando falamos em .NET Native. Fato é que enquanto IL, você consegue fazer engenharia reversa, e assim com algumas ferramentas simples, você pode entender esses assemblies olhando seu código.

PDB

O processo de build pode ou não gerar PDB’s de acordo com suas configurações, os PDB’s são databases de mapeamento que guiam o de-para entre fontes e IL, permitindo o debug step-by-step, mas para que isso funcione, você precisa do fonte original do projeto.

A proposta aqui é mostrar isso apenas com uma DLL ou EXE, por exemplo.

NuGetPackageExplorer

NuGetPackageExplorer lhe permite buscar, abrir e inspecionar pacotes nuget. É um projeto simples que e fantástico, pois permite que você veja detalhes de um pacote, quais são suas distribuições e muitas vezes ajuda a entender se aquilo vai ou não ser compatível com sua aplicação, principalmente em dias de .net core.

Agora, com o pacote, você pode explorar o NuGetPackageExplorer e entender melhor o que é possível. A propósito, é excelente para entender como os pacotes nuget são criados.

De posse do pacote, no NuGetPackageExplorer, você pode escolher um assembly e simplesmente salvá-lo no disco, vou fazer isso com o exemplo do NHibernate.

Agora vamos às outras ferramentas.

ILSpy & dotPeek

As duas ferramentas tem a mesma capacidade, o ILSpy sendo open source, já o dotPeek, proprietário mas free, e fornecido pela JetBrains (a mesma do resharper). Eles são responsáveis por analisar IL e descompilar, gerando como produto, código fonte. No caso escolhi C#, o ILSpy, por exemplo é capaz de gerar código em C#, VB e mostrar a própria IL. Em compensação o dotPeek apresenta o código de forma mais clara, intuitiva, e ainda permite inicializar um symbol server, direto a partir de sua interface, algo incrível.

O ILSpy você pode baixar do site http://ilspy.net/ enquanto o dotPeek você encontra em https://www.jetbrains.com/decompiler/.

Conclusão

Com essas 3 ferramentas, que você deveria ter em sua máquina, você consegue entender melhor como as coisas são feitas, como os padrões são usados e consegue ser um programador melhor. Vale lembrar que as duas ferramentas de descompilação usam código próprio para fazer isso, já que não há um método oficial, então depende de know how de quem constrói esses produtos para fazer o parser adequado de uma IL para a linguagem escolhida.

 

Luiz Carlos Faria

Mensagem do Autor

Espero que goste desse post. Não deixe de comentar e falar o que achou. 

Se acha que esse post pode ajudar alguém que você conheça, compartilhe!

 

Eventos passados

setembro 2020
agosto 2020
julho 2020
Nenhum evento encontrado!
Carregar Mais

Publicidade

Assine

0 comentários

Enviar um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Lives

Fique de olho nas lives

Fique de olho nas lives no meu canal do Youtube, no Canal .NET e nos Grupos do Facebook e Instagram.

Aceleradores

Existem diversas formas de viabilizar o suporte ao teu projeto. Seja com os treinamentos, consultoria, mentorias em grupo.

Agenda & Eventos

agosto

setembro 2020

outubro
DOM
SEG
TER
QUA
QUI
SEX
SAB
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
Events for 1st setembro
Sem Eventos
Events for 2nd setembro
Sem Eventos
Events for 3rd setembro
Sem Eventos
Events for 4th setembro
Sem Eventos
Events for 5th setembro
Sem Eventos
Events for 6th setembro
Sem Eventos
Events for 7th setembro
Sem Eventos
Events for 8th setembro
Sem Eventos
Events for 9th setembro
Sem Eventos
Events for 10th setembro
Sem Eventos
Events for 11th setembro
Sem Eventos
Events for 12th setembro
Sem Eventos
Events for 13th setembro
Sem Eventos
Events for 14th setembro
Sem Eventos
Events for 15th setembro
Sem Eventos
Events for 16th setembro
Sem Eventos
Events for 17th setembro
Sem Eventos
Events for 18th setembro
Sem Eventos
Events for 19th setembro
Sem Eventos
Events for 20th setembro
Sem Eventos
Events for 21st setembro
Sem Eventos
Events for 22nd setembro
Sem Eventos
Events for 23rd setembro
Sem Eventos
Events for 24th setembro
Sem Eventos
Events for 25th setembro
Events for 26th setembro
Sem Eventos
Events for 27th setembro
Sem Eventos
Events for 28th setembro
Sem Eventos
Events for 29th setembro
Sem Eventos
Events for 30th setembro
Sem Eventos
Share This