Glossário do .NET

A principal meta deste glossário é esclarecer os significados de termos e acrônimos selecionados que aparecem com frequência na documentação do .NET.

AOT

Compilador Ahead-of-Time.

Semelhante ao JIT, esse compilador também converte IL em código de máquina. Diferentemente da compilação JIT, a compilação AOT acontece antes que o aplicativo seja executado e normalmente é executada em um computador diferente. Como as cadeias da ferramenta AOT não compilam em tempo de execução, elas não têm que minimizar o tempo gasto na compilação. Isso significa que elas podem gastar mais tempo em otimização. Como o contexto da AOT é o aplicativo inteiro, o compilador AOT também executa a vinculação de módulo cruzado e a análise de programa inteiro, o que significa que todas as referências são seguidas e um único executável é produzido.

Confira CoreRT e .NET Native.

Modelo de aplicativo

Uma API específica de carga de trabalho. Estes são alguns exemplos:

  • ASP.NET
  • ASP.NET Web API
  • Entity Framework – EF
  • Windows Presentation Foundation (WPF)
  • Windows Communication Foundation (WCF)
  • Windows Workflow Foundation (WF)
  • Windows Forms (WinForms)

ASP.NET

A implementação ASP.NET original fornecida com o .NET Framework, também conhecido como ASP.NET 4.x e ASP.NET Framework.

Às vezes, o ASP.NET é um termo abrangente que se refere às implementações do ASP.NET e do ASP.NET Core. O significado que o termo carrega em qualquer instância é determinado pelo contexto. Consulte o ASP.NET 4.x quando quiser deixar claro que não está usando o ASP.NET para as duas implementações.

Confira Documentação do ASP.NET.

ASP.NET Core

Uma implementação multiplataforma de alto desempenho e código aberto do ASP.NET.

Confira Documentação do ASP.NET Core.

assembly

Um arquivo .dll ou .exe que contém uma coleção de APIs que podem ser chamadas por aplicativos ou outros assemblies.

Um assembly contém tipos como interfaces, classes, estruturas, enumerações e delegados. Às vezes, os assemblies em uma pasta bin de projeto são chamados de binários. Consulte também biblioteca.

BCL

Biblioteca de classes base.

Um conjunto de bibliotecas que compõem os namespaces System.* (e, até certo limite, Microsoft.*). A BCL é uma estrutura de nível inferior e de uso geral, base para a criação de estruturas de aplicativo de nível mais alto, como o ASP.NET Core.

O código-fonte da BCL para .NET está contido no repositório de tempo de execução do .NET. A maioria dessas APIs BCL também está disponível em .NET Framework, portanto, você pode pensar nesse código-fonte como um fork do código-fonte BCL do .NET Framework.

Os termos a seguir geralmente se referem à mesma coleção de APIs às quais a BCL se refere:

CLR

Common Language Runtime.

O significado exato depende do contexto. Common Language Runtime geralmente se refere ao tempo de execução do .NET Framework ou ao tempo de execução do .NET.

O CLR manipula a alocação e o gerenciamento de memória. O CLR também é uma máquina virtual que não só executa aplicativos, mas também gera e compila código dinamicamente usando um compilador JIT.

A implementação do CLR para .NET Framework é somente do Windows.

A implementação do CLR para .NET (também conhecida como CLR principal) é criada a partir da mesma base de código que o CLR do .NET Framework. Originalmente, o Core CLR era o runtime do Silverlight e foi projetado para ser executado em várias plataformas, especificamente Windows e OS X. Ele ainda é um runtime multiplataforma, agora incluindo suporte para muitas distribuições do Linux.

Consulte também runtime.

Core CLR

O Common Language Runtime para .NET.

Consulte CLR.

CoreRT

Ao contrário do CLR, o CoreRT não é uma máquina virtual, o que significa que ele não inclui os recursos para gerar e executar código dinamicamente, já que não inclui um JIT. No entanto, ele inclui a GC e a capacidade de RTTI (identificação de tipo de runtime) e reflexão. Contudo, seu sistema de tipos é projetado para que os metadados para reflexão não sejam necessários. Isso permite ter uma cadeia de ferramentas AOT que possa desvincular metadados supérfluos e, mais importante, identificar código que o aplicativo não usa. O CoreRT está em desenvolvimento.

