Introdução ao .NETIntroduction to .NET

O .NET é uma plataforma de desenvolvimento de software livre gratuita para a criação de vários tipos de aplicativos, como:.NET is a free, open-source development platform for building many kinds of apps, such as:

Compartilhe a funcionalidade entre diferentes aplicativos e tipos de aplicativos usando bibliotecas de classes.Share functionality among different apps and app types by using class libraries.

Com o .NET, seus arquivos de código e de projeto parecem e sentem o mesmo, independentemente do tipo de aplicativo que você está criando.With .NET, your code and project files look and feel the same no matter which type of app you're building. Você tem acesso aos mesmos recursos de tempo de execução, API e linguagem com cada aplicativo.You have access to the same runtime, API, and language capabilities with each app.

Plataforma cruzadaCross platform

Você pode criar aplicativos .NET para muitos sistemas operacionais, incluindo:You can create .NET apps for many operating systems, including:

  • WindowsWindows
  • macOSmacOS
  • LinuxLinux
  • AndroidAndroid
  • iOSiOS
  • tvOStvOS
  • watchOSwatchOS

As arquiteturas de processador com suporte incluem:Supported processor architectures include:

  • x64x64
  • x86x86
  • ARM32ARM32
  • ARM64ARM64

O .NET permite que você use recursos específicos da plataforma, como APIs do sistema operacional..NET lets you use platform-specific capabilities, such as operating system APIs. Os exemplos são Windows Forms e WPF no Windows e as ligações nativas para cada plataforma móvel do Xamarin.Examples are Windows Forms and WPF on Windows and the native bindings to each mobile platform from Xamarin.

Para obter mais informações, consulte política de ciclo de vida do so com suporte e Catálogo de RID do .net.For more information, see Supported OS lifecycle policy and .NET RID Catalog.

Software livreOpen source

O .NET é um software livre, usando as licenças MIT e Apache 2..NET is open source, using MIT and Apache 2 licenses. O .NET é um projeto do .net Foundation..NET is a project of the .NET Foundation.

Para obter mais informações, consulte a lista de repositórios do projeto no github.com.For more information, see the list of project repositories on GitHub.com.

SuporteSupport

O .NET tem suporte da Microsoft no Windows, macOS e Linux..NET is supported by Microsoft on Windows, macOS, and Linux. Ele é atualizado regularmente para segurança e qualidade, na segunda terça-feira de cada mês.It's updated regularly for security and quality, on the second Tuesday of each month.

As distribuições binárias do .NET da Microsoft são criadas e testadas em servidores mantidos pela Microsoft no Azure e seguem práticas de engenharia e segurança da Microsoft..NET binary distributions from Microsoft are built and tested on Microsoft-maintained servers in Azure and follow Microsoft engineering and security practices.

O Red Hat dá suporte ao .net em Red Hat Enterprise Linux (RHEL).Red Hat supports .NET on Red Hat Enterprise Linux (RHEL). Red Hat e Microsoft colaboram para garantir que o .NET Core funcione bem no RHEL.Red Hat and Microsoft collaborate to ensure that .NET Core works well on RHEL.

O tizen dá suporte ao .net em plataformas tizen.Tizen supports .NET on Tizen platforms.

Para obter mais informações, consulte versões e suporte para .NET Core e .NET 5.For more information, see Releases and support for .NET Core and .NET 5.

Ferramentas e produtividadeTools and productivity

O .NET oferece a você uma opção de linguagens, IDEs (ambientes de desenvolvimento integrados) e outras ferramentas..NET gives you a choice of languages, integrated development environments (IDEs), and other tools.

Linguagens de programaçãoProgramming languages

O .NET dá suporte a três linguagens de programação:.NET supports three programming languages:

  • C#C#

    O C# (pronuncia-se "Veja nítido") é uma linguagem de programação moderna, orientada a objeto e de tipo seguro.C# (pronounced "See Sharp") is a modern, object-oriented, and type-safe programming language. O C# tem suas raízes na família de linguagens C e os programadores em C, C++, Java e JavaScript a reconhecerão imediatamente.C# has its roots in the C family of languages and will be immediately familiar to C, C++, Java, and JavaScript programmers.

  • F#F#

    A linguagem F # dá suporte a modelos de programação funcionais, orientados a objeto e imperativos.The F# language supports functional, object-oriented, and imperative programming models.

  • Visual BasicVisual Basic

    Entre as linguagens do .NET, a sintaxe do Visual Basic é mais próxima da linguagem humana comum, o que pode facilitar o aprendizado.Among the .NET languages, the syntax of Visual Basic is the closest to ordinary human language, which can make it easier to learn. Ao contrário do C# e F #, para os quais a Microsoft está desenvolvendo ativamente novos recursos, a linguagem Visual Basic é estável.Unlike C# and F#, for which Microsoft is actively developing new features, the Visual Basic language is stable. Não há suporte para Visual Basic para aplicativos Web, mas há suporte para APIs Web.Visual Basic isn't supported for web apps, but it is supported for web APIs.

