Introdução ao .NET

O .NET é uma plataforma de desenvolvimento gratuita multiplataforma e de código aberto para criar muitos tipos de aplicativos. Ele pode executar programas escritos em vários idiomas, com C# sendo os mais populares. Ele depende de um runtime de alto desempenho usado em 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 fornecer produtividade, desempenho, segurança e confiabilidade. Ele fornece gerenciamento automático de memória por um coletor de lixo (GC). Ele é seguro de tipo e de memória, devido ao uso de um GC e compiladores de idioma estritos. Oferece simultaneidade viaasync/await e Task primitivas. 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 chip.

O .NET tem os seguintes pontos de design:

  • A Produtividade é de pilha completa com runtime, bibliotecas, idioma 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.
  • O Código estático e dinâmico têm suporte, permitindo um amplo conjunto de cenários distintos.
  • A Interoperabilidade de código nativo e intrínsecos de hardware são de baixo custo e alta fidelidade (API bruta e acesso de instrução).
  • O Código é portátil entre plataformas (sistema operacional e arquitetura de chip), enquanto a segmentação por plataforma permite especialização e otimização.
  • A Adaptabilidade entre domínios de programação (nuvem, cliente, jogos) está habilitada com implementações especializadas do modelo de programação de uso geral.
  • Os Padrões do setor, como OpenTelemetry e gRPC, são favorecidos em relação às soluções sob medida.

O .NET é mantido pela Microsoft e pela comunidade. Ele é atualizado regularmente para garantir que os usuários implantem aplicativos seguros e confiáveis na 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 outros idiomas) no código executável (runtime).
  • SDK e outras ferramentas - habilita a criação e o monitoramento dos aplicativos com fluxos de trabalho modernos.
  • Pilhas de aplicativos - como ASP.NET Core e Windows Forms, que permitem a gravação dos aplicativos.

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

O C# é orientado aos objetos e o tempo de execução oferece suporte à orientação aos objetos. O 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 nos fluxos de trabalho intuitivos.

As principais bibliotecas expõem milhares de tipos, muitos dos quais se integram e alimentam o idioma C#. Por exemplo, a instrução foreach do C#’s permite que você enumere 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 para coleta de lixo, mas a limpeza do prompt é possível pelo IDisposable e suporte direto à linguagem na instrução using.

O suporte para fazer várias coisas ao mesmo tempo é fundamental para praticamente todas as cargas de trabalho. Isso pode ser feito por aplicativos de clientes que realizam processamento em segundo plano e mantêm a interface do usuário responsiva, serviços que lidam com milhares de solicitações simultâneas, dispositivos que respondem a uma infinidade de estímulos simultâneos ou máquinas de alta potência que paralelizam o processamento de operações de computação intensiva. O suporte à programação assíncrona é um recurso de primeira classe do idioma de programação C#, que fornece as palavras-chave async e await que facilitam a gravação e a composição das operações assíncronas, aproveitando todos os benefícios de todos os constructos de fluxo de controle que o idioma tem a oferecer.

O sistema de tipos oferece uma amplitude significativa, atendendo igualmente à segurança, à descritividade, ao 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étodos padrão) e envio de métodos virtuais para fornecer um comportamento sensato para todas as camadas de tipos que a orientação a objetos permite. Os Tipos genéricos são um recurso generalizado que permite que você especialize classes para um ou mais tipos.

O runtime do .NET fornece gerenciamento automático de memória por um coletor de lixo. Para qualquer linguagem, seu modelo de gerenciamento de memória é provavelmente sua característica mais definidora. Isso é verdadeiro para os idiomas .NET. O .NET tem um GC de autoajuste e rastreamento. Seu objetivo é proporcionar uma operação "hands off" no caso geral e, ao mesmo tempo, oferecer opções de configuração para cargas de trabalho mais extremas. O GC atual é o resultado de muitos anos de investimentos e aprendizados de uma infinidade de cargas de trabalho.

Os tipos de valor e blocos de memória alocados em pilha oferecem controle mais direto e de baixo nível sobre os dados e a interoperabilidade de plataforma nativa, ao contrário dos tipos gerenciados pelo GC do 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 têm suporte total pelo sistema genérico do NET, o que significa que tipos genéricos como List<T> podem fornecer representações de memória simples e sem a sobrecarga das coleções dos tipos de valor.

A Reflexão é um paradigma de "programas como dados", permitindo que uma parte de um programa consulte e invoque outra dinamicamente, em termos de assemblies, tipos e membros. É particularmente útil para modelos e ferramentas de programação com limite tardio.

As exceções são o principal modelo de tratamento de erros no .NET. As exceções têm o benefício de que as informações de erro não precisam ser representadas nas assinaturas de método ou tratadas 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 no seu código. Um aplicativo com falha é mais confiável e diagnosticável do que um aplicativo com comportamento indefinido.

As pilhas dos aplicativos, como ASP.NET Core e Windows Forms, baseiam-se nas e aproveitam as bibliotecas de baixo nível, idioma e runtime. As pilhas dos 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 moderna para desenvolvedores, tanto em uma área de trabalho do desenvolvedor quanto para a integração contínua (CI). A experiência do desenvolvedor moderno inclui a capacidade de criar, analisar e testar códigos. Geralmente, os projetos do .NET podem ser criados por um único comando dotnet build, que orquestra a restauração dos pacotes NuGet e a criação de dependências.

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

Gratuito e software livre

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

A fonte e os binários do .NET são licenciados com a licença MIT. As licenças adicionais se aplicam 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 em arquiteturas Arm64, x64 e x86.

As 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 Terça-feira do Patch (segunda terça-feira), normalmente às 10h, horário do Pacífico.

Ecossistema do .NET

Há várias variantes do .NET, cada uma dando suporte a um tipo diferente de aplicativo. O motivo de várias variantes é parte histórico e parte técnico.

Implementações do .NET

  • .NET Framework -- o .NET original. Ele fornece acesso aos amplos recursos do Windows e do Windows Server. Ele tem suporte ativo, em manutenção.
  • Mono – a comunidade original e o .NET de software livre. Uma implementação multiplataforma do .NET Framework. Suportado ativamente 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 e que permanece significativamente compatível com o .NET Framework. Suportado ativamente para Linux, macOS e Windows.

Próximas etapas