Введение в .NETIntroduction to .NET

.NET — это бесплатная платформа разработки с открытым исходным кодом для создания различных типов приложений, таких как следующие:.NET is a free, open-source development platform for building many kinds of apps, such as:

Для совместного использования функциональных возможностей различных приложений и типов приложений используются библиотеки классов.Share functionality among different apps and app types by using class libraries.

При использовании .NET файлы кода и проекта будут выглядеть одинаково, независимо от типа создаваемого приложения.With .NET, your code and project files look and feel the same no matter which type of app you're building. У вас есть доступ к одинаковым возможностям среды выполнения, API и языка для каждого приложения.You have access to the same runtime, API, and language capabilities with each app.

КроссплатформенныеCross platform

Вы можете создавать приложения .NET для многих операционных систем, в том числе:You can create .NET apps for many operating systems, including:

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

Поддерживаемые архитектуры процессоров:Supported processor architectures include:

  • X64x64
  • x86x86
  • ARM32ARM32
  • ARM64ARM64

.NET позволяет использовать специальные возможности платформы, такие как API операционной системы..NET lets you use platform-specific capabilities, such as operating system APIs. Примерами являются Windows Forms и WPF в Windows и собственные привязки к каждой мобильной платформе из Xamarin.Examples are Windows Forms and WPF on Windows and the native bindings to each mobile platform from Xamarin.

Дополнительные сведения см. в разделах Поддерживаемая политика жизненного цикла ОС и Каталог .NET RID.For more information, see Supported OS lifecycle policy and .NET RID Catalog.

Открытый исходный кодOpen source

Платформа .NET имеет открытый код и распространяется по лицензиям MIT и Apache 2..NET is open source, using MIT and Apache 2 licenses. .NET — это проект .NET Foundation..NET is a project of the .NET Foundation.

Дополнительные сведения см. в списке репозиториев проекта на сайте GitHub.com.For more information, see the list of project repositories on GitHub.com.

ПоддержкаSupport

Корпорация Майкрософт реализует поддержку платформы .NET для операционных систем Windows, macOS и Linux..NET is supported by Microsoft on Windows, macOS, and Linux. Она регулярно обновляется для обеспечения безопасности и качества (второй вторник каждого месяца).It's updated regularly for security and quality, on the second Tuesday of each month.

Двоичные дистрибутивы .NET от Майкрософт собираются и тестируются в Azure на серверах Майкрософт и следуют методикам проектирования и безопасности Майкрософт..NET binary distributions from Microsoft are built and tested on Microsoft-maintained servers in Azure and follow Microsoft engineering and security practices.

Red Hat поддерживает .NET в операционной системе Red Hat Enterprise Linux (RHEL).Red Hat supports .NET on Red Hat Enterprise Linux (RHEL). Red Hat и Майкрософт совместно занимаются обеспечением беспроблемной работы .NET Core в RHEL.Red Hat and Microsoft collaborate to ensure that .NET Core works well on RHEL.

Tizen поддерживает .NET на платформах Tizen.Tizen supports .NET on Tizen platforms.

Дополнительные сведения см. в статье Выпуски и поддержка .NET и .NET 5.For more information, see Releases and support for .NET Core and .NET 5.

Инструменты и производительностьTools and productivity

.NET предоставляет возможность выбора языков, интегрированных сред разработки (IDE) и других средств..NET gives you a choice of languages, integrated development environments (IDEs), and other tools.

Языки программированияProgramming languages

Архитектура .NET поддерживает три языка программирования..NET supports three programming languages:

  • C#C#

    C# (произносится как "си шарп") — современный объектно-ориентированный и типобезопасный язык программирования.C# (pronounced "See Sharp") is a modern, object-oriented, and type-safe programming language. C# относится к широко известному семейству языков C, и покажется хорошо знакомым любому, кто работал с C, C++, Java или JavaScript.C# has its roots in the C family of languages and will be immediately familiar to C, C++, Java, and JavaScript programmers.

  • F#F#

    Язык F# поддерживает функциональные, объектно-ориентированные и императивные модели программирования.The F# language supports functional, object-oriented, and imperative programming models.

  • Visual BasicVisual Basic

    Среди языков .NET синтаксис Visual Basic лучше всего соответствует обычному естественному языку, что значительно упрощает его изучение.Among the .NET languages, the syntax of Visual Basic is the closest to ordinary human language, which can make it easier to learn. В отличие от C# и F#, для которых корпорация Майкрософт активно разрабатывает новые функции, язык Visual Basic является стабильным.Unlike C# and F#, for which Microsoft is actively developing new features, the Visual Basic language is stable. Visual Basic не поддерживается для веб-приложений, но поддерживается для веб-API.Visual Basic isn't supported for web apps, but it is supported for web APIs.

