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.