Consulte Introdução ao CoreRT e o .NET Runtime Lab.

várias plataformas

A capacidade de desenvolver e executar um aplicativo que pode ser usado em vários sistemas operacionais diferentes, como Linux, Windows e iOS, sem que seja preciso reescrever especificamente para cada um deles. Isso permite a reutilização de código e a consistência entre os aplicativos em diferentes plataformas.

Consulte plataforma.

ecossistema

Todos os softwares de runtime, as ferramentas de desenvolvimento e os recursos da comunidade que são usados para compilar e executar aplicativos de uma determinada tecnologia.

O termo "Ecossistema do .NET" difere de termos semelhantes, como "Pilha do .NET", em relação à inclusão de bibliotecas e aplicativos de terceiros. Veja um exemplo em uma frase:

  • "A motivação por trás do .NET Standard era estabelecer maior uniformidade no ecossistema .NET."

estrutura

Em geral, uma coleção abrangente de APIs que facilita o desenvolvimento e a implantação de aplicativos que são baseados em uma tecnologia específica. Nesse sentido geral, o ASP.NET Core e o Windows Forms são exemplos de estruturas de aplicativo. A estrutura de palavras e a biblioteca geralmente são usadas como sinônimos.

A palavra "estrutura" tem um significado técnico mais específico nos seguintes termos:

Às vezes "estrutura" refere-se a uma implementação do .NET.

Bibliotecas de estrutura

O significado depende do contexto. Pode se referir às bibliotecas de estrutura para .NET, caso em que se refere às mesmas bibliotecas às quais a BCL se refere. Ele também pode se referir às bibliotecas de estrutura ASP.NET Core , que se baseiam na BCL e fornecem APIs adicionais para aplicativos Web.

GC

Coletor de lixo.

O coletor de lixo é uma implementação do gerenciamento automático de memória. O GC libera a memória ocupada por objetos que não estejam mais em uso.

Consulte Coleta de lixo.

IL

Linguagem intermediária.

As linguagens .NET de nível mais alto , como C#, são compiladas em um conjunto de instruções independente de hardware, que é chamado de IL (linguagem intermediária). A IL às vezes é conhecida como MSIL (Microsoft Intermediate Language) ou CIL (Common Intermediate Language).

JIT

Compilador Just-In-Time.

Semelhante ao AOT, esse compilador converte a IL em um código de máquina que o processador entenda. Ao contrário da AOT, a compilação JIT acontece sob demanda e é executada no mesmo computador em que o código precisa ser executado. Como a compilação JIT ocorre durante a execução do aplicativo, o tempo de compilação faz parte do tempo de execução. Assim, os compiladores JIT precisam equilibrar o tempo gasto com a otimização do código em relação à economia que o código resultante pode produzir. Mas um JIT reconhece o hardware e pode evitar que os desenvolvedores tenham que fornecer implementações diferentes.

implementação do .NET

Uma implementação do .NET inclui o seguinte:

  • Um ou mais runtimes. Exemplos: CLR, CoreRT.
  • Uma biblioteca de classes que implementa uma versão do .NET Standard e pode incluir APIs adicionais. Exemplos: as BCLs para .NET Framework e .NET.
  • Opcionalmente, uma ou mais estruturas de aplicativo. Exemplos: ASP.NET, Windows Forms e WPF estão incluídos no .NET Framework e no .NET.
  • Opcionalmente, ferramentas de desenvolvimento. Algumas ferramentas de desenvolvimento são compartilhadas entre várias implementações.

Exemplos de implementações do .NET:

Para obter mais informações, consulte Implementações do .NET.

biblioteca

Uma coleção de APIs que podem ser chamadas por aplicativos ou outras bibliotecas. Uma biblioteca do .NET é composta de um ou mais assemblies.

A biblioteca de palavras e a estrutura geralmente são usadas como sinônimos.

Mono