Ниже приведены некоторые возможности, поддерживаемые языками .NET:Here are some of the capabilities that .NET languages support:

Интегрированные среды разработкиIDEs

Интегрированные среды разработки для .NET включают следующие:The integrated development environments for .NET include:

  • Visual StudioVisual Studio

    Выполняется только в Windows.Runs on Windows only. Содержит обширные встроенные функции, предназначенные для работы с .NET.Has extensive built-in functionality designed to work with .NET. Выпуск Community Edition предоставляется бесплатно для учащихся, участников проектов с открытым кодом и отдельных пользователей.The Community edition is free for students, open-source contributors, and individuals.

  • Visual Studio CodeVisual Studio Code

    Выполняется в Windows, macOS и Linux.Runs on Windows, macOS, and Linux. Бесплатно и с открытым кодом.Free and open source. Расширения доступны для работы с языками .NET.Extensions are available for working with .NET languages.

  • Visual Studio для MacVisual Studio for Mac

    Выполняется только в macOS.Runs on macOS only. Для разработки приложений и игр .NET для iOS, Android и Интернета.For developing .NET apps and games for iOS, Android, and web.

  • GitHub CodespacesGitHub Codespaces

    Онлайн-среда Visual Studio Code, которая в настоящее время доступна в виде бета-версии.An online Visual Studio Code environment, currently in beta.

Пакет SDK и среды выполненияSDK and runtimes

Пакет SDK для .NET — это набор библиотек и средств для разработки и запуска приложений .NET.The .NET SDK is a set of libraries and tools for developing and running .NET applications.

При загрузке .NET можно выбрать пакет SDK или среду выполнения, например среду выполнения .NET или среду выполнения 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. Установите среду выполнения на компьютере, который требуется подготовить для запуска приложений .NET.Install a runtime on a machine that you want to prepare for running .NET apps. Установите пакет SDK на компьютере, который вы хотите использовать для разработки.Install the SDK on a machine that you want to use for development. При скачивании пакета SDK вы автоматически получаете среду выполнения.When you download the SDK, you automatically get the runtimes with it.

Загружаемый пакет SDK содержит следующие компоненты.The SDK download includes the following components:

  • Интерфейс командной строки .NET.The .NET CLI. Программы командной строки, которые можно использовать для локальной разработки и сценариев непрерывной интеграции.Command-line tools that you can use for local development and continuous integration scripts.
  • Драйвер dotnet.The dotnet driver. Команда CLI, которая запускает зависящие от платформы приложения.A CLI command that runs framework-dependent apps.
  • Компиляторы языков программирования Roslyn и F#.The Roslyn and F# programming language compilers.
  • Система сборки MSBuild.The MSBuild build engine.
  • Среда выполнения .NET.The .NET runtime. Предоставляет систему типов, функцию загрузки сборок, сборщик мусора, взаимодействие с машинным кодом и другие основные службы.Provides a type system, assembly loading, a garbage collector, native interop, and other basic services.
  • Библиотеки среды выполнения.Runtime libraries. Предоставляют примитивные типы данных и основные служебные программы.Provides primitive data types and fundamental utilities.
  • Среда выполнения ASP.NET CoreThe ASP.NET Core runtime. Предоставляет базовые службы для приложений, подключенных к Интернету, таких как веб-приложения, приложения Интернета вещей и серверные интерфейсы мобильных устройств.Provides basic services for internet-connected apps, such as web apps, IoT apps, and mobile backends.
  • Среда выполнения для классических приложений.The desktop runtime. Предоставляет базовые службы для классических приложений Windows, включая Windows Forms и WPF.Provides basic services for Windows desktop apps, including Windows Forms and WPF.

