Лучшие новые функции ASP.NET Core 6.

автор vadim


Microsoft .NET 6 вышла в ноябре 2021 года со множеством новых замечательных функций для разработчиков .NET. Однако самой большой изюминкой .NET 6 является ASP.NET Core 6, серьезное обновление платформы Microsoft с открытым исходным кодом для создания современных веб-приложений.

ASP.NET Core 6 создан на основе среды выполнения .NET Core и позволяет создавать и запускать приложения в Windows, Linux и macOS. ASP.NET Core 6 сочетает в себе функции веб-API и MVC. В этой статье обсуждаются новые возможности ASP.NET 6 с некоторыми примерами кода.

Для работы с примерами кода, представленными в этой статье, на вашем компьютере должна быть установлена ​​Visual Studio 2022. Вы можете скачать Visual Studio 2022 здесь.

Теперь давайте углубимся в новые возможности ASP.NET Core 6.

Горячая перезагрузка

Горячая перезагрузка — одна из самых ярких новых функций, добавленных в .NET 6. Вы можете воспользоваться этой функцией для изменения пользовательского интерфейса во время выполнения приложения ASP.NET Core 6. Вы сможете увидеть отраженные изменения после их сохранения — вам не нужно пересобирать и перезапускать приложение. Эта функция значительно повышает производительность разработчиков.

Минимальные API

ASP.NET Core 6 позволяет создавать облегченные службы (также называемые минимальными API), для которых не требуется шаблон или класс контроллера. Кроме того, вы можете использовать методы расширения интерфейса IEndpointConventionBuilder для создания облегченных служб, не имеющих шаблона или контроллера. Вы можете создавать облегченные службы или API в классе Startup или Program.

Вы можете воспользоваться некоторыми методами расширения интерфейса IEndpointConventionBuilder для сопоставления запросов. Вот список этих методов расширения:

  • MapControllers
  • КартаПолучить
  • MapPut
  • MapPost
  • КартаУдалить
  • КартаБритваСтраницы
  • КартаGrpcService
  • MapHub

Методы MapGet, MapPut, MapPost и MapDelete используются для подключения делегата запроса к системе маршрутизации. Метод MapControllers используется для контроллеров, MapRazorPages для Razor Pages, MapHub для SignalR и MapGrpcService для gRPC.

Например, следующий фрагмент кода показывает, как можно использовать облегченную службу для записи ответа «Hello World» в файле Program.cs.

var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("https://www.infoworld.com/", (Func<string>)(() => "Hello World!"));

Объединение классов «Программа» и «Стартап»

В ASP.NET Core 5 и более ранних версиях нам приходилось работать с двумя классами для создания и настройки приложения. Этими классами являются классы Program и Startup, которые расположены в файлах Program.cs и Startup.cs.

Вот пример типичного класса запуска в ASP.NET Core 5:

public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }
         public IConfiguration Configuration { get; }
         public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();
            services.AddSingleton<IDataService, DataService>();
        }
        public void Configure(IApplicationBuilder app,
        IWebHostEnvironment env)
        {
             if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
                app.UseHsts();
            }
            app.UseHttpsRedirection();
            app.UseRouting();
            app.UseAuthorization();
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllerRoute(
                    name: "default",
                    pattern: "{controller=Home}/{action=Index}/{id?}");
            });
        }
    }

В ASP.NET 6 классы Program и Startup были объединены в класс Program. Вот пример класса Program в ASP.NET Core 6:

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();
builder.Services.AddSingleton<IDataService, DataService>();
var app = builder.Build();
if (app.Environment.IsDevelopment())
{
    app.UseDeveloperExceptionPage();
}
else
{
    app.UseExceptionHandler("/Home/Error");
    app.UseHsts();
}
app.UseHttpsRedirection();
app.UseRouting();
app.UseAuthorization();
app.MapControllers();
app.Run();

Изменения в файле Program.cs

Новый шаблон консоли значительно упрощает код, который необходимо написать для программы. Шаблон консоли больше не содержит класс Program. По сути, теперь вам нужно написать только метод Main.