Uma implementação de código aberto entre plataformas.NET que é usada quando um tempo de execução pequeno é necessário. É o tempo de execução que alimenta os aplicativos Xamarin no Android, Mac, iOS, tvOS e watchOS e é focado principalmente em aplicativos que exigem um espaço pequeno.

Ele dá suporte a todas as versões do .NET Standard publicadas atualmente.

Historicamente, o Mono implementava a maior API do .NET Framework e emulava alguns dos recursos mais populares do Unix. Às vezes, é usado para executar aplicativos .NET que dependem desses recursos no Unix.

O Mono normalmente é usado com um compilador just-in-time, mas também apresenta um compilador estático completo (compilação ahead-of-time) que é usado em plataformas como a iOS.

Para saber mais, confira a documentação do Mono.

AOT nativo

Um modo de implantação em que o aplicativo é autônomo e é compilado antecipadamente para código nativo no momento da publicação. Aplicativos AOT nativos não usam um compilador JIT em tempo de execução. Eles podem ser executados em computadores que não têm o runtime do .NET instalado.

Para obter mais informações, consulte Implantação do AOT nativo.

.NET

O .NET tem dois significados, e o pretendido depende do contexto:

  • O .NET pode ser usado como o termo genérico para o .NET Standard e todas as implementações e cargas de trabalho do .NET.
  • O .NET refere-se mais frequentemente à implementação de código aberto, de alto desempenho e plataforma cruzada do .NET que costumava ser chamada de .NET Core. Ele também pode ser chamado de .NET 5 (e .NET Core) e versões posteriores ou apenas .NET 5+.

Por exemplo, o primeiro significado é pretendido em frases como "implementações do .NET". O segundo significado destina-se a nomes como .NET SDK e .NET CLI. Na ausência de contexto que indique que o primeiro significado é pretendido, assuma que o segundo significado é pretendido.

Versões anteriores do .NET são conhecidas como .NET Core 1 a 3.1. Os números de versão ignoram 4 e a versão que se seguiu à 3.1 é conhecida como .NET 5, descartando "Core" do nome. Soltar "Core" foi feito para enfatizar que essa implementação do .NET é a que é recomendada para todos os novos desenvolvimentos. Ignorar a versão 4 foi feito para ajudar a evitar confundir essa implementação mais recente do .NET com a implementação mais antiga conhecida como .NET Framework. A versão atual do .NET Framework é 4.8.1.

O .NET é sempre totalmente maiúscula, nunca ".Net".

Consulte documentação do .NET.

CLI do .NET

Um conjunto de ferramentas multiplataforma para o desenvolvimento de aplicativos e bibliotecas para .NET. Também conhecida como CLI do .NET Core.

O CLI do.NET.

.NET Core

Consulte .NET.

.NET Framework

Uma implementação do .NET que é executado somente no Windows. Inclui o CLR (Common Language Runtime), aBCL (Biblioteca de classes base) e as bibliotecas de estrutura do aplicativo, como ASP.NET, Windows Forms e WPF.

Consulte o Guia do .NET Framework.

.NET Nativo

Uma cadeia de ferramentas de compilador que gera código nativo AOT (Ahead Of Time), em vez de JIT (Just-In-Time).

A compilação acontece no computador do desenvolvedor, semelhante à maneira como um compilador e vinculador C++ funciona. Ela remove código não utilizado e gasta mais tempo otimizando-o. Ele extrai o código de bibliotecas e os mescla no executável. O resultado é um módulo único que representa o aplicativo inteiro.

A UWP foi a primeira estrutura de aplicativo com suporte pelo .NET Native.

Consulte documentação .NET Native.

SDK .NET

Um conjunto de bibliotecas e ferramentas que permitem aos desenvolvedores criar aplicativos e bibliotecas para .NET. Também conhecido como .NET Core SDK.

Inclui a CLI do .NET Core para a criação de aplicativos, bibliotecas e runtime do .NET Core para criar e executar aplicativos e o executável do dotnet (dotnet.exe) que executa comandos de CLI e executa aplicativos.

Consulte Visão geral do SDK do .NET.

.NET Standard