Aqui estão alguns dos recursos com suporte nas linguagens .NET:Here are some of the capabilities that .NET languages support:

IDEsIDEs

Os ambientes de desenvolvimento integrados para .NET incluem:The integrated development environments for .NET include:

  • Visual StudioVisual Studio

    Somente é executado no Windows.Runs on Windows only. Tem ampla funcionalidade interna projetada para funcionar com o .NET.Has extensive built-in functionality designed to work with .NET. A Community Edition é gratuita para estudantes, colaboradores de software livre e indivíduos.The Community edition is free for students, open-source contributors, and individuals.

  • Visual Studio CodeVisual Studio Code

    É executado no Windows, no macOS e no Linux.Runs on Windows, macOS, and Linux. Gratuito e software livre.Free and open source. As extensões estão disponíveis para trabalhar com linguagens .NET.Extensions are available for working with .NET languages.

  • Visual Studio para MacVisual Studio for Mac

    É executado somente no macOS.Runs on macOS only. Para desenvolver aplicativos .NET e jogos para iOS, Android e Web.For developing .NET apps and games for iOS, Android, and web.

  • Codespaces do GitHubGitHub Codespaces

    Um ambiente de Visual Studio Code online, atualmente em beta.An online Visual Studio Code environment, currently in beta.

SDK e tempos de execuçãoSDK and runtimes

O SDK do .net é um conjunto de bibliotecas e ferramentas para desenvolver e executar aplicativos .net.The .NET SDK is a set of libraries and tools for developing and running .NET applications.

Ao baixar o .net, você pode escolher o SDK ou um tempo de execução, como o tempo de execução do .net ou o tempo de execução do ASP.NET Core.When you download .NET, you can choose the SDK or a runtime, such as the .NET runtime or the ASP.NET Core runtime. Instale um tempo de execução em um computador que você deseja preparar para executar aplicativos .NET.Install a runtime on a machine that you want to prepare for running .NET apps. Instale o SDK em um computador que você deseja usar para desenvolvimento.Install the SDK on a machine that you want to use for development. Ao baixar o SDK, você obtém automaticamente os tempos de execução com ele.When you download the SDK, you automatically get the runtimes with it.

O download do SDK inclui os seguintes componentes:The SDK download includes the following components:

  • A CLI do .net.The .NET CLI. Ferramentas de linha de comando que você pode usar para desenvolvimento local e scripts de integração contínua.Command-line tools that you can use for local development and continuous integration scripts.
  • O driverdotnet.The dotnet driver. Um comando da CLI que executa aplicativos dependentes da estrutura.A CLI command that runs framework-dependent apps.
  • Os compiladores da linguagem de programação Roslyn e F # .The Roslyn and F# programming language compilers.
  • O mecanismo de compilação do MSBuild .The MSBuild build engine.
  • O tempo de execução do .net.The .NET runtime. Fornece um sistema de tipos, carregamento de assembly, coletor de lixo, interoperabilidade nativa e outros serviços básicos.Provides a type system, assembly loading, a garbage collector, native interop, and other basic services.
  • Bibliotecas de tempo de execução.Runtime libraries. Fornece tipos de dados primitivos e utilitários fundamentais.Provides primitive data types and fundamental utilities.
  • O tempo de execução de ASP.NET Core.The ASP.NET Core runtime. Fornece serviços básicos para aplicativos conectados à Internet, como aplicativos Web, aplicativos de IoT e back-ends móveis.Provides basic services for internet-connected apps, such as web apps, IoT apps, and mobile backends.
  • O tempo de execução da área de trabalho.The desktop runtime. Fornece serviços básicos para aplicativos da área de trabalho do Windows, incluindo Windows Forms e WPF.Provides basic services for Windows desktop apps, including Windows Forms and WPF.

