Base Class Library – Parte 01 – Introdução ao .NET Framework

Olá pessoal, nesta série de artigos, irei falar sobre a Base Class Library, ou BCL, que se trata do enorme conjunto de classes prontas que o .NET Framework disponibiliza para usarmos em nossas linguagens, seja ela C#, VB.NET ou quaisquer outra que rode sob este framework.

No final de 2011 eu tinha ensaiado fazer esta série de artigos mas infelizmente precisei desistir por falta de tempo. Dessa vez vou até o fim!

Primeiramente quero deixar aqui um agradecimento especial ao Israel Aece, que foi o criador de uma série de extensos artigos sobre a BCL, com 14 arquivos no formato XPS, ao todo, somando mais de 300 páginas de muito conteúdo. Com base nesse material dele (de Fevereiro de 2008), pedi permissão para resumir todo o conteúdo e transcrever aqui, na forma de artigos, com alguns exemplos práticos, divididos em várias partes. Agradeço a ele pela permissão dada, os créditos ao post original sempre serão descritos ao final de cada um destes artigos.

Para não deixar os artigos maçantes sempre que possível irei incluir imagens/códigos e menos textos mas alguns artigos, como esse por exemplo, irão ter mais textos, já que são necessários para o entendimento teórico dos assuntos abordados a partir desta parte. Mas fiquem tranquilos que teremos muito código ainda pela frente, tanto em VB.NET quanto em C#.

Disclaimer: Os artigos irão se basear na versão 2.0 do .NET Framework, mas as versões mais novas seguem a base desta, adicionando apenas algumas funcionalidades, como podem ser vistos neste e neste artigo, ambos da MSDN.

Antes de mais nada, você sabe exatamente o que é o .NET Framework?

Introdução

O .NET Framework é um ambiente de execução gerenciada que fornece uma variedade de serviços para rodar aplicações. Ele é uma plataforma da Microsoft criada e customizada para você, desenvolvedor, aproveitar ao máximo os recursos disponíveis por ela para desenvolver aplicativos como bem entender, utilizando suas mais de 13 mil classes disponíveis (segundo uma pesquisa que fiz a versão 3.5 do Framework já continha 12.688 classes, como estamos na versão 4.5.2 com certeza esse número já é superior a 13 mil).

O .NET Framework é composto de dois componentes principais, o CLR e o BCL, este último a ser visto durante toda esta série de artigos. O CLR é ainda mais importante que o BCL, já que ele é o “core” do .NET Framework.

CLR – O CLR (Common Language Runtime) é a máquina virtual da Microsoft para gerenciar todo o processo de compilação e execução das aplicações feitas sob o .NET Framework, independente de linguagem utilizada.

Ele gerencia um processo conhecido como JIT Compilation (Just-In-Time Compilation), em que o código compilado é convertido para instruções de máquina, que são executados pelo computador no qual o framework está instalado. Essa compilação é feita somente em tempo de execução (por isso o termo “just-in-time”).

O CLR também fornece serviços adicionais, importantíssimos para o Framework, como o gerenciamento de memória, segurança de tipos e manipulação de exceções. Todo e qualquer programa escrito sob o .NET Framework, independente da linguagem de programação utilizada, é executado pela CLR.

Abaixo uma imagem mostrando a importância da CLR no contexto do .NET Framework.

CLR

CLI – O .NET Framework opera sob a especificação do CLI (Common Language Infrastructure), desenvolvida pela Microsoft e que basicamente define a existência de um ambiente com múltiplas linguagens de alto nível podem ser utilizadas em diferentes computadores, com diferentes configurações, sem precisar ser reescrito para arquiteturas específicas. Além do .NET Framework, os projetos open-source Mono e o Portable.NET operam sob a CLI. Mais informações sobre a CLI neste link (eu sei que é Wikipédia mas as fontes são confiáveis).

Imagem da CLI, com comentários em inglês na imagem, clique para ampliar.

CLI

 

 

 

 

 

 

 

 

 

 

 

 

 

Notem que a linguagem de programação é apenas um mero detalhe, já que todas utilizadas sob o .NET Framework, passam pelo compilador, que as convertem para CIL (Common Intermediate Language, não confundir com CLI), o que seria uma linguagem única, genérica e independente de plataforma (por isso tanto faz a linguagem que você usa para programar, o resultado final será o mesmo). Logo depois a linguagem CIL é compilada pelo CLR para linguagem de máquina (os famosos 0 e 1), para ser executada em seu computador.

Ao apertarmos F5 parece algo simples né? Mas por detrás desse processo muita coisa acontece!

O outro componente essencial do .NET Framework é o título deste artigo: a Base Class Library, ou Biblioteca de Classes Base, que provém milhares de classes prontas para uso em suas aplicações. Ela fornece uma biblioteca de código testado e reutilizável que desenvolvedores podem chamar em suas aplicações e aproveitar o máximo suas funcionalidades.