Загружаемая среда выполнения содержит следующие компоненты.The runtime download includes the following components:

  • Среды выполнения для рабочего стола и ASP.NET Core (при необходимости).Optionally, the desktop or ASP.NET Core runtime.
  • Среда выполнения .NET.The .NET runtime. Предоставляет систему типов, функцию загрузки сборок, сборщик мусора, взаимодействие с машинным кодом и другие основные службы.Provides a type system, assembly loading, a garbage collector, native interop, and other basic services.
  • Библиотеки среды выполнения.Runtime libraries. Предоставляют примитивные типы данных и основные служебные программы.Provides primitive data types and fundamental utilities.
  • Драйвер dotnet.The dotnet driver. Команда CLI, которая запускает зависящие от платформы приложения.A CLI command that runs framework-dependent apps.

Дополнительные сведения см. в следующих ресурсах:For more information, see the following resources:

Система проектов и MSBuildProject system and MSBuild

Приложение .NET строится на основе исходного кода с помощью MSBuild.A .NET app is built from source code by using MSBuild. В файле проекта ( .csproj, .fsproj или .vbproj) указываются целевые объекты и связанные задачи, которые отвечают за компиляцию, упаковку и публикацию кода.A project file (.csproj, .fsproj, or .vbproj) specifies targets and associated tasks that are responsible for compiling, packing, and publishing code. Существуют идентификаторы пакета SDK, которые ссылаются на стандартные коллекции целевых объектов и задач.There are SDK identifiers that refer to standard collections of targets and tasks. Использование этих идентификаторов помогает сделать файлы проекта небольшими и простыми в работе.The use of these identifiers helps keep project files small and easy to work with. Например, вот файл проекта для консольного приложения: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>

И вот один для веб-приложения:And here's one for a web app:

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

В этих примерах атрибут Sdk элемента Project указывает набор целевых объектов и задач MSBuild, которые создают проект.In these examples, the Sdk attribute of the Project element specifies a set of MSBuild targets and tasks that build the project. Элемент TargetFramework указывает версию .NET, от которой зависит приложение.The TargetFramework element specifies the .NET version that the app depends on. Файл проекта можно изменить, добавив дополнительные целевые объекты и задачи, относящиеся к проекту.You can edit the project file to add additional targets and tasks specific to the project.

Дополнительные сведения см. в статьях Обзор пакета SDK для проекта .NET и Целевые платформы.For more information, see .NET project SDK overview and Target frameworks.

CI/CDCI/CD

MSBuild и .NET CLI можно использовать с различными средствами и средами непрерывной интеграции, например:MSBuild and the .NET CLI can be used with various continuous integration tools and environments, such as:

Дополнительные сведения см. в разделе Использование пакета SDK и средств .NET при непрерывной интеграции (CI)For more information, see Using .NET SDK and tools in Continuous Integration (CI)

NuGetNuGet

NuGet — это диспетчер пакетов с открытым исходным кодом, разработанный для .NET.NuGet is an open-source package manager designed for .NET. Пакет NuGet представляет собой отдельный ZIP-файл с расширением .nupkg, который содержит скомпилированный код (DLL), другие файлы, связанные с этим кодом, и описательный манифест, включающий такие сведения, как номер версии пакета.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. Разработчики, у которых есть код, к которому нужно предоставить общий доступ, создают пакеты и публикуют их на сайте nuget.org или на закрытых узлах.Developers with code to share create packages and publish them to nuget.org or a private host. Разработчики, желающие использовать общий код, добавляют пакет в свой проект и затем могут вызвать API, предоставляемый пакетом в своем коде проекта.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.

Дополнительные сведения см. в документации NuGet.For more information, see NuGet documentation.

Интерактивные возможности .NET.NET Interactive

.NET Interactive — это группа средств и интерфейсов командной строки, которые позволяют пользователям создавать интерактивные возможности в веб-приложениях, разметке и записных книжках..NET Interactive is a group of CLI tools and APIs that enable users to create interactive experiences across the web, markdown, and notebooks.

Дополнительные сведения см. в следующих ресурсах:For more information, see the following resources:

Модели выполнения.Execution models

Приложения .NET запускают управляемый код в среде выполнения, известной как среда CLR..NET apps run managed code in a runtime environment known as the Common Language Runtime (CLR).