O download do tempo de execução inclui os seguintes componentes:The runtime download includes the following components:

  • Opcionalmente, o tempo de execução da área de trabalho ou ASP.NET Core.Optionally, the desktop or ASP.NET Core runtime.
  • O tempo de execução do .net.The .NET runtime. Fornece um sistema de tipos, carregamento de assembly, coletor de lixo, interoperabilidade nativa e outros serviços básicos.Provides a type system, assembly loading, a garbage collector, native interop, and other basic services.
  • Bibliotecas de tempo de execução.Runtime libraries. Fornece tipos de dados primitivos e utilitários fundamentais.Provides primitive data types and fundamental utilities.
  • O driverdotnet.The dotnet driver. Um comando da CLI que executa aplicativos dependentes da estrutura.A CLI command that runs framework-dependent apps.

Para obter mais informações, consulte os seguintes recursos:For more information, see the following resources:

Sistema de projeto e MSBuildProject system and MSBuild

Um aplicativo .NET é criado a partir do código-fonte usando o MSBuild.A .NET app is built from source code by using MSBuild. Um arquivo de projeto (. csproj, . fsproj ou . vbproj) especifica destinos e tarefas associadas que são responsáveis por compilar, empacotar e publicar código.A project file (.csproj, .fsproj, or .vbproj) specifies targets and associated tasks that are responsible for compiling, packing, and publishing code. Há identificadores do SDK que se referem a coleções padrão de destinos e tarefas.There are SDK identifiers that refer to standard collections of targets and tasks. O uso desses identificadores ajuda a manter os arquivos de projeto pequenos e fáceis de trabalhar com o.The use of these identifiers helps keep project files small and easy to work with. Por exemplo, aqui está um arquivo de projeto para um aplicativo de console:For example, here is a project file for a console app:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>
</Project>

E aqui está um para um aplicativo Web:And here's one for a web app:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>
</Project>

Nesses exemplos, o Sdk atributo do Project elemento especifica um conjunto de destinos e tarefas do MSBuild que criam o projeto.In these examples, the Sdk attribute of the Project element specifies a set of MSBuild targets and tasks that build the project. O TargetFramework elemento Especifica a versão do .NET da qual o aplicativo depende.The TargetFramework element specifies the .NET version that the app depends on. Você pode editar o arquivo de projeto para adicionar outros destinos e tarefas específicos ao projeto.You can edit the project file to add additional targets and tasks specific to the project.

Para obter mais informações, consulte visão geral do SDK do projeto .net e estruturas de destino.For more information, see .NET project SDK overview and Target frameworks.

CI/CDCI/CD

O MSBuild e a CLI do .NET podem ser usados com várias ferramentas de integração contínua e ambientes, como:MSBuild and the .NET CLI can be used with various continuous integration tools and environments, such as:

Para obter mais informações, consulte usando o SDK e as ferramentas do .net na CI (integração contínua)For more information, see Using .NET SDK and tools in Continuous Integration (CI)

NuGetNuGet

O NuGet é um Gerenciador de pacotes de código-fonte aberto projetado para .net.NuGet is an open-source package manager designed for .NET. Um pacote NuGet é um arquivo . zip com a .nupkg extensão que contém código compilado (DLLs), outros arquivos relacionados a esse código e um manifesto descritivo que inclui informações como o número de versão do pacote.A NuGet package is a .zip file with the .nupkg extension that contains compiled code (DLLs), other files related to that code, and a descriptive manifest that includes information like the package's version number. Desenvolvedores com código para compartilhar criar pacotes e publicá-los no NuGet.org ou em um host privado.Developers with code to share create packages and publish them to nuget.org or a private host. Os desenvolvedores que desejam usar código compartilhado adicionam um pacote ao seu projeto e, em seguida, podem chamar a API exposta pelo pacote em seu código de projeto.Developers who want to use shared code add a package to their project and can then call the API exposed by the package in their project code.

Para obter mais informações, consulte a documentação do NuGet.For more information, see NuGet documentation.

.NET Interativo.NET Interactive

O .NET Interactive é um grupo de ferramentas de CLI e APIs que permitem aos usuários criar experiências interativas na Web, na redução e nos notebooks..NET Interactive is a group of CLI tools and APIs that enable users to create interactive experiences across the web, markdown, and notebooks.

Para obter mais informações, consulte os seguintes recursos:For more information, see the following resources:

Modelos de execuçãoExecution models

Os aplicativos .NET executam código gerenciado em um ambiente de tempo de execução conhecido como CLR (Common Language Runtime)..NET apps run managed code in a runtime environment known as the Common Language Runtime (CLR).