Uma especificação formal das APIs do .NET que estão disponíveis em cada implementação do .NET.

Às vezes, a especificação do .NET Standard também é chamada de biblioteca. Como uma biblioteca inclui implementações de API e não apenas especificações (interfaces), é um equívoco chamar .NET Standard de "biblioteca".

Consulte .NET Standard.

NGen

Geração (de imagem) nativa.

Você pode pensar nessa tecnologia como um compilador JIT persistente. Ela geralmente compila o código no computador em que o código é executado, mas a compilação normalmente ocorre no momento da instalação.

pacote

Um pacote NuGet ou apenas um pacote é um arquivo .zip com um ou mais assemblies de mesmo nome, junto com metadados adicionais, como o nome do autor.

O arquivo .zip tem uma extensão .nupkg e pode conter ativos, como arquivos .dll e arquivos .xml , para uso com várias estruturas e versões de destino. Quando instalado em um aplicativo ou uma biblioteca, os ativos apropriados são selecionados com base na estrutura de destino especificada pelo aplicativo ou pela biblioteca. Os ativos que definem a interface estão na pasta ref e os ativos que definem a implementação estão na pasta lib.

plataforma

Um sistema operacional e o hardware em que ele é executado, como macOS, Windows, Linux, iOS e Android.

Veja alguns exemplos de uso nessas frases:

  • "O .NET Core é uma implementação multiplataforma do .NET."
  • "Os perfis de PCL representam plataformas da Microsoft enquanto que o .NET Standard é independente de plataforma."

A documentação do .NET herdada frequentemente usa "plataforma .NET" para significar uma implementação do .NET ou a pilha do .NET, incluindo todas as implementações. Os dois usos tendem a ser confundidos com o significado (SO/hardware) principal, portanto planejamos eliminar esses usos da documentação.

"Platforma" tem um significado diferente na frase "plataforma de desenvolvedor", que se refere ao software que fornece ferramentas e bibliotecas para criar e executar aplicativos. O .NET é uma plataforma de desenvolvedor multiplataforma, de código aberto, gratuita para criar muitos tipos diferentes de aplicativos.

POCO

Um POCO — ou um objeto CLR /classe antiga simples — é uma estrutura de dados do .NET que contém apenas propriedades ou campos públicos. Um POCO não deve conter nenhum outro membro, como:

  • methods
  • events
  • delegados

Esses objetos são usados principalmente como DTOs (objetos de transferência de dados). Um POCO puro não herdará outro objeto nem implementará uma interface. É comum que POCOs sejam usados com serialização.

runtime

Geralmente, o ambiente de execução de um programa gerenciado. O SO faz parte do ambiente do runtime, mas não faz parte do runtime do .NET. Eis alguns exemplos de runtimes do .NET nesse sentido da palavra:

  • CLR (Common Language Runtime)
  • .NET Native (para UWP)
  • runtime Mono

A palavra "runtime" tem um significado diferente em alguns contextos:

  • Runtime do .NET na página de download do .NET 5.

    Você pode baixar o runtime do .NET ou outros runtimes, como o runtime ASP.NET Core. Um runtime nesse uso é o conjunto de componentes que deve ser instalado em um computador para executar um aplicativo dependente de estrutura no computador. O runtime do .NET inclui o CLR e a estrutura compartilhada do .NET, que fornece a BCL.

  • Bibliotecas de runtime do .NET

    Refere-se às mesmas bibliotecas às quais a BCL se refere. No entanto, outros runtimes, como o runtime ASP.NET Core, têm estruturas compartilhadas diferentes, com bibliotecas adicionais que se baseiam na BCL.

  • RID (Identificador de Runtime).

    Runtime aqui significa a plataforma do sistema operacional e a arquitetura de CPU em que um aplicativo .NET é executado, por exemplo: linux-x64.

  • Às vezes, "runtime" é usado no sentido de uma implementação do .NET, como nos seguintes exemplos:

    • "Os diversos runtimes do .NET implementam versões específicas do .NET Standard. ... Cada versão de runtime do .NET anuncia a última versão do .NET Standard à qual ele dá suporte..."
    • "Bibliotecas destinadas à execução em vários runtimes devem ter essa estrutura como destino." (em referência ao .NET Standard)