CLRCLR

.NET CLR — это кроссплатформенная среда выполнения, которая включает поддержку Windows, macOS и Linux.The .NET CLR is a cross-platform runtime that includes support for Windows, macOS, and Linux. Среда CLR обрабатывает выделение памяти и управление ей.The CLR handles memory allocation and management. Среда CLR также является виртуальной машиной, которая не только выполняет приложения, но и создает, а также компилирует код с помощью JIT-компилятора.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.

Для получения дополнительной информации см. Common Language Runtime.For more information, see Common Language Runtime (CLR) overview.

JIT-компилятор и промежуточный языкJIT compiler and IL

Языки .NET более высокого уровня, например C#, компилируются до независимого от оборудования набора инструкций, который называется промежуточным языком (IL).Higher-level .NET languages, such as C#, compile down to a hardware-agnostic instruction set, which is called Intermediate Language (IL). При запуске приложений этот компилятор преобразует IL в машинный код, который понимает обработчик.When an app runs, the JIT compiler translates IL to machine code that the processor understands. JIT-компиляция происходит на том же компьютере, на котором будет выполняться код.JIT compilation happens on the same machine that the code is going to run on.

Так как JIT-компиляция происходит во время выполнения приложения, время компиляции является частью времени выполнения.Since JIT compilation occurs during execution of the application, the compilation time is part of the run time. Таким образом, JIT-компиляторы должны поддерживать баланс между временем оптимизации кода и экономии, к которой может привести результирующий код.Therefore, JIT compilers have to balance time spent optimizing code against the savings that the resulting code can produce. Но JIT-компилятор знает фактическое оборудование и может освободить разработчиков от поставки различных реализаций для различных платформ.But a JIT compiler knows the actual hardware and can free developers from having to ship different implementations for different platforms.

JIT-компилятор .NET может выполнять многоуровневую компиляцию, что означает возможность перекомпиляции отдельных методов во время выполнения.The .NET JIT compiler can do tiered compilation, which means it can recompile individual methods at run time. Эта функция позволяет быстро компилировать, сохраняя при этом возможность создания высокоспециализированной версии кода для часто используемых методов.This feature lets it compile quickly while still being able to produce a highly tuned version of the code for frequently used methods.

Дополнительные сведения см. в статьях Управляемый процесс выполнения и Многоуровневая компиляция.For more information, see Managed execution process and Tiered compilation.

Компилятор AOTAOT compiler

По умолчанию большинство рабочих нагрузок .NET являются JIT-компилятором, но .NET предлагает две формы компиляции на момент времени (AOT):The default experience for most .NET workloads is the JIT compiler, but .NET offers two forms of ahead-of-time (AOT) compilation:

  • Для некоторых сценариев требуется 100-процентная компиляция AOT.Some scenarios require 100% AOT compilation. Примером может служить iOS.An example is iOS.
  • В других сценариях большая часть кода приложения компилируется с помощью AOT, но для некоторых частей используется JIT-компилятор.In other scenarios, most of an app's code is AOT-compiled but some is JIT-compiled. Некоторые шаблоны кода не распознаются AOT (например, универсальные шаблоны).Some code patterns aren't friendly to AOT (like generics). Примером такой формы компиляции AOT является параметр публикации ready-to-run.An example of this form of AOT compilation is the ready-to-run publish option. Такая форма AOT позволяет использовать преимущества компиляции без ее недостатков.This form of AOT offers the benefits of AOT without its drawbacks.

Автоматическое управление памятьюAutomatic memory management

Сборщик мусора (GC) управляет выделением и освобождением памяти для приложений.The garbage collector (GC) manages the allocation and release of memory for applications. Каждый раз, когда код создает новый объект, среда CLR выделяет память для объекта из управляемой кучи.Each time your code creates a new object, the CLR allocates memory for the object from the managed heap. Пока в управляемой куче есть доступное адресное пространство, среда выполнения продолжает выделять пространство для новых объектов.As long as address space is available in the managed heap, the runtime continues to allocate space for new objects. Когда остается недостаточное свободное пространство адресов, сборщик мусора проверяет наличие объектов в управляемой куче, которые больше не используются приложением.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. Затем эта память освобождается.It then reclaims that memory.