Confira abaixo uma imagem representando as principais classes do BCL.

BCL

Finalmente, temos uma imagem com toda a estrutura do .NET Framework, confira.

Estrutura NET Framework

 

 

 

 

 

 

 

 

 

 

 

 

 

Um artigo com muitos detalhes sobre o .NET Framework, em inglês, pode ser encontrado neste link, e pode te ajudar, caso tenha ficado alguma dúvida.

Temos ainda o CTS e o CLS a serem explicados a seguir.

CTS – O CTS (Common Type System) é uma especificação criada pela Microsoft para descrever como os tipos são definidos e como se comportam. Esses tipos são compartilhados entre todas as linguagens .NET, usando a mesma ideia do CIL, ou seja, uma vez criado um componente em C#, por exemplo, o mesmo componente pode ser utilizado em VB.NET ou quaisquer outras linguagens que utilizem o .NET Framework, já que o tipo esperado ou o tipo a ser devolvido são de conhecimento de ambas.

Irei manter os exemplos focados nas linguagens mais utilizadas do .NET, que são o VB.NET e o C#, mas todos os exemplos descritos neste e nos próximos artigos funcionam para todas as linguagens suportadas pelo .NET Framework

Outro ponto importante do CTS é que ele também especifica as regras de visibilidade de tipos para acesso aos membros do mesmo. Confira a lista dos modificadores de acesso disponíveis.

Modificador VB.NET Modificador C# Descrição
Private private Pode ser acessado por outros métodos somente dentro do mesmo tipo (classe)
Protected protected Pode ser acessado por outros métodos dentro do mesmo tipo e também por tipos derivados
Friend internal Pode ser chamado de qualquer local desde que seja dentro do mesmo Assembly
Friend Protected internal protected Pode ser acessado por outros métodos dentro do mesmo tipo e também por tipos derivados dentro do mesmo Assembly
Public public Pode ser chamado de qualquer local

Finalmente, uma das principais e mais importantes regras definidas pelo CTS é: todos os tipos devem herdar, direta ou indiretamente, de um tipo pré-definido: System.Object. Este tipo é a raiz de todos os tipos dentro do .NET Framework, ou seja, todo e qualquer tipo herda de Object. Como tipo “pai” ele fornece um conjunto mínimo de comportamentos, a serem implementados por todos os seus “filhos” (lembrou-se do conceito de herança agora?):

  • Representação em uma string do estado do objeto (ToString);
  • Consultar o tipo verdadeiro da instância (GetType);
  • Extrair o código hash para a instância (GetHashCode);
  • Comparar duas instâncias quanto à igualdade (Equals);
  • Realizar uma cópia da instância (CopyTo).

CLS – O CLS (Common Language Specification) é outra especificação, que determina um conjunto mínimo de recursos que devem ser suportados se desejarem gerar código para o CLR. Basicamente se você estiver criando um tipo que será utilizado em mais de uma linguagem, você deve se atentar a isso, ou seja, criar recursos que sejam utilizados em ambas as linguagens. Para isso que o CLS existe, para determinar qual é o mínimo de recursos a ser utilizado nas linguagens que se apoderam do .NET Framework.

Para ter a certeza que o componente que você está desenvolvendo seja 100% compatível com qualquer linguagem .NET é necessário incluir um atributo que instrui o compilador a se certificar que um tipo público que está sendo disponibilizado não contenha nenhuma construção que evite ser acessado a partir de outra linguagem. Para fazer isso basta utilizar o atributo CLSCompliant, no arquivo AssemblyInfo, que se encontra dentro da pasta Properties. É necessário declarar/importar o namespace System, caso apresente algum erro. Veja o código abaixo de como declará-lo, em VB.NET e em C#.


<Assembly: CLSCompliant(True)>

 


[assembly: CLSCompliant(true)]

Conclusão

Vimos neste artigo uma introdução ao .NET Framework e a seus principais componentes, bem como a definição de itens importantes que compõem o Framework, que são algumas “siglas” que muitas pessoas viam em faculdades/cursos e não entendiam para que serviam, espero ter esclarecido algumas dessas questões, e se restou alguma dúvida não hesite em comentar.

Fonte principal de consulta: Por dentro da Base Class Library, de Israel Aece.

Créditos das imagens postadas neste artigo: DevReminder.

Obrigado e até o próximo artigo, onde começaremos a os tipos de dados do .NET Framework.

Anúncios

Um comentário sobre “Base Class Library – Parte 01 – Introdução ao .NET Framework

  1. Pingback: Base Class Library – Parte 02 – Tipos por Valor e por Referência, Stack, Heap, Boxing e Unboxing | Programando .NET

Expresse sua opinião!

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s