CLRCLR

O .NET CLR é um tempo de execução de plataforma cruzada que inclui suporte para Windows, MacOS e Linux.The .NET CLR is a cross-platform runtime that includes support for Windows, macOS, and Linux. O CLR manipula a alocação e o gerenciamento de memória.The CLR handles memory allocation and management. O CLR também é uma máquina virtual que não só executa aplicativos, mas também gera e compila código usando um compilador JIT (just-in-time).The CLR is also a virtual machine that not only executes apps but also generates and compiles code using a just-in-time (JIT) compiler.

Para obter mais informações, consulte visão geral do CLR (Common Language Runtime).For more information, see Common Language Runtime (CLR) overview.

Compilador JIT e ILJIT compiler and IL

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).Higher-level .NET languages, such as C#, compile down to a hardware-agnostic instruction set, which is called Intermediate Language (IL). Quando um aplicativo é executado, o compilador JIT traduz o IL para o código do computador que o processador entende.When an app runs, the JIT compiler translates IL to machine code that the processor understands. A compilação JIT ocorre no mesmo computador em que o código vai ser executado.JIT compilation happens on the same machine that the code is going to run on.

Como a compilação JIT ocorre durante a execução do aplicativo, o tempo de compilação é parte do tempo de execução.Since JIT compilation occurs during execution of the application, the compilation time is part of the run time. Portanto, os compiladores JIT precisam balancear o tempo gasto otimizando o código contra as economias que o código resultante pode produzir.Therefore, JIT compilers have to balance time spent optimizing code against the savings that the resulting code can produce. Mas um compilador JIT conhece o hardware real e pode liberar os desenvolvedores de ter que enviar diferentes implementações para diferentes plataformas.But a JIT compiler knows the actual hardware and can free developers from having to ship different implementations for different platforms.

O compilador JIT .NET pode fazer uma compilação em camadas, o que significa que ele pode recompilar métodos individuais em tempo de execução.The .NET JIT compiler can do tiered compilation, which means it can recompile individual methods at run time. Esse recurso permite que ele seja compilado rapidamente e ainda seja capaz de produzir uma versão altamente ajustada do código para métodos usados com frequência.This feature lets it compile quickly while still being able to produce a highly tuned version of the code for frequently used methods.

Para obter mais informações, consulte processo de execução gerenciado e compilação em camadas.For more information, see Managed execution process and Tiered compilation.

Compilador AOTAOT compiler

A experiência padrão para a maioria das cargas de trabalho do .NET é o compilador JIT, mas o .NET oferece duas formas de compilação de AOT (antecipação de tempo):The default experience for most .NET workloads is the JIT compiler, but .NET offers two forms of ahead-of-time (AOT) compilation:

  • Alguns cenários exigem a compilação da AOT de 100%.Some scenarios require 100% AOT compilation. Um exemplo é Ios.An example is iOS.
  • Em outros cenários, a maior parte do código de um aplicativo é compilada pela AOT, mas algumas são compiladas por JIT.In other scenarios, most of an app's code is AOT-compiled but some is JIT-compiled. Alguns padrões de código não são amigáveis para a AOT (como os genéricos).Some code patterns aren't friendly to AOT (like generics). Um exemplo dessa forma de compilação AOT é a opção de publicação pronta para execução .An example of this form of AOT compilation is the ready-to-run publish option. Essa forma de AOT oferece os benefícios da AOT sem suas desvantagens.This form of AOT offers the benefits of AOT without its drawbacks.

Gerenciamento automático de memóriaAutomatic memory management

O GC ( coletor de lixo ) gerencia a alocação e a liberação de memória para aplicativos.The garbage collector (GC) manages the allocation and release of memory for applications. Cada vez que seu código cria um novo objeto, o CLR aloca memória para o objeto a partir do heap gerenciado.Each time your code creates a new object, the CLR allocates memory for the object from the managed heap. Desde que exista espaço de endereço disponível no heap gerenciado, o runtime continua alocando espaço para novos objetos.As long as address space is available in the managed heap, the runtime continues to allocate space for new objects. Quando não houver espaço de endereço livre suficiente, o GC verificará se há objetos no heap gerenciado que não estão mais sendo usados pelo aplicativo.When not enough free address space remains, the GC checks for objects in the managed heap that are no longer being used by the application. Em seguida, ele recupera essa memória.It then reclaims that memory.

