Esse artigo faz parte da revista .NET Magazine edição 54. Clique aqui para ler todos os artigos desta edição

owtext; FONT-FAMILY: Verdana">Expert

CLR

Conheça a arquitetura interna da plataforma .NET

 

Neste artigo veremos

·         CLR;

·         CIL;

·         Managed Modules;

·         Assemblies.

Qual a finalidade

·         Conhecer como funciona o .NET internamente, fazendo uso do CLR, CIL, metadados, Assemblies, código gerenciado etc.;

Quais situações utilizam esses recursos?

·         Todas as aplicações .NET trabalham desta forma, e por isso é importante conhecer como as coisas funcionam nos “bastidores”.

 

Resumo do DevMan

Neste artigo veremos como o .NET funciona internamente, conhecendo o conceito de máquina virtual (CLR), linguagem intermediária (CIL) e também Assemblies.

 

Conceitos, Estruturas e Técnicas. Uma plataforma tão interessante e avançada como a plataforma .NET é repleta destes aspectos que formam uma base sólida para suportar o desenvolvimento de aplicações para os mais variados cenários. Neste artigo vamos explorar os conceitos, estruturas e técnicas que fazem parte da plataforma .NET. Vamos conversar sobre componentes tecnológicos que são conhecidos coletivamente como Core Components, incluindo:

·         CLR – Common Language Runtime;

·         Assembly;

·         Managed Module.

 

O artigo descreve como estes conceitos são utilizados na plataforma .NET para armazenar e distribuir os componentes que compõem os softwares e recursos necessários aos mesmos. Os exemplos de código/projetos citados neste texto foram desenvolvidos e estão disponíveis para as seguintes tecnologias/ferramentas:

 

·         .NET Framework Version: v3.5

·         C# Compiler Version : 3.5.21022.8

·         C++/CLI Compiler Version : 15.00.21022.08 for 80x86

·         ILAsm

·         ILDasm

·         Visual Studio 2008

 

CLR – Common Language Runtime

Apesar da sigla, e o texto que ela representa serem simples para nos recordarmos, o CLR – Common Language Runtime, é um componente muito avançado e fundamental. Ele é o ambiente de execução – Runtime – no qual toda aplicação feita para plataforma .NET  é executada. O CLR – Common Language Runtime fornece uma série de serviços para que sua aplicação consiga ser executada adequadamente nos sistemas operacionais/plataformas de hardware para o qual a plataforma .NET tenha uma versão disponível. Um termo que nós sempre vamos ler ou ouvir quando estamos tratando do CLR - Common Language Runtime, é o termo Managed. Uma aplicação para a plataforma .NET é chamada de Managed Application. Em uma tradução livre, podemos dizer que é uma “Aplicação Gerenciada”. Mas o que isto quer dizer?

Vamos lembrar o que não é uma “Aplicação Gerenciada”. Quando você tem um compilador que gera código nativo, Assembly, este código gerado é específico para um processador ou família de processadores, como Intel x86, por exemplo. Se você está utilizando um compilador, como C/C++(Visual C++ ou Borland C++ Builder) ou Object Pascal(Borland Delphi), o resultado da compilação do código-fonte, no caso da plataforma Windows de sistemas operacionais, é um arquivo binário/executável, que é reconhecido pelas extensões EXE e DLL. As instruções que são geradas pelo compilador e são gravadas neste arquivo binário/executável não são “controladas” pelo sistema operacional durante a execução. Isto significa que o sistema operacional não gerencia a execução deste arquivo binário/executável. O fato de não gerenciar a execução quer dizer que seu binário/executável pode executar praticamente qualquer operação. É claro que recentemente temos tido avanços nos sistemas operacionais mais populares para reduzir certos problemas. Mas hoje, esta responsabilidade em gerar código com mais qualidade e com menos possibilidades de erros está, além é claro do profissional que escreve o código, com os compiladores/linkers. Em muitos casos, os compiladores reconhecem padrões de código e/ou estruturas e inserem códigos para reduzir ou até mesmo evitar determinadas situações. Um erro muito comum em código é tentar acessar uma posição de memória que não está disponível ou não foi inicializada adequadamente para o propósito esperado pelo aplicativo. Neste caso, muitos compiladores inserem códigos, que realizam testes para reduzir estas situações ou até mesmo evitar que o aplicativo continue sua execução, caso esta situação seja encontrada. Como podemos visualizar, é um grande problema para aplicativos/sistemas avançados garantirem a qualidade de código e uma execução mais estável e previsível.

 

...

Quer ler esse conteúdo completo? Tenha acesso completo