Introdução ao .NET

O .NET é uma plataforma de desenvolvedor gratuita, multiplataforma e de código aberto para a criação de muitos tipos de aplicativos. Ele pode executar programas escritos em vários idiomas, com C# sendo o mais popular. Ele depende de um tempo de execução de alto desempenho que é usado na produção por muitos aplicativos de alta escala.

Para saber como baixar o .NET e começar a escrever seu primeiro aplicativo, consulte Introdução.

A plataforma .NET foi projetada para oferecer produtividade, desempenho, segurança e confiabilidade. Ele fornece gerenciamento automático de memória através de um coletor de lixo (GC). É seguro para tipos e memória, devido ao uso de um GC e compiladores de linguagem estrita. Oferece simultaneidade viaawaitasync/e Task primitivos. Ele inclui um grande conjunto de bibliotecas que têm ampla funcionalidade e foram otimizadas para desempenho em vários sistemas operacionais e arquiteturas de chips.

O .NET tem os seguintes pontos de design:

  • A produtividade é completa , com tempo de execução, bibliotecas, linguagem e ferramentas, contribuindo para a experiência do usuário do desenvolvedor.
  • O código seguro é o modelo de computação primário, enquanto o código não seguro permite otimizações manuais adicionais.
  • Código estático e dinâmico são suportados, permitindo um amplo conjunto de cenários distintos.
  • A interoperabilidade de código nativo e as intrínsecas de hardware são de baixo custo e alta fidelidade (API bruta e acesso a instruções).
  • O código é portátil entre plataformas (arquitetura de SO e chip), enquanto a segmentação por plataforma permite especialização e otimização.
  • A adaptabilidade entre domínios de programação (nuvem, cliente, jogos) é habilitada com implementações especializadas do modelo de programação de uso geral.
  • Os padrões da indústria, como OpenTelemetry e gRPC, são favorecidos em relação às soluções personalizadas.

O .NET é mantido pela Microsoft e pela comunidade. Ele é atualizado regularmente para garantir que os usuários implantem aplicativos seguros e confiáveis para a produção.

Componentes

O .NET inclui os seguintes componentes:

  • Runtime -- executa o código do aplicativo.
  • Bibliotecas -- fornece funcionalidade de utilitário, como análise JSON.
  • Compilador -- compila o código-fonte C# (e outras linguagens) em código executável (tempo de execução).
  • SDK e outras ferramentas -- habilite a criação e o monitoramento de aplicativos com fluxos de trabalho modernos.
  • Pilhas de aplicativos, como o ASP.NET Core e o Windows Forms, que permitem escrever aplicativos.

O tempo de execução, as bibliotecas e as linguagens são os pilares da pilha .NET. Componentes de nível superior, como ferramentas .NET, e pilhas de aplicativos, como o ASP.NET Core, se baseiam nesses pilares. C# é a principal linguagem de programação para .NET e grande parte do .NET é escrito em C#.

C# é orientado a objeto e o tempo de execução suporta orientação a objetos. C# requer coleta de lixo e o tempo de execução fornece um coletor de lixo de rastreamento. As bibliotecas (e também as pilhas de aplicativos) moldam esses recursos em conceitos e modelos de objeto que permitem que os desenvolvedores escrevam algoritmos de forma produtiva em fluxos de trabalho intuitivos.

As bibliotecas principais expõem milhares de tipos, muitos dos quais se integram e alimentam a linguagem C#. Por exemplo, a foreach instrução C# permite enumerar coleções arbitrárias. As otimizações baseadas em padrões permitem que coleções como List<T> sejam processadas de forma simples e eficiente. Você pode deixar o gerenciamento de recursos até a coleta de lixo, mas a limpeza imediata é possível por meio IDisposable do suporte direto ao idioma na using declaração.

O suporte para fazer várias coisas ao mesmo tempo é fundamental para praticamente todas as cargas de trabalho. Isso pode ser aplicativos cliente fazendo processamento em segundo plano enquanto mantém a interface do usuário responsiva, serviços lidando com muitos milhares de solicitações simultâneas, dispositivos respondendo a uma infinidade de estímulos simultâneos ou máquinas de alta potência paralelizando o processamento de operações de computação intensiva. O suporte à programação assíncrona é um recurso de primeira classe da linguagem de programação C#, que fornece as async palavras-chave e await que facilitam a escrita e a composição de operações assíncronas, enquanto ainda desfruta de todos os benefícios de todas as construções de fluxo de controle que a linguagem tem a oferecer.