O GC é um dos serviços CLR que ajuda a garantir a segurança da memória.The GC is one of the CLR services that help ensure memory safety. Um programa é considerado de memória segura se ele acessa somente a memória alocada.A program is memory safe if it accesses only allocated memory. Por exemplo, o runtime garante que um aplicativo não acesse memória não alocada além dos limites de uma matriz.For instance, the runtime ensures that an app doesn't access unallocated memory beyond the bounds of an array.

Para obter mais informações, consulte gerenciamento automático de memória e conceitos básicos da coleta de lixo.For more information, see Automatic memory management and Fundamentals of garbage collection.

Trabalhando com recursos não gerenciadosWorking with unmanaged resources

Às vezes, o código precisa fazer referência a recursos não gerenciados.Sometimes code needs to reference unmanaged resources. Os recursos não gerenciados são recursos que não são mantidos automaticamente pelo runtime do .NET.Unmanaged resources are resources that aren't automatically maintained by the .NET runtime. Por exemplo, um identificador de arquivo é um recurso não gerenciado.For example, a file handle is an unmanaged resource. Um objeto FileStream é um objeto gerenciado, mas ele faz referência a um identificador de arquivo, que não é gerenciado.A FileStream object is a managed object, but it references a file handle, which is unmanaged. Quando terminar de usar o FileStream , você precisará liberar explicitamente o identificador de arquivo.When you're done using the FileStream, you need to explicitly release the file handle.