GC — это одна из служб CLR, которая помогает обеспечить безопасность памяти.The GC is one of the CLR services that help ensure memory safety. Программа является безопасной по памяти, если она обращается только к выделенной памяти.A program is memory safe if it accesses only allocated memory. Например, среда выполнения гарантирует, что приложение не обращается к невыделенной памяти за пределами границ массива.For instance, the runtime ensures that an app doesn't access unallocated memory beyond the bounds of an array.

Дополнительные сведения о сборке мусора см. в статьях Автоматическое управление памятью и Основы сборки мусора.For more information, see Automatic memory management and Fundamentals of garbage collection.

Работа с неуправляемыми ресурсамиWorking with unmanaged resources

Иногда код должен ссылаться на неуправляемые ресурсы.Sometimes code needs to reference unmanaged resources. Неуправляемые ресурсы — это ресурсы, которые не обслуживаются средой выполнения .NET автоматически.Unmanaged resources are resources that aren't automatically maintained by the .NET runtime. Например, к неуправляемым ресурсам относятся дескрипторы файлов.For example, a file handle is an unmanaged resource. Объект FileStream — управляемый, но он ссылается на дескриптор файла, который является неуправляемым ресурсом.A FileStream object is a managed object, but it references a file handle, which is unmanaged. После окончания работы с FileStream нужно явным образом освободить дескриптор файла.When you're done using the FileStream, you need to explicitly release the file handle.

