Введение в ASP.NET CoreIntroduction to ASP.NET Core

Авторы: Дэниэл Рот (Daniel Roth), Рик Андерсон (Rick Anderson) и Шон Луттин (Shaun Luttin)By Daniel Roth, Rick Anderson, and Shaun Luttin

ASP.NET Core является кроссплатформенной, высокопроизводительной средой с открытым исходным кодом для создания современных облачных приложений, подключенных к Интернету.ASP.NET Core is a cross-platform, high-performance, open-source framework for building modern, cloud-based, Internet-connected applications. ASP.NET Core позволяет выполнять следующие задачи:With ASP.NET Core, you can:

  • Создавать веб-приложения и службы, приложения IoT и серверные части для мобильных приложений.Build web apps and services, IoT apps, and mobile backends.
  • Использовать избранные средства разработки в Windows, macOS и Linux.Use your favorite development tools on Windows, macOS, and Linux.
  • Выполнять развертывания в облаке или локальной среде.Deploy to the cloud or on-premises.
  • Работать в .NET Core или .NET Framework.Run on .NET Core or .NET Framework.

Преимущества, обеспечиваемые ASP.NET CoreWhy choose ASP.NET Core?

Миллионы разработчиков использовали и продолжают использовать ASP.NET 4.x для создания веб-приложений.Millions of developers have used (and continue to use) ASP.NET 4.x to create web apps. ASP.NET Core — это модификация ASP.NET 4.x с архитектурными изменениями, формирующими более рациональную и более модульную платформу.ASP.NET Core is a redesign of ASP.NET 4.x, with architectural changes that result in a leaner, more modular framework.

ASP.NET Core предоставляет следующие преимущества:ASP.NET Core provides the following benefits:

  • Единое решение для создания пользовательского веб-интерфейса и веб-API.A unified story for building web UI and web APIs.
  • Разработано для тестируемости.Architected for testability.
  • Razor Pages делает создание кодов сценариев для страниц проще и эффективнее.Razor Pages makes coding page-focused scenarios easier and more productive.
  • Blazor позволяет использовать в браузере язык C# вместе с JavaScript.Blazor lets you use C# in the browser alongside JavaScript. совместное использование серверной и клиентской логик приложений, написанных с помощью .NET;Share server-side and client-side app logic all written with .NET.
  • Возможность разработки и запуска в ОС Windows, macOS и Linux.Ability to develop and run on Windows, macOS, and Linux.
  • Открытый исходный код и ориентация на сообщество.Open-source and community-focused.
  • Интеграция современных клиентских платформ и рабочих процессов разработки.Integration of modern, client-side frameworks and development workflows.
  • Облачная система конфигурации на основе среды.A cloud-ready, environment-based configuration system.
  • Встроенное введение зависимостей.Built-in dependency injection.
  • Упрощенный высокопроизводительный модульный конвейер HTTP-запросов.A lightweight, high-performance, and modular HTTP request pipeline.
  • Возможность размещения в IIS, Nginx, Apache, Docker или в собственном процессе.Ability to host on IIS, Nginx, Apache, Docker, or self-host in your own process.
  • Параллельное управление версиями приложения, ориентированное на .NET Core.Side-by-side app versioning when targeting .NET Core.
  • Инструментарий, упрощающий процесс современной веб-разработки.Tooling that simplifies modern web development.

Создание веб-API и пользовательского веб-интерфейса с помощью ASP.NET Core MVCBuild web APIs and web UI using ASP.NET Core MVC

ASP.NET Core MVC предоставляет функции, которые позволяют создавать веб-интерфейсы API и веб-приложения.ASP.NET Core MVC provides features to build web APIs and web apps:

Клиентская разработкаClient-side development

ASP.NET Core легко интегрируется с популярными клиентскими платформами и библиотеками, включая Blazor, Angular, React и Bootstrap.ASP.NET Core integrates seamlessly with popular client-side frameworks and libraries, including Blazor, Angular, React, and Bootstrap. Подробнее см. Общие сведения об использовании Blazor в ASP.NET Core и связанные материалы о разработке на стороне клиента.For more information, see Общие сведения об использовании Blazor в ASP.NET Core and related topics under Client-side development.

ASP.NET Core для платформы .NET FrameworkASP.NET Core targeting .NET Framework