O sistema de tipos oferece uma amplitude significativa, atendendo de forma um pouco igual à segurança, descritividade, dinamismo e interoperabilidade nativa. Em primeiro lugar, o sistema de tipos permite um modelo de programação orientado a objetos. Ele inclui tipos, herança (classe base única), interfaces (incluindo implementações de método padrão) e despacho de método virtual para fornecer um comportamento sensível para todas as camadas de tipo permitidas pela orientação a objetos. Os tipos genéricos são um recurso generalizado que permite especializar classes para um ou mais tipos.

O tempo de execução do .NET fornece gerenciamento automático de memória por meio de um coletor de lixo. Para qualquer linguagem, seu modelo de gerenciamento de memória é provavelmente sua característica mais definidora. Isso é verdade para linguagens .NET. O .NET tem um GC de rastreamento de auto-ajuste. O objetivo é oferecer uma operação "hands-off" no caso geral, oferecendo opções de configuração para cargas de trabalho mais extremas. O GC atual é o resultado de muitos anos de investimento e aprendizados de uma infinidade de cargas de trabalho.

Os tipos de valor e os blocos de memória alocados por pilha oferecem um controle mais direto e de baixo nível sobre os dados e a interoperabilidade nativa da plataforma, em contraste com o . Tipos gerenciados por GC da NET. A maioria dos tipos primitivos no .NET, como tipos inteiros, são tipos de valor, e os usuários podem definir seus próprios tipos com semântica semelhante. Os tipos de valor são totalmente suportados através do . O sistema genérico da NET, o que significa que tipos genéricos como List<T> podem fornecer representações de memória planas e sem sobrecarga de coleções de tipos de valor.

A reflexão é um paradigma de "programas como dados", permitindo que uma parte de um programa consulte e invoque dinamicamente outra, em termos de montagens, tipos e membros. É particularmente útil para modelos e ferramentas de programação de última geração.

As exceções são o principal modelo de tratamento de erros no .NET. As exceções têm a vantagem de que as informações de erro não precisam ser representadas em assinaturas de método ou manipuladas por todos os métodos. O tratamento adequado de exceções é essencial para a confiabilidade do aplicativo. Para evitar que seu aplicativo falhe, você pode manipular intencionalmente as exceções esperadas em seu código. Um aplicativo com falha é mais confiável e diagnosticável do que um aplicativo com comportamento indefinido.

As pilhas de aplicativos, como o ASP.NET Core e o Windows Forms, aproveitam e aproveitam bibliotecas, linguagem e tempo de execução de baixo nível. As pilhas de aplicativos definem a maneira como os aplicativos são construídos e seu ciclo de vida de execução.

O SDK e outras ferramentas permitem uma experiência de desenvolvedor moderna, tanto em um desktop de desenvolvedor quanto para integração contínua (CI). A experiência moderna do desenvolvedor inclui a capacidade de criar, analisar e testar código. Os projetos .NET geralmente podem ser criados por um único dotnet build comando, que orquestra a restauração de pacotes NuGet e a criação de dependências.

O NuGet é o gerenciador de pacotes para .NET. Ele contém centenas de milhares de pacotes que implementam funcionalidades para muitos cenários. A maioria dos aplicativos depende de pacotes NuGet para algumas funcionalidades. A Galeria NuGet é mantida pela Microsoft.

Código fonte aberto e gratuito

O .NET é gratuito, de código aberto e é um projeto do .NET Foundation . O .NET é mantido pela Microsoft e pela comunidade no GitHub em vários repositórios.

O código-fonte e os binários do .NET são licenciados com a licença MIT. Aplicam-se licenças adicionais no Windows.

Suporte

O .NET é suportado por várias organizações que trabalham para garantir que o .NET possa ser executado em vários sistemas operacionais e seja mantido atualizado. Ele pode ser usado nas arquiteturas Arm64, x64 e x86.

Novas versões do .NET são lançadas anualmente em novembro, de acordo com nossas versões e políticas de suporte. Ele é atualizado mensalmente na Patch Tuesday (segunda terça-feira), normalmente às 10h, horário do Pacífico.

Ecossistema .NET

Existem várias variantes do .NET, cada uma suportando um tipo diferente de aplicativo. A razão para múltiplas variantes é parte histórica, parte técnica.

Implementações .NET:

  • .NET Framework -- O .NET original. Ele fornece acesso aos amplos recursos do Windows e do Windows Server. É ativamente apoiado, em manutenção.
  • Mono -- A comunidade original e o .NET de código aberto. Uma implementação multiplataforma do .NET Framework. Ativamente suportado para Android, iOS e WebAssembly.
  • .NET (Core) -- .NET moderno. Uma implementação multiplataforma e de código aberto do .NET, repensada para a era da nuvem, permanecendo significativamente compatível com o .NET Framework. Ativamente suportado para Linux, macOS e Windows.

Próximos passos