В предыдущих версиях .NET при создании нового проекта ASP.NET Core класс с именем Program автоматически создавался внутри файла с именем Program.cs. Класс Program будет включать метод Main, с которого начинается выполнение приложения ASP.NET Core. Main — это метод, в котором веб-приложение создается, настраивается и выполняется.

Когда вы создаете новый проект консольного приложения в .NET 6, Visual Studio создает файл Program.cs по умолчанию, содержащий следующий код:

// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");

Когда вы создаете новый проект консольного приложения в .NET 5, файл Program.cs по умолчанию содержит следующий код:

using System;
namespace IDGNet6Demo
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

В ASP.NET Core 5 и более ранних версиях типичный файл Program.cs будет содержать следующий код:

public class Program {
   public static void Main(string[] args) {
      CreateHostBuilder(args).Build().Run();
   }
   public static IHostBuilder CreateHostBuilder(string[] args) =>
      Host.CreateDefaultBuilder(args)
      .ConfigureWebHostDefaults(webBuilder => {
         webBuilder.UseStartup <Startup> ();
      });
}

А в ASP.NET Core 6 типичный файл Program.cs будет содержать следующий код:

using NET6Demo;
Host.CreateDefaultBuilder(args)
    .ConfigureWebHostDefaults(webBuilder =>
    {
        webBuilder.UseStartup<Startup>();
    }).Build().Run();

Обратите внимание, что вы больше не найдете файл Startup.cs по умолчанию в ASP.NET Core 6. Однако, если вам нужна обратная совместимость с более ранними версиями ASP.NET Core или вам просто удобнее использовать старый стиль, вы можете можно создать класс Startup в проекте вручную.

Затем вызовите метод UseStartup, чтобы указать класс Startup, как показано в предыдущем фрагменте кода.

Промежуточное программное обеспечение для ведения журнала HTTP

Поддержка промежуточного программного обеспечения ведения журнала HTTP была введена в ASP.NET Core 6. Вы можете воспользоваться этим промежуточным программным обеспечением в ASP.NET Core 6 для регистрации информации о HTTP-запросах и ответах, которые включают одно или несколько из следующих действий:

  • Запрашивать информацию
  • Информация об ответе
  • Заголовки запроса и ответа
  • Тело запроса
  • Характеристики

Улучшения Блазора

В ASP.NET Core 6 есть несколько улучшений Blazor. Вот некоторые из наиболее важных:

  • Возможность рендеринга компонентов из JavaScript.
  • Поддержка сохранения предварительно отрисованного состояния.
  • Поддержка пользовательских аргументов событий.
  • Поддержка инициализаторов JavaScript.
  • Возможность динамического рендеринга компонентов с помощью класса DynamicComponent.
  • Возможность определять границы ошибок с помощью класса ErrorBoundary.

Улучшенная поддержка IAsyncDisposable.

У вас также есть расширенная поддержка IAsyncDisposable на ваших контроллерах, классах, моделях страниц и компонентах представления для освобождения асинхронных ресурсов.

Неспособность избавиться от асинхронного одноразового ресурса может привести к взаимоблокировкам. Интерфейс IAsyncDisposable решает эту проблему, асинхронно освобождая ресурсы. Интерфейс IAsyncDisposable — это часть пространства имен System, представленного в C# 8.0.

Точно так же, как вы реализуете метод Dispose() интерфейса IDisposable для синхронных вызовов, вам следует реализовать метод DisposeAsync() интерфейса IAsyncDisposable для выполнения операций очистки и асинхронного освобождения ресурсов.

Экосистема .NET 6 обеспечивает упрощенную модель разработки, повышенную производительность и производительность. В ASP.NET Core 6 было внесено множество улучшений для повышения производительности приложений и сокращения выделения ресурсов. Кроме того, разработчики получают выгоду от многих улучшений, которые делают разработку производительных современных веб-приложений быстрее и проще.

Related Posts

Оставить комментарий