Приложения ASP.NET Core 2.x могут выполняться в .NET Core или .NET Framework.ASP.NET Core 2.x can target .NET Core or .NET Framework. Приложения ASP.NET Core, предназначенные для .NET Framework, не являются кроссплатформенными — они выполняются только в Windows.ASP.NET Core apps targeting .NET Framework aren't cross-platform—they run on Windows only. Как правило, ASP.NET Core 2.x состоит из библиотек .NET Standard.Generally, ASP.NET Core 2.x is made up of .NET Standard libraries. Библиотеки, написанные на .NET Standard 2.0 под управлением любой платформы .NET с реализацией .NET Standard 2.0.Libraries written with .NET Standard 2.0 run on any .NET platform that implements .NET Standard 2.0.

ASP.NET Core 2.x поддерживается в версиях .NET Framework с реализацией .NET Standard 2.0:ASP.NET Core 2.x is supported on .NET Framework versions that implement .NET Standard 2.0:

  • Настоятельно рекомендуем использовать последнюю версию .NET Framework..NET Framework latest version is strongly recommended.
  • .NET Framework 4.6.1 и более поздних версий..NET Framework 4.6.1 and later.

ASP.NET Core версии 3.0 и более поздних будут выполняться только в .NET Core.ASP.NET Core 3.0 and later will only run on .NET Core. Дополнительные сведения об этом изменении см. в разделе Первое знакомство с предстоящими изменениями в ASP.NET Core 3.0.For more details regarding this change, see A first look at changes coming in ASP.NET Core 3.0.

При использовании .NET Core существуют некоторые преимущества, и их число увеличивается с каждым выпуском.There are several advantages to targeting .NET Core, and these advantages increase with each release. Преимущества .NET Core по сравнению с .NET Framework включают:Some advantages of .NET Core over .NET Framework include:

  • Кроссплатформенность.Cross-platform. Выполняется на macOS, Linux и Windows.Runs on macOS, Linux, and Windows.
  • Повышение производительностиImproved performance
  • Управление параллельными версиямиSide-by-side versioning
  • Новые интерфейсы APINew APIs
  • Открытый исходный кодOpen source

Мы прилагаем максимум усилий, чтобы устранить различия API между .NET Framework и .NET Core.We're working hard to close the API gap from .NET Framework to .NET Core. Благодаря пакету обеспечения совместимости Windows в .NET Core доступны тысячи API-интерфейсов, созданных только для Windows.The Windows Compatibility Pack made thousands of Windows-only APIs available in .NET Core. Эти API-интерфейсы не были доступны в .NET Core 1.x.These APIs weren't available in .NET Core 1.x.

Для знакомства с разработкой приложений ASP.NET Core рекомендуется изучить следующую последовательность учебников и статей.We recommend the following sequence of tutorials and articles for an introduction to developing ASP.NET Core apps:

  1. Пройдите учебник по тому типу приложения, которое вы собираетесь разрабатывать или обслуживать:Follow a tutorial for the type of app you want to develop or maintain:

    Тип приложенияApp type СценарийScenario УчебникTutorial
    Веб-приложениеWeb app Разработка нового приложенияFor new development Начало работы с Razor PagesGet started with Razor Pages
    Веб-приложениеWeb app Обслуживание приложения MVCFor maintaining an MVC app Начало работы с MVCGet started with MVC
    Веб-интерфейс APIWeb API Создание веб-API*Create a web API*
    Приложение режима реального времениReal-time app Начало работы с SignalRGet started with SignalR
  2. Пройдите учебник, посвященный основам доступа к данным:Follow a tutorial that shows how to do basic data access:

    СценарийScenario УчебникTutorial
    Разработка нового приложенияFor new development Razor Pages с Entity Framework CoreRazor Pages with Entity Framework Core
    Обслуживание приложения MVCFor maintaining an MVC app MVC с Entity Framework CoreMVC with Entity Framework Core
  3. Прочтите обзор функций ASP.NET Core, относящихся ко всем типам приложений:Read an overview of ASP.NET Core features that apply to all app types:

  4. Просмотрите содержание, чтобы найти другие интересующие вас темы.Browse the Table of Contents for other topics of interest.