estrutura compartilhada

O significado depende do contexto. A estrutura compartilhada do .NET refere-se às bibliotecas incluídas no runtime do .NET. Nesse caso, a estrutura compartilhada para .NET refere-se às mesmas bibliotecas às quais a BCL se refere.

Há outras estruturas compartilhadas. A estrutura compartilhada ASP.NET Core refere-se às bibliotecas incluídas no runtime do ASP.NET Core, que inclui a BCL, além de APIs adicionais para uso por aplicativos Web.

Para aplicativos dependentes de estrutura, a estrutura compartilhada consiste em bibliotecas contidas em assemblies instalados em uma pasta no computador que executa o aplicativo. Para aplicativos independentes, os assemblies de estrutura compartilhada são incluídos no aplicativo.

Para obter mais informações, consulte Aprofundamento nos primitivos do .NET Core, parte 2: a estrutura compartilhada.

stack

Um conjunto de tecnologias de programação que são usadas para compilar e executar aplicativos.

"A pilha do .NET" refere-se ao .NET Standard e a todas as implementações do .NET. A frase "uma pilha do .NET" pode se referir a uma implementação do .NET.

estrutura de destino

A coleção de APIs da qual um aplicativo ou biblioteca do .NET depende.

Um aplicativo ou uma biblioteca pode se destinar a uma versão do .NET Standard (por exemplo, .NET Standard 2.0), que é a especificação de um conjunto padronizado de APIs entre todas as implementações do .NET. Um aplicativo ou uma biblioteca também pode se destinar a uma versão de uma implementação específica do .NET, obtendo acesso a APIs específicas da implementação. Por exemplo, um aplicativo que tem como destino o Xamarin.iOS obtém acesso aos wrappers da API fornecidos para Xamarin iOS.

Para algumas estruturas de destino (por exemplo, .NET Framework), as APIs disponíveis são definidas pelos assemblies que uma implementação do .NET instala em um sistema, que podem incluir APIs de estrutura de aplicativo (por exemplo, ASP.NET, WinForms). Para estruturas de destino baseadas em pacote, as APIs de estrutura são definidas por pacotes instalados no aplicativo ou na biblioteca.

Consulte Estruturas de destino.

TFM

Moniker da estrutura de destino.

Um formato de token padronizado para especificar a estrutura de destino de um aplicativo ou uma biblioteca do .NET. As estruturas de destino são geralmente referenciadas por um nome curto, como net462. TFMs de formato longo (como .NETFramework,Version=4.6.2) existem, mas geralmente não são usados para especificar uma estrutura de destino.

Consulte Estruturas de destino.

UWP

Plataforma Universal do Windows.

Uma implementação do .NET que é usada para criar aplicativos do Windows sensíveis ao toque, bem como software para a IoT (Internet das Coisas). Ele foi projetado para unificar os diferentes tipos de dispositivos que você pode querer segmentar, incluindo PCs, tablets, telefones e até mesmo o Xbox. A UWP fornece muitos serviços, como um repositório centralizado de aplicativos, um ambiente de execução (AppContainer) e um conjunto de APIs do Windows para usar em vez das APIS do Win32 (WinRT). Os aplicativos podem ser escritos em C++, C#, Visual Basic e JavaScript. Ao usar C# e Visual Basic, as APIs do .NET são fornecidas pelo .NET.

workload

Um tipo de aplicativo que alguém está criando. Mais genérico do que o modelo de aplicativo. Por exemplo, na parte superior de cada página de documentação do .NET, incluindo esta, está uma lista suspensa para Cargas de Trabalho, que permite mudar para documentação para Dados da Web, Móvel, Nuvem, Área de Trabalho e Machine Learning e dados.

Em alguns contextos, a carga de trabalho refere-se a uma coleção de recursos do Visual Studio que você pode optar por instalar para dar suporte a um tipo específico de aplicativo. Para obter um exemplo, consulte Selecionar uma carga de trabalho.

Confira também