В среде .NET объекты, которые ссылаются на неуправляемые ресурсы, реализуют интерфейс IDisposable.In .NET, objects that reference unmanaged resources implement the IDisposable interface. После окончания работы с объектом вызовите метод Dispose() объекта, который отвечает за освобождение неуправляемых ресурсов.When you're done using the object, you call the object's Dispose() method, which is responsible for releasing any unmanaged resources. В языках .NET имеется удобная инструкция using (C#, F#, VB), которая обеспечивает вызов метода Dispose.The .NET languages provide a convenient using statement (C#, F#, VB) that ensures the Dispose method is called.

Дополнительные сведения см. в разделе Очистка неуправляемых ресурсов.For more information, see Cleaning up unmanaged resources.

Модели развертыванияDeployment models

Приложения .NET можно публиковать в двух разных режимах:.NET apps can be published in two different modes:

  • При публикации автономного приложения создается исполняемый файл, который включает среду выполнения и библиотеки .NET, а также приложение и его зависимости.Publishing an app as self-contained produces an executable file that includes the .NET runtime and libraries, and the application and its dependencies. Пользователи приложения могут запустить его на компьютере, на котором не установлена среда выполнения .NET.Users of the application can run it on a machine that doesn't have the .NET runtime installed. Автономные приложения зависят от платформы и при необходимости могут быть опубликованы в виде компиляции AOT.Self-contained apps are platform-specific, and they can optionally be published using a form of AOT compilation.

  • При публикации приложения в качестве зависимого от платформы создаются исполняемый файл и двоичные файлы (файлы DLL), включающие только само приложение и его зависимости.Publishing an app as framework-dependent produces an executable file and binary files (.dll files) that include only the application itself and its dependencies. Пользователям приложения необходимо отдельно установить среду выполнения .NET.Users of the application have to separately install the .NET runtime. Исполняемый файл зависит от платформы, однако файлы DLL приложений, зависящих от платформы, являются кроссплатформенными.The executable file is platform-specific, but the .dll files of framework-dependent applications are cross-platform.

    Можно установить несколько версий среды выполнения параллельно, чтобы запускать зависящие от платформы приложения, предназначенные для разных версий среды выполнения.You can install multiple versions of the runtime side by side to run framework-dependent apps that target different versions of the runtime. Дополнительные сведения см. в разделе Целевые платформы.For more information, see Target frameworks.

Исполняемые файлы создаются для конкретных целевых платформ, которые указываются с помощью идентификатора среды выполнения (RID).Executables are produced for specific target platforms, which you specify with a runtime identifier (RID).

Дополнительные сведения см. в статьях Общие сведения о публикации приложений .NET и Введение в .NET и Docker.For more information, see .NET application publishing overview and Introduction to .NET and Docker.

Библиотеки среды выполнения.Runtime libraries

.NET имеет обширный стандартный набор библиотек классов, известный как библиотеки среды выполнения, библиотеки платформы или библиотеки базовых классов (BCL)..NET has an expansive standard set of class libraries, known as runtime libraries, framework libraries, or the base class library (BCL). Эти библиотеки предоставляют реализации для многих общих и зависящих от рабочей нагрузки типов, а также функциональные возможности.These libraries provide implementations for many general-purpose and workload-specific types and utility functionality.

Ниже приведены некоторые примеры типов, определенных в библиотеках среды выполнения .NET:Here are some examples of types defined in the .NET runtime libraries:

Подробнее см. в статье Общие сведения о библиотеках среды выполнения.For more information, see the Runtime libraries overview. Исходный код для библиотек находится в репозитории GitHub dotnet/runtime.The source code for the libraries is in the GitHub dotnet/runtime repository.

Расширения библиотек среды выполненияExtensions to the runtime libraries

Библиотеки для некоторых часто используемых функциональных возможностей приложения не включены в библиотеки среды выполнения, но доступны в пакетах NuGet, как показано ниже.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:

Пакет NuGetNuGet package ДокументацияDocumentation
Microsoft.Extensions.HostingMicrosoft.Extensions.Hosting Управление жизненным циклом приложения (универсальный узел)Application lifetime management (Generic Host)
Microsoft.Extensions.DependencyInjectionMicrosoft.Extensions.DependencyInjection Внедрение зависимостейDependency injection (DI)
Microsoft.Extensions.ConfigurationMicrosoft.Extensions.Configuration КонфигурацияConfiguration
Microsoft.Extensions.LoggingMicrosoft.Extensions.Logging LoggingLogging
Microsoft.Extensions.OptionsMicrosoft.Extensions.Options Шаблон параметровOptions pattern

Дополнительные сведения см. в репозитории dotnet/extensions на сайте GitHub.For more information, see the dotnet/extensions repository on GitHub.

Доступ к даннымData access

.NET предоставляет объектно-реляционный модуль сопоставления (ORM) и способ написания SQL-запросов в коде..NET provides an Object/Relational Mapper (ORM) and a way to write SQL queries in code.

Entity Framework CoreEntity Framework Core

Entity Framework (EF) Core — это кроссплатформенная технология доступа к данным на разных платформах с открытым исходным кодом, которая может служить в качестве ORM.Entity Framework (EF) Core is an open source and cross-platform data-access technology that can serve as an ORM. EF Core позволяет работать с базой данных, ссылаясь на объекты .NET в коде.EF Core lets you work with a database by referring to .NET objects in code. Это сокращает объем кода доступа к данным, который в противном случае потребуется для написания и тестирования.It reduces the amount of data-access code you would otherwise need to write and test. EF Core поддерживает множество систем баз данных.EF Core supports many database engines.

Дополнительные сведения см. в разделах Entity Framework Core и Поставщики баз данных.For more information, see Entity Framework Core and Database Providers.

LINQLINQ

LINQ позволяет писать декларативный код для работы с данными.Language-integrated query (LINQ) lets you write declarative code for operating on data. Данные могут быть представлены разными формами (например, объектами в памяти, содержимым базы данных SQL или XML-документом), но обычно создаваемый код LINQ не отличается для каждого из источников данных.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.

Дополнительные сведения см. в разделе Обзор встроенного языка запросов (LINQ).For more information, see LINQ (Language Integrated Query) overview.

Терминология .NET.NET terminology

Для понимания документации по .NET важно понять, как использование некоторых терминов изменилось со временем.To understand .NET documentation, it can help to know how the usage of some terms has changed over time.

.NET Core и .NET 5.NET Core and .NET 5

В 2002 году корпорация Майкрософт выпустила .NET Framework, платформу разработки для создания приложений Windows.In 2002, Microsoft released .NET Framework, a development platform for creating Windows apps. Сегодня доступна версия 4.8 платформы .NET Framework, и она по-прежнему поддерживается Майкрософт.Today .NET Framework is at version 4.8 and is still supported by Microsoft.

В 2014 году корпорация Майкрософт начала создавать кроссплатформенный преемник платформы .NET Framework с открытым исходным кодом.In 2014, Microsoft began writing a cross-platform, open-source successor to .NET Framework. Эта новая реализация .NET называлась .NET Core, пока не была выпущена версия 3.1.This new implementation of .NET was named .NET Core until it reached version 3.1. Следующая версия после .NET Core 3.1 — это .NET 5.0, которая в настоящее время находится на этапе предварительной версии.The next version after .NET Core 3.1 is .NET 5.0, which is currently in preview. Номер версии 4 был пропущен во избежание путаницы между этой реализацией .NET и .NET Framework 4.8.Version number 4 was skipped to avoid confusion between this implementation of .NET and .NET Framework 4.8. Слово "Core" было удалено из названия, чтобы указать, что теперь это основная реализация .NET.The name "Core" was dropped to make clear that this is now the main implementation of .NET.

Эта статья посвящена .NET 5, но большая часть документации по .NET 5 по-прежнему ссылается на .NET Core или .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". Кроме того, слово "Core" остается в именах ASP.NET Core и Entity Framework Core.In addition, "Core" remains in the names ASP.NET Core and Entity Framework Core.

Документация также относится к .NET Standard.The documentation also refers to .NET Standard. .NET Standard — это спецификация API, которая позволяет разрабатывать библиотеки классов для нескольких реализаций .NET..NET Standard is an API specification that lets you develop class libraries for multiple implementations of .NET.

Дополнительные сведения см. в разделе Архитектурные компоненты .NET.For more information, see .NET architectural components.

Уточнение терминологииOverloaded terms

Часть терминологии .NET может показаться запутанной, поскольку одно и то же слово используется по-разному в разных контекстах.Some of the terminology for .NET can be confusing because the same word is used in different ways in different contexts. Ниже приведены некоторые из более заметных примеров:Here are a few of the more prominent instances:

  • Среда выполненияruntime

    КонтекстContext Значение термина "среда выполнения""runtime" meaning
    Среда CLRCommon Language Runtime (CLR) Среда выполнения для управляемой программы.The execution environment for a managed program. Операционная система является частью среды выполнения, но не входит в среду выполнения .NET.The OS is part of the runtime environment but isn't part of the .NET runtime.
    Среда выполнения .NET на странице загрузки .NET.NET runtime on the .NET download page CLR и библиотеки среды выполнения, которые обеспечивают поддержку запуска приложений, зависящих от платформы.The CLR and runtime libraries, which together provide support for running framework-dependent apps. На странице также предлагаются варианты среды выполнения для серверных приложений ASP.NET Core и классических приложений Windows.The page also offers runtime choices for ASP.NET Core server apps and Windows desktop apps.
    Идентификатор среды выполнения (RID)Runtime Identifier (RID) Платформа ОС и архитектура ЦП, на которых работает приложение .NET.The OS platform and CPU architecture that a .NET app runs on. Пример: 64-разрядная версия Windows, 64-разрядная версия Linux.For example: Windows x64, Linux x64.
  • платформаframework

    КонтекстContext Значение термина "платформа""framework" meaning
    .NET Framework.NET Framework Исходная реализация .NET только для Windows.The original, Windows-only implementation of .NET. Слово "Framework" указывается с первой прописной буквы."Framework" is capitalized.
    целевая платформаtarget framework Коллекция API-интерфейсов, которую использует приложение или библиотека .NET.The collection of APIs that a .NET app or library relies on. Примеры: .NET Core 3.1, .NET Standard 2.0Examples: .NET Core 3.1, .NET Standard 2.0
    Моникер целевой платформы (TFM)Target Framework Moniker (TFM) TFM — это стандартизированный формат маркера для указания целевой платформы приложения или библиотеки .NET.A TFM is a standardized token format for specifying the target framework of a .NET app or library. Пример: net462 для .NET Framework 4.6.2.Example: net462 for .NET Framework 4.6.2.
    Приложение, зависящее от платформыframework-dependent app Приложение, которое может выполняться на компьютере, где установлена среда выполнения со страницы загрузки .NET.An app that can only run on a machine where you've installed the runtime from the .NET download page. "Платформа" в этом контексте — то же самое, что и среда выполнения, загружаемая со страницы загрузки .NET."Framework" in this usage is the same thing as the "runtime" that you download from the .NET download page.
    Библиотеки платформыframework libraries Иногда используется в качестве синонима для библиотек среды выполнения.Sometimes used as a synonym for runtime libraries.
  • Пакет SDKSDK

    КонтекстContext Значение термина "пакет SDK""SDK" meaning
    Пакет SDK на странице загрузки .NETSDK on the .NET download page Набор средств и библиотек, которые вы скачиваете и устанавливаете для разработки и запуска приложений .NET.A collection of tools and libraries that you download and install to develop and run .NET apps. Включает в себя интерфейс командной строки, MSBuild, среду выполнения .NET и другие компоненты.Includes the CLI, MSBuild, the .NET runtime, and other components.
    Проекты в стиле SDKSDK-style project Набор целевых объектов и задач MSBuild, указывающий, как следует создавать проект для конкретного типа приложения.A set of MSBuild targets and tasks that specifies how to build a project for a particular app type. Пакет SDK в этом смысле указывается с помощью атрибута Sdk элемента Project в файле проекта.The SDK in this sense is specified by using the Sdk attribute of the Project element in a project file.
  • platformplatform

    КонтекстContext Значение термина "платформа""platform" meaning
    Кроссплатформенностьcross platform Здесь термин "платформа" означает операционную систему и оборудование, на котором она выполняется, например Windows, macOS, Linux, iOS и Android.In this term, "platform" means an operating system and the hardware it runs on, such as Windows, macOS, Linux, iOS, and Android.
    Платформа .NET.NET platform Возможны разные варианты использования.Usage varies. Может иметься ввиду одна реализация .NET (например, .NET Framework или .NET 5) или абстрактная концепция .NET, включая все реализации.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.

Дополнительные сведения о терминологии .NET см. в разделе Глоссарий .NET.For more information about .NET terminology, see the .NET glossary.

Сложные сценарииAdvanced scenarios

В следующих разделах описываются некоторые возможности .NET, которые полезны в расширенных сценариях.The following sections explain some capabilities of .NET that are useful in advanced scenarios.

Взаимодействие на уровне машинного кодаNative interop

Все операционные системы имеют API-интерфейс, предоставляющий системные службы.Every operating system includes an application programming interface (API) that provides system services. .NET предоставляет несколько способов использовать эти API..NET provides several ways to call those APIs.

Основным способом осуществления взаимодействия с собственными API является "вызов неуправляемого кода" или сокращенно P/Invoke.The main way to interoperate with native APIs is via "platform invoke" or P/Invoke for short. P/Invoke поддерживается на платформах Linux и Windows.P/Invoke is supported across Linux and Windows platforms. Способ, который подходит только для Windows, называется "COM-взаимодействием" и используется для работы с COM-компонентами в управляемом коде.A Windows-only way of interoperating is known as "COM interop," which works with COM components in managed code. Он основан на инфраструктуре P/Invoke, но работает иначе.It's built on top of the P/Invoke infrastructure, but it works in subtly different ways.

Дополнительные сведения см. в разделе Взаимодействие на уровне машинного кода.For more information, see Native interoperability.

Небезопасный кодUnsafe code

В зависимости от языковой поддержки среды CLR позволяет обращаться к внутренней памяти выполнять арифметические операции с указателями в коде unsafe.Depending on language support, the CLR lets you access native memory and do pointer arithmetic via unsafe code. Эти операции необходимы для реализации определенных алгоритмов и системного взаимодействия.These operations are needed for certain algorithms and system interoperability. Хотя небезопасный код и предоставляет обширные возможности, использовать его не рекомендуется, если только это не требуется для взаимодействия с системными API или реализации максимально эффективного алгоритма.Although powerful, use of unsafe code is discouraged unless it's necessary to interoperate with system APIs or implement the most efficient algorithm. Небезопасный код может выполняться по-разному в разных средах, а также терять преимущества сборщика мусора и безопасности типов.Unsafe code may not execute the same way in different environments and also loses the benefits of a garbage collector and type safety. Рекомендуется четко отделить и централизовать небезопасный код, а также тщательно протестировать его.It's recommended to confine and centralize unsafe code as much as possible and test that code thoroughly.

Дополнительные сведения см. в разделе Небезопасный код и указатели.For more information, see Unsafe code and pointers.

Дальнейшие действияNext steps