* Доступен новый учебник по веб-API с прохождением в браузере, не требующий установки локальной интегрированной среды разработки.* There is a new web API tutorial that you follow entirely in the browser, no local IDE installation required. Код выполняется в Azure Cloud Shell, а для тестирования используется curl.The code runs in an Azure Cloud Shell, and curl is used for testing.

Загрузка примераHow to download a sample

Многие статьи и учебники содержат ссылки на примеры кода.Many of the articles and tutorials include links to sample code.

  1. Загрузите ZIP-файл репозитория ASP.NET.Download the ASP.NET repository zip file.
  2. Распакуйте файл Docs-master.zip.Unzip the Docs-master.zip file.
  3. Перейдите в папку примера по URL-адресу, указанному в примере.Use the URL in the sample link to help you navigate to the sample directory.

Директивы препроцессора в примере кодаPreprocessor directives in sample code

Для демонстрации нескольких сценариев в примерах приложений используются инструкции C# #define и #if-#else/#elif-#endif, выборочно компилирующие и запускающие разные фрагменты примеров кода.To demonstrate multiple scenarios, sample apps use the #define and #if-#else/#elif-#endif C# statements to selectively compile and run different sections of sample code. В примерах, где применяется этот подход, задайте в начале файлов C# инструкцию #define для символа, связанного со сценарием, который нужно запустить.For those samples that make use of this approach, set the #define statement at the top of the C# files to the symbol associated with the scenario that you want to run. Для запуска сценария в некоторых примерах потребуется задать символ в начале нескольких файлов.Some samples require setting the symbol at the top of multiple files in order to run a scenario.

Например, в следующем списке символов #define видно, что доступно четыре сценария (один сценарий на символ).For example, the following #define symbol list indicates that four scenarios are available (one scenario per symbol). В текущем примере конфигурации запускается сценарий TemplateCode:The current sample configuration runs the TemplateCode scenario:

#define TemplateCode // or LogFromMain or ExpandDefault or FilterInCode

Чтобы запустить в примере сценарий ExpandDefault, задайте символ ExpandDefault и оставьте остальные символы раскомментированными:To change the sample to run the ExpandDefault scenario, define the ExpandDefault symbol and leave the remaining symbols commented-out:

#define ExpandDefault // TemplateCode or LogFromMain or FilterInCode

Дополнительные сведения об использовании директив препроцессора C# для выборочной компиляции фрагментов кода см. в разделах #define (Справочник по C#) и #if (Справочник по C#).For more information on using C# preprocessor directives to selectively compile sections of code, see #define (C# Reference) and #if (C# Reference).

Регионы в примере кодаRegions in sample code

Некоторые примеры приложений содержат фрагменты кода внутри инструкций C# #region и #endregion.Some sample apps contain sections of code surrounded by #region and #endregion C# statements. Система сборки документации вставляет эти регионы в обработанные разделы документации.The documentation build system injects these regions into the rendered documentation topics.

Названия регионов обычно содержат слово "фрагмент".Region names usually contain the word "snippet." В следующем примере показан регион с именем snippet_FilterInCode:The following example shows a region named snippet_FilterInCode:

#region snippet_FilterInCode
WebHost.CreateDefaultBuilder(args)
    .UseStartup<Startup>()
    .ConfigureLogging(logging =>
        logging.AddFilter("System", LogLevel.Debug)
            .AddFilter<DebugLoggerProvider>("Microsoft", LogLevel.Trace))
            .Build();
#endregion

На предыдущий фрагмент кода C# указывает ссылка в следующей строке в файле Markdown раздела:The preceding C# code snippet is referenced in the topic's markdown file with the following line:

[!code-csharp[](sample/SampleApp/Program.cs?name=snippet_FilterInCode)]

Вы можете спокойно проигнорировать или удалить инструкции #region и #endregion вокруг кода.You may safely ignore (or remove) the #region and #endregion statements that surround the code. Не изменяйте код внутри этих инструкций, если планируете запустить примеры сценариев, описанные в разделе.Don't alter the code within these statements if you plan to run the sample scenarios described in the topic. Вы можете изменить код, экспериментируя с другими сценариями.Feel free to alter the code when experimenting with other scenarios.

Дополнительные сведения см. в разделеУчастие в написании документации ASP.NET: Фрагменты кода.For more information, see Contribute to the ASP.NET documentation: Code snippets.

Следующие шагиNext steps

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