Visão geral do .NET Framework
O .NET Framework é uma tecnologia que oferece suporte à criação e execução de aplicativos e serviços Web do Windows. O .NET Framework foi projetado para cumprir os seguintes objetivos:
Forneça um ambiente de programação consistente e orientado a objetos, quer o código objeto seja armazenado e executado localmente, executado localmente, mas distribuído pela Web, ou executado remotamente.
Forneça um ambiente de execução de código que:
Minimiza a implantação de software e os conflitos de versão.
Promove a execução segura de código, incluindo código criado por terceiros desconhecidos ou semiconfiáveis.
Elimina os problemas de desempenho de ambientes com script ou interpretados.
Torne a experiência do desenvolvedor consistente em vários tipos de aplicativos, como aplicativos baseados no Windows e aplicativos baseados na Web.
Crie toda a comunicação em padrões do setor para garantir que o código baseado no .NET Framework se integre a qualquer outro código.
Nota
O .NET Framework é atendido mensalmente com correções de bugs de segurança e confiabilidade. O .NET Framework continuará a ser incluído no Windows, sem planos de removê-lo. Você não precisa migrar seus aplicativos .NET Framework, mas para novos desenvolvimentos, use o .NET 6 ou posterior.
O .NET Framework consiste no Common Language Runtime (CLR) e na biblioteca de classes do .NET Framework. O Common Language Runtime é a base do .NET Framework. Pense no tempo de execução como um agente que gerencia o código em tempo de execução, fornecendo serviços essenciais, como gerenciamento de memória, gerenciamento de threads e comunicação remota, ao mesmo tempo em que impõe segurança de tipo rigorosa e outras formas de precisão de código que promovem segurança e robustez. Na verdade, o conceito de gerenciamento de código é um princípio fundamental do tempo de execução. O código direcionado ao tempo de execução é conhecido como código gerenciado, enquanto o código que não tem como alvo o tempo de execução é conhecido como código não gerenciado. A biblioteca de classes é uma coleção abrangente e orientada a objetos de tipos reutilizáveis que você usa para desenvolver aplicativos que vão desde aplicativos tradicionais de linha de comando ou interface gráfica do usuário (GUI) até aplicativos baseados nas inovações mais recentes fornecidas pelo ASP.NET, como Web Forms e XML Web Services.
O .NET Framework pode ser hospedado por componentes não gerenciados que carregam o Common Language Runtime em seus processos e iniciam a execução de código gerenciado, criando assim um ambiente de software que explora recursos gerenciados e não gerenciados. O .NET Framework não apenas fornece vários hosts de tempo de execução, mas também suporta o desenvolvimento de hosts de tempo de execução de terceiros.
Por exemplo, ASP.NET hospeda o tempo de execução para fornecer um ambiente escalável do lado do servidor para código gerenciado. ASP.NET funciona diretamente com o tempo de execução para habilitar aplicativos ASP.NET e XML Web Services, ambos discutidos posteriormente neste artigo.
A ilustração a seguir mostra a relação do Common Language Runtime e da biblioteca de classes com seus aplicativos e com o sistema geral. A ilustração também mostra como o código gerenciado opera dentro de uma arquitetura maior.
As seções a seguir descrevem os principais recursos do .NET Framework com mais detalhes.
Recursos do common language runtime
O common language runtime gerencia memória, execução de threads, execução de código, verificação de segurança de código, compilação e outros serviços do sistema. Esses recursos são intrínsecos ao código gerenciado que é executado no Common Language Runtime.
Em relação à segurança, os componentes gerenciados recebem diferentes graus de confiança, dependendo de uma série de fatores que incluem sua origem (como a Internet, a rede corporativa ou o computador local). Isso significa que um componente gerenciado pode ou não ser capaz de executar operações de acesso a arquivos, operações de acesso ao Registro ou outras funções confidenciais, mesmo que seja usado no mesmo aplicativo ativo.
O tempo de execução também impõe a robustez do código implementando uma infraestrutura estrita de verificação de tipo e código chamada sistema de tipo comum (CTS). O CTS garante que todo o código gerenciado seja autodescrito. Os vários compiladores de linguagem da Microsoft e de terceiros geram código gerenciado que está em conformidade com o CTS. Isso significa que o código gerenciado pode consumir outros tipos e instâncias gerenciados, ao mesmo tempo em que impõe estritamente a fidelidade e a segurança do tipo.
Além disso, o ambiente gerenciado do tempo de execução elimina muitos problemas comuns de software. Por exemplo, o tempo de execução manipula automaticamente o layout do objeto e gerencia referências a objetos, liberando-os quando eles não estão mais sendo usados. Esta gestão automática de memória resolve os dois erros mais comuns da aplicação, fugas de memória e referências de memória inválidas.
O tempo de execução também acelera a produtividade do desenvolvedor. Por exemplo, os programadores escrevem aplicativos em sua linguagem de desenvolvimento de escolha, mas aproveitam ao máximo o tempo de execução, a biblioteca de classes e os componentes escritos em outras linguagens por outros desenvolvedores. Qualquer fornecedor de compilador que opte por direcionar o tempo de execução pode fazê-lo. Os compiladores de linguagem destinados ao .NET Framework disponibilizam os recursos do .NET Framework para o código existente escrito nessa linguagem, facilitando consideravelmente o processo de migração para aplicativos existentes.
Enquanto o tempo de execução é projetado para o software do futuro, ele também suporta software de hoje e ontem. A interoperabilidade entre código gerenciado e não gerenciado permite que os desenvolvedores continuem a usar os componentes COM e DLLs necessários.
O tempo de execução é projetado para melhorar o desempenho. Embora o common language runtime forneça muitos serviços de tempo de execução padrão, o código gerenciado nunca é interpretado. Um recurso chamado compilação just-in-time (JIT) permite que todo o código gerenciado seja executado na linguagem de máquina nativa do sistema no qual está sendo executado. Enquanto isso, o gerenciador de memória remove as possibilidades de memória fragmentada e aumenta a localidade de referência da memória para aumentar ainda mais o desempenho.
Finalmente, o tempo de execução pode ser hospedado por aplicativos de alto desempenho do lado do servidor, como o Microsoft SQL Server e o IIS (Serviços de Informações da Internet). Essa infraestrutura permite que você use código gerenciado para escrever sua lógica de negócios, enquanto ainda desfruta do desempenho superior dos melhores servidores corporativos do setor que suportam hospedagem em tempo de execução.
Biblioteca de classes do .NET Framework
A biblioteca de classes do .NET Framework é uma coleção de tipos reutilizáveis que se integram perfeitamente ao Common Language Runtime. A biblioteca de classes é orientada a objetos, fornecendo tipos dos quais seu próprio código gerenciado deriva funcionalidade. Isso não só torna os tipos do .NET Framework fáceis de usar, mas também reduz o tempo associado ao aprendizado de novos recursos do .NET Framework. Além disso, componentes de terceiros integram-se perfeitamente com classes no .NET Framework.
Por exemplo, as classes de coleção do .NET Framework implementam um conjunto de interfaces para desenvolver suas próprias classes de coleção. Suas classes de coleção se misturam perfeitamente com as classes no .NET Framework.
Como você esperaria de uma biblioteca de classes orientada a objetos, os tipos do .NET Framework permitem que você realize uma variedade de tarefas comuns de programação, incluindo gerenciamento de cadeia de caracteres, coleta de dados, conectividade de banco de dados e acesso a arquivos. Além dessas tarefas comuns, a biblioteca de classes inclui tipos que oferecem suporte a uma variedade de cenários de desenvolvimento especializados. Você pode usar o .NET Framework para desenvolver os seguintes tipos de aplicativos e serviços:
Aplicativos de console. Consulte Criando aplicativos de console.
Aplicativos de GUI do Windows (Windows Forms). Consulte Windows Forms.
Aplicativos do Windows Presentation Foundation (WPF). Consulte Windows Presentation Foundation.
ASP.NET aplicações. Consulte Aplicativos Web com ASP.NET.
Serviços do Windows. Consulte Introdução aos aplicativos de serviço do Windows.
Aplicativos orientados a serviços usando o Windows Communication Foundation (WCF). Consulte Aplicativos orientados a serviços com WCF.
Aplicativos habilitados para fluxo de trabalho usando o Windows Workflow Foundation (WF). Consulte Windows Workflow Foundation.
As classes Windows Forms são um conjunto abrangente de tipos reutilizáveis que simplificam muito o desenvolvimento da GUI do Windows. Se você escrever um aplicativo ASP.NET Web Form, poderá usar as classes Web Forms.