Новые возможности ASP.NET Core 2.0
В этой статье описываются наиболее важные изменения в ASP.NET Core 2.0 со ссылками на соответствующую документацию.
Razor Pages
Razor Pages — это новая функция платформы MVC ASP.NET Core, которая делает создание кодов сценариев для страниц проще и эффективнее.
Дополнительные сведения см. в следующей вводной статье и учебнике.
Метапакет ASP.NET Core
Новый метапакет ASP.NET Core включает все пакеты, выпущенные и поддерживаемые командами ASP.NET Core и Entity Framework Core, а также внутренние и сторонние зависимости. Вам больше не придется выбирать отдельный пакет компонентов ASP.NET Core. Все компоненты входят в пакет Microsoft.AspNetCore.All. Шаблоны по умолчанию используют именно этот пакет.
Дополнительные сведения см. в статье Метапакет Microsoft.AspNetCore.All для ASP.NET Core 2.0.
Хранилище среды выполнения
Приложения, использующие метапакет Microsoft.AspNetCore.All
, автоматически получают все преимущества нового хранилища среды выполнения .NET Core. Хранилище содержит все ресурсы среды выполнения, необходимые для запуска приложений ASP.NET Core 2.0. При использовании метапакета Microsoft.AspNetCore.All
приложение не развертывает никакие ресурсы из указанных по ссылке пакетов NuGet ASP.NET Core, так как эти пакеты уже присутствуют в целевой системе. Кроме того, для сокращения времени запуска приложения ресурсы в хранилище среды выполнения подвергаются предварительной компиляции.
Дополнительные сведения см. в статье Хранилище среды выполнения.
.NET Standard 2.0
Пакеты ASP.NET 2.0 предназначены для .NET Standard 2.0. На эти пакеты могут ссылаться другие библиотеки .NET Standard 2.0; кроме того, они могут выполняться в реализациях .NET, совместимых с .NET Standard 2.0, включая .NET Core 2.0 и .NET Framework 4.6.1.
Метапакет Microsoft.AspNetCore.All
работает только с .NET Core 2.0, так как предназначен для использования с хранилищем среды выполнения .NET Core 2.0.
Изменения в конфигурации
В ASP.NET Core 2.0 экземпляр IConfiguration
добавляется в контейнер служб по умолчанию. IConfiguration
в контейнере служб упрощает для приложений задачу получения значений конфигурации из контейнера.
Сведения о состоянии плановой документации см. в статье о проблемах GitHub.
Изменения в ведении журналов
В ASP.NET 2.0 Core ведение журнала по умолчанию включено в систему внедрения зависимостей. Добавить поставщиков и настроить фильтрацию можно в файле Program.cs
, а не файле Startup.cs
. А ILoggerFactory
по умолчанию поддерживает такой способ фильтрации, который позволяет использовать один гибкий подход и для перекрестной фильтрации по поставщикам, и для фильтрации по отдельному поставщику.
Дополнительные сведения см. в статье Введение в ведение журналов.
Изменения в проверке подлинности
Новая модель проверки подлинности облегчает настройку проверки подлинности для приложения с использованием внедрения зависимостей.
Доступны новые шаблоны для настройки проверки подлинности в веб-приложениях и веб-API с использованием Azure AD B2C.
Сведения о состоянии плановой документации см. в статье о проблемах GitHub.
Обновление Identity
Мы упростили сборку защищенных веб-API с использованием Identity в ASP.NET Core 2.0. Теперь маркеры доступа для обращения к веб-API можно получить с помощью библиотеки проверки подлинности Microsoft (MSAL).
Дополнительные сведения об изменениях в проверке подлинности в версии 2.0 см. в следующих ресурсах.
- Подтверждение учетной записи и восстановление пароля в ASP.NET Core
- Включение создания QR-кодов для приложений проверки подлинности в ASP.NET Core
- Миграция проверки подлинности и Identity в ASP.NET Core 2.0
Шаблоны SPA
Шаблоны проектов одностраничных приложений (SPA) для Angular, Aurelia, Knockout.js, React.иjs React. с Redux доступны.js Шаблон Angular обновлен до Angular 4. Шаблоны Angular и React доступны по умолчанию. Сведения о получении других шаблонов см. в разделе Создание проекта SPA. Сведения о том, как создать SPA в ASP.NET Core, см. в статьях о том, что функции, описанные в этой статье, устарели по состоянию на ASP.NET Core 3.0.
Улучшения Kestrel
В веб-сервере Kestrel реализованы новые функции, необходимые серверу с выходом в Интернет. Добавлено несколько параметров конфигурации ограничений для сервера в новое свойство Limits
класса KestrelServerOptions
. Вы можете добавлять следующие ограничения:
- Максимальное число клиентских подключений
- Maximum request body size (Максимальный размер текста запроса)
- Minimum request body data rate (Минимальная скорость передачи данных в тексте запроса)
Дополнительные сведения см. в статье Реализация веб-сервера Kestrel в ASP.NET Core.
WebListener переименован в HTTP.sys
Пакеты Microsoft.AspNetCore.Server.WebListener
и Microsoft.Net.Http.Server
объединены в новый пакет Microsoft.AspNetCore.Server.HttpSys
. Соответственно обновлены и пространства имен.
Дополнительные сведения см. в статье Реализация веб-сервера HTTP.sys в ASP.NET Core.
Расширенная поддержка заголовков HTTP
Теперь при использовании MVC для передачи FileStreamResult
или FileContentResult
можно указывать дату ETag
или LastModified
для передаваемого содержимого. Для возвращаемого содержимого эти значения можно задать, используя следующий код:
var data = Encoding.UTF8.GetBytes("This is a sample text from a binary array");
var entityTag = new EntityTagHeaderValue("\"MyCalculatedEtagValue\"");
return File(data, "text/plain", "downloadName.txt", lastModified: DateTime.UtcNow.AddSeconds(-5), entityTag: entityTag);
Файл, возвращаемый вашим посетителям, будет иметь соответствующие заголовки HTTP для значений ETag
и LastModified
.
Если посетители вашего приложение запросят содержимое с заголовком типа "Запрос диапазона", ASP.NET Core распознает и обработает этот заголовок. Запрошенное содержимое может доставляться частично, в случае чего ASP.NET Core соответствующим образом пропустит и вернет только запрошенный набор байтов. При этом прописывать в методах специальные обработчики для адаптации или реализации этой функции не требуется, все будет сделано автоматически.
Запуск внешнего размещения и Application Insights
Среды внешнего размещения теперь внедряют зависимости дополнительных пакетов и выполняют код во время запуска приложения; при этом приложению не нужно явно принимать зависимость или вызывать какие-либо методы. Эту функцию можно использовать для того, чтобы выделить в определенных средах какие-то уникальные для них компоненты без предварительной настройки самого приложения.
В ASP.NET Core 2.0 эта функция используется для автоматического включения диагностики Application Insights при отладке в Visual Studio и (после включения) при запуске службы приложений Azure. В связи с этим шаблоны проектов больше не добавляют пакеты и код Application Insights по умолчанию.
Сведения о состоянии плановой документации см. в статье о проблемах GitHub.
Автоматическое использование маркеров защиты от подделки
ASP.NET Core всегда помогает в создании HTML-кода для содержимого, но в новой версии сделан еще один шаг к предотвращению атак с подделкой межсайтовых запросов (XSRF). ASP.NET Core теперь выдает маркеры антифоргерии по умолчанию и проверяет их на действия и страницы формы БЕЗ дополнительной настройки.
Дополнительные сведения см. на странице Предотвращение атак с использованием подделки межсайтовых запросов (XSRF/CSRF) в ASP.NET Core.
Автоматическая предварительная компиляция
При публикации по умолчанию включается предварительная компиляция представления Razor, что сокращает размер выходных данных публикации и время запуска приложения.
Дополнительные сведения см. в статье Компиляция и предварительная компиляция представлений Razor в ASP.NET Core.
Поддержка C# 7.1 в Razor
Для работы с новым компилятором Roslyn был обновлен и обработчик представлений Razor. Добавлена поддержка таких функций C# 7.1 как выражения по умолчанию, выводимые имена кортежей и сопоставление шаблонов с универсальными шаблонами. Чтобы использовать C# 7.1 в проекте, добавьте в файл проекта следующее свойство и перезагрузите решение.
<LangVersion>latest</LangVersion>
Сведения о состоянии компонентов C# 7.1 см. в статье о репозитории Roslyn GitHub.
Изменения в другой документации к версии 2.0
- Профили публикации Visual Studio для развертывания приложений ASP.NET Core
- Управление ключами
- Как настроить приложение службы приложений для использования имени для входа Facebook
- Как настроить приложение службы приложений для использования имени для входа Twitter
- Как настроить приложение службы приложений для использования имени для входа Google
- Настройка проверки подлинности учетной записи Майкрософт
Руководство по миграции
Инструкции по миграции приложений с ASP.NET Core 1.x в ASP.NET 2.0 см. в следующих ресурсах.
- Миграция с ASP.NET Core 1.x на ASP.NET Core 2.0
- Миграция проверки подлинности и Identity в ASP.NET Core 2.0
Дополнительная информация
Полный список изменений см. в статье Заметки о выпуске ASP.NET Core 2.0.
Чтобы отслеживать ход работы и планы команды разработчиков ASP.NET Core, смотрите выпуски ASP.NET Community Standup.
ASP.NET Core