No .NET, objetos que fazem referência a recursos não gerenciados implementam a interface IDisposable.In .NET, objects that reference unmanaged resources implement the IDisposable interface. Quando você termina de usar o objeto, você chama o método Dispose() do objeto, responsável por liberar quaisquer recursos não gerenciados.When you're done using the object, you call the object's Dispose() method, which is responsible for releasing any unmanaged resources. As linguagens .NET fornecem uma using instrução conveniente (C#, F #, VB) que garante que o Dispose método seja chamado.The .NET languages provide a convenient using statement (C#, F#, VB) that ensures the Dispose method is called.

Para obter mais informações, consulte limpando recursos não gerenciados.For more information, see Cleaning up unmanaged resources.

Modelos de implantaçãoDeployment models

Os aplicativos .NET podem ser publicados em dois modos diferentes:.NET apps can be published in two different modes:

  • A publicação de um aplicativo como independente produz um arquivo executável que inclui o tempo de execução e as bibliotecasdo .net e o aplicativo e suas dependências.Publishing an app as self-contained produces an executable file that includes the .NET runtime and libraries, and the application and its dependencies. Os usuários do aplicativo podem executá-lo em um computador que não tem o tempo de execução do .NET instalado.Users of the application can run it on a machine that doesn't have the .NET runtime installed. Os aplicativos independentes são específicos da plataforma e, opcionalmente, podem ser publicados usando uma forma de compilação AOT.Self-contained apps are platform-specific, and they can optionally be published using a form of AOT compilation.

  • A publicação de um aplicativo como dependente da estrutura produz um arquivo executável e arquivos binários (arquivos . dll ) que incluem apenas o próprio aplicativo e suas dependências.Publishing an app as framework-dependent produces an executable file and binary files (.dll files) that include only the application itself and its dependencies. Os usuários do aplicativo precisam instalar o tempo de execuçãodo .net separadamente.Users of the application have to separately install the .NET runtime. O arquivo executável é específico da plataforma, mas os arquivos . dll de aplicativos dependentes da estrutura são de plataforma cruzada.The executable file is platform-specific, but The .dll files of framework-dependent applications are cross-platform.

    Você pode instalar várias versões do tempo de execução lado a lado para executar aplicativos dependentes da estrutura direcionados a diferentes versões do tempo de execução.You can install multiple versions of the runtime side by side to run framework-dependent apps that target different versions of the runtime. Para obter mais informações, consulte estruturas de destino.For more information, see Target frameworks.

Os executáveis são produzidos para plataformas de destino específicas, que você especifica com um RID (identificador de tempo de execução).Executables are produced for specific target platforms, which you specify with a runtime identifier (RID).

Para obter mais informações, consulte visão geral da publicação de aplicativos .net e introdução ao .net e ao Docker.For more information, see .NET application publishing overview and Introduction to .NET and Docker.

Bibliotecas de runtimeRuntime libraries

O .NET tem um conjunto padrão de bibliotecas de classes, conhecido como bibliotecas de tempo de execução, bibliotecas de estruturasou a BCL (biblioteca de classes base)..NET has an expansive standard set of class libraries, known as runtime libraries, framework libraries, or the base class library (BCL). Essas bibliotecas fornecem implementações para muitos tipos específicos de carga de trabalho e de finalidade geral e funcionalidade de utilitário.These libraries provide implementations for many general-purpose and workload-specific types and utility functionality.

Aqui estão alguns exemplos de tipos definidos nas bibliotecas de tempo de execução do .NET:Here are some examples of types defined in the .NET runtime libraries:

Para obter mais informações, consulte visão geral das bibliotecas de tempo de execução.For more information, see the Runtime libraries overview. O código-fonte para as bibliotecas está no repositório de dotnet/tempo de execução do GitHub.The source code for the libraries is in the GitHub dotnet/runtime repository.

Extensões para as bibliotecas de tempo de execuçãoExtensions to the runtime libraries

As bibliotecas para algumas funcionalidades de aplicativos comumente usadas não estão incluídas nas bibliotecas de tempo de execução, mas são disponibilizadas em pacotes NuGet, como o seguinte:Libraries for some commonly used application functionality aren't included in the runtime libraries but are made available in NuGet packages, such as the following:

Pacote NuGetNuGet package DocumentaçãoDocumentation
Microsoft.Extensions.HostingMicrosoft.Extensions.Hosting Gerenciamento de tempo de vida do aplicativo (host genérico)Application lifetime management (Generic Host)
Microsoft. Extensions. DependencyInjectionMicrosoft.Extensions.DependencyInjection DI (injeção de dependência)Dependency injection (DI)
Microsoft.Extensions.ConfiguraçãoMicrosoft.Extensions.Configuration ConfigurationConfiguration
Microsoft.Extensions.LoggingMicrosoft.Extensions.Logging Registro em logLogging
Microsoft. Extensions. opçõesMicrosoft.Extensions.Options Padrão de opçõesOptions pattern

Para obter mais informações, consulte o repositório dotnet/extensões no GitHub.For more information, see the dotnet/extensions repository on GitHub.

Acesso de dadosData access

O .NET fornece um ORM (objeto/mapeador relacional) e uma maneira de escrever consultas SQL no código..NET provides an Object/Relational Mapper (ORM) and a way to write SQL queries in code.

Entity Framework CoreEntity Framework Core

O Entity Framework (EF) Core é uma tecnologia de acesso a dados de software livre e entre plataformas que pode servir como um ORM.Entity Framework (EF) Core is an open source and cross-platform data-access technology that can serve as an ORM. EF Core permite trabalhar com um banco de dados referindo-se a objetos .NET no código.EF Core lets you work with a database by referring to .NET objects in code. Ele reduz a quantidade de código de acesso a dados que, de outra forma, você precisaria escrever e testar.It reduces the amount of data-access code you would otherwise need to write and test. O EF Core dá suporte a vários mecanismos de banco de dados.EF Core supports many database engines.

Para obter mais informações, consulte Entity Framework Core e provedores de banco de dados.For more information, see Entity Framework Core and Database Providers.

LINQLINQ

A consulta integrada à linguagem (LINQ) permite que você escreva um código declarativo para operar em dados.Language-integrated query (LINQ) lets you write declarative code for operating on data. Os dados podem ser de várias formas (como objetos na memória, um banco de dados SQL ou um documento XML), mas o código LINQ que você escreve não difere para cada fonte de dados.The data can be in many forms (such as in-memory objects, a SQL database, or an XML document), but the LINQ code you write typically doesn't differ by data source.

Para obter mais informações, consulte visão geral do LINQ (consulta integrada à linguagem).For more information, see LINQ (Language Integrated Query) overview.

Terminologia do .NET.NET terminology

Para entender a documentação do .NET, ele pode ajudar a saber como o uso de alguns termos mudou ao longo do tempo.To understand .NET documentation, it can help to know how the usage of some terms has changed over time.

.NET Core e .NET 5.NET Core and .NET 5

No 2002, a Microsoft lançou o .NET Framework, uma plataforma de desenvolvimento para a criação de aplicativos do Windows.In 2002, Microsoft released .NET Framework, a development platform for creating Windows apps. Hoje .NET Framework está na versão 4,8 e ainda tem suporte da Microsoft.Today .NET Framework is at version 4.8 and is still supported by Microsoft.

Em 2014, a Microsoft começou a escrever um sucessor de software livre entre plataformas para .NET Framework.In 2014, Microsoft began writing a cross-platform, open-source successor to .NET Framework. Essa nova implementação do .NET foi denominada .NET Core até atingir a versão 3,1.This new implementation of .NET was named .NET Core until it reached version 3.1. A próxima versão após o .NET Core 3,1 é o .NET 5,0, que está atualmente em versão prévia.The next version after .NET Core 3.1 is .NET 5.0, which is currently in preview. O número de versão 4 foi ignorado para evitar confusão entre esta implementação do .NET e .NET Framework 4,8.Version number 4 was skipped to avoid confusion between this implementation of .NET and .NET Framework 4.8. O nome "Core" foi Descartado para tornar claro que essa é agora a principal implementação do .NET.The name "Core" was dropped to make clear that this is now the main implementation of .NET.

Este artigo é sobre o .NET 5, mas grande parte da documentação do .NET 5 ainda tem referências a ".NET Core" ou ".NET Framework".This article is about .NET 5, but much of the documentation for .NET 5 still has references to ".NET Core" or ".NET Framework". Além disso, "Core" permanece nos nomes ASP.NET Core e Entity Framework Core.In addition, "Core" remains in the names ASP.NET Core and Entity Framework Core.

A documentação também se refere a .NET Standard.The documentation also refers to .NET Standard. .Net Standard é uma especificação de API que permite desenvolver bibliotecas de classes para várias implementações do .net..NET Standard is an API specification that lets you develop class libraries for multiple implementations of .NET.

Para obter mais informações, consulte componentes arquitetônicos .net.For more information, see .NET architectural components.

Termos sobrecarregadosOverloaded terms

Algumas das terminologias do .NET podem ser confusas porque a mesma palavra é usada de maneiras diferentes em diferentes contextos.Some of the terminology for .NET can be confusing because the same word is used in different ways in different contexts. Aqui estão algumas das instâncias mais proeminentes:Here are a few of the more prominent instances:

  • appmodelruntime

    ContextoContext "tempo de execução" significando"runtime" meaning
    CLR (Common Language Runtime)Common Language Runtime (CLR) O ambiente de execução de um programa gerenciado.The execution environment for a managed program. O sistema operacional faz parte do ambiente de tempo de execução, mas não faz parte do tempo de execução do .NET.The OS is part of the runtime environment but isn't part of the .NET runtime.
    Tempo de execução do .NET na página de download do .NET.NET runtime on the .NET download page As bibliotecas CLR e Runtime, que juntas fornecem suporte para a execução de aplicativos dependentes da estrutura .The CLR and runtime libraries, which together provide support for running framework-dependent apps. A página também oferece opções de tempo de execução para aplicativos do ASP.NET Core Server e aplicativos da área de trabalho do Windows.The page also offers runtime choices for ASP.NET Core server apps and Windows desktop apps.
    Identificador de tempo de execução (RID)Runtime Identifier (RID) A plataforma do sistema operacional e a arquitetura de CPU em que um aplicativo .NET é executado.The OS platform and CPU architecture that a .NET app runs on. Por exemplo: Windows x64, Linux x64.For example: Windows x64, Linux x64.
  • Frameworkframework

    ContextoContext "estrutura" significando"framework" meaning
    .NET Framework.NET Framework A implementação original somente do Windows do .NET.The original, Windows-only implementation of .NET. "Framework" está em letras maiúsculas."Framework" is capitalized.
    estrutura de destinotarget framework A coleção de APIs da qual um aplicativo ou biblioteca do .NET depende.The collection of APIs that a .NET app or library relies on. Exemplos: .NET Core 3,1, .NET Standard 2,0Examples: .NET Core 3.1, .NET Standard 2.0
    TFM (Moniker de Estrutura de Destino)Target Framework Moniker (TFM) Um TFM é um formato de token padronizado para especificar a estrutura de destino de um aplicativo ou biblioteca .NET.A TFM is a standardized token format for specifying the target framework of a .NET app or library. Exemplo: net462 para .NET Framework 4.6.2.Example: net462 for .NET Framework 4.6.2.
    aplicativo dependente de estruturaframework-dependent app Um aplicativo que só pode ser executado em um computador em que você instalou o tempo de execução da página de download do .net.An app that can only run on a machine where you've installed the runtime from the .NET download page. "Estrutura" nesse uso é a mesma coisa que o "tempo de execução" que você baixa da página de download do .NET."Framework" in this usage is the same thing as the "runtime" that you download from the .NET download page.
    bibliotecas do Frameworkframework libraries Às vezes, usado como sinônimo para bibliotecas de tempo de execução.Sometimes used as a synonym for runtime libraries.
  • SDKSDK

    ContextoContext "SDK" significando"SDK" meaning
    SDK na página de download do .NETSDK on the .NET download page Uma coleção de ferramentas e bibliotecas que você baixa e instala para desenvolver e executar aplicativos .NET.A collection of tools and libraries that you download and install to develop and run .NET apps. Inclui a CLI, o MSBuild, o tempo de execução do .NET e outros componentes.Includes the CLI, MSBuild, the .NET runtime, and other components.
    Projeto no estilo SDKSDK-style project Um conjunto de destinos e tarefas do MSBuild que especifica como criar um projeto para um tipo de aplicativo específico.A set of MSBuild targets and tasks that specifies how to build a project for a particular app type. O SDK, nesse sentido, é especificado usando o Sdk atributo do Project elemento em um arquivo de projeto.The SDK in this sense is specified by using the Sdk attribute of the Project element in a project file.
  • platformplatform

    ContextoContext "plataforma" significa"platform" meaning
    plataforma cruzadacross platform Neste termo, "plataforma" significa um sistema operacional e o hardware em que ele é executado, como Windows, macOS, Linux, iOS e Android.In this term, "platform" means an operating system and the hardware it runs on, such as Windows, macOS, Linux, iOS, and Android.
    Plataforma .NET.NET platform O uso varia.Usage varies. A referência pode ser para uma implementação do .NET (como .NET Framework ou .NET 5) ou para um conceito abrangente de .NET, incluindo todas as implementações.The reference may be to one implementation of .NET (such as .NET Framework or .NET 5) or to an overarching concept of .NET including all implementations.

Para obter mais informações sobre a terminologia do .NET, consulte o Glossário do .net.For more information about .NET terminology, see the .NET glossary.

Cenários avançadosAdvanced scenarios

As seções a seguir explicam alguns recursos do .NET que são úteis em cenários avançados.The following sections explain some capabilities of .NET that are useful in advanced scenarios.

Interoperabilidade nativaNative interop

Todos os sistemas operacionais incluem uma API (interface de programação de aplicativo) que fornece serviços de sistema.Every operating system includes an application programming interface (API) that provides system services. O .NET fornece várias maneiras de chamar essas APIs..NET provides several ways to call those APIs.

A principal maneira de interoperar com APIs nativas é por meio de "invocação de plataforma" ou P/Invoke para curto.The main way to interoperate with native APIs is via "platform invoke" or P/Invoke for short. P/Invoke tem suporte em plataformas Linux e Windows.P/Invoke is supported across Linux and Windows platforms. Uma maneira somente Windows de interoperação é conhecida como "interoperabilidade COM", que funciona com componentes com em código gerenciado.A Windows-only way of interoperating is known as "COM interop," which works with COM components in managed code. Ela foi desenvolvida com base na infraestrutura de P/Invoke, mas funciona de maneiras levemente diferentes.It's built on top of the P/Invoke infrastructure, but it works in subtly different ways.

Para obter mais informações, consulte interoperabilidade nativa.For more information, see Native interoperability.

Código não seguroUnsafe code

Dependendo do suporte da linguagem, o CLR permite acessar a memória nativa e realizar aritmética de ponteiro por meio de código unsafe.Depending on language support, the CLR lets you access native memory and do pointer arithmetic via unsafe code. Essas operações são necessárias para certos algoritmos e interoperabilidade do sistema.These operations are needed for certain algorithms and system interoperability. Embora seja eficiente, o uso de código não seguro é desencorajado, a menos que seja necessário interoperar com as APIs do sistema ou implementar o algoritmo mais eficiente.Although powerful, use of unsafe code is discouraged unless it's necessary to interoperate with system APIs or implement the most efficient algorithm. O código não seguro pode não ser executado da mesma maneira em ambientes diferentes e também perde os benefícios de um coletor de lixo e da segurança de tipos.Unsafe code may not execute the same way in different environments and also loses the benefits of a garbage collector and type safety. Recomenda-se restringir e centralizar ao máximo o código não seguro, além de testar esse código detalhadamente.It's recommended to confine and centralize unsafe code as much as possible and test that code thoroughly.

Para obter mais informações, consulte código e ponteiros sem segurança.For more information, see Unsafe code and pointers.

Próximas etapasNext steps