Компоненты ASP.NET Core C#

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

Middleware

Пайплайн обработки запросов формируется за счёт цепочки промежуточного программного обеспечения. Каждый компонент (middleware) выполняет определённые задачи, такие как аутентификация, логирование, обработка исключений и прочее, обеспечивая обработку входящих HTTP-запросов и формирование ответов.

Dependency Injection

Встроенный механизм внедрения зависимостей упрощает управление связями между компонентами и облегчает тестирование. Регистрация сервисов в контейнере DI позволяет централизованно управлять зависимостями и создавать масштабируемые приложения.

Routing

Система маршрутизации направляет входящие запросы к соответствующим обработчикам. Гибкость настройки шаблонов URL и маршрутов позволяет создавать эффективные схемы распределения запросов для различных сценариев.

Hosting

Компонент хостинга отвечает за запуск приложения и его интеграцию с веб-сервером. Использование встроенного сервера Kestrel и универсальной модели хостинга обеспечивает возможность работы приложения в различных средах.

Configuration

Система конфигурации объединяет параметры приложения из разнообразных источников: файлов, переменных окружения, секретов и других. Это позволяет централизованно управлять настройками и адаптировать поведение приложения под разные условия.

Logging

Встроенная инфраструктура логирования обеспечивает сбор и анализ информации о работе приложения, что помогает отслеживать события, проводить диагностику и устранять ошибки.

MVC, Razor Pages, Web API

Фреймворк поддерживает различные модели разработки пользовательских интерфейсов и API. Использование подходов MVC, Razor Pages или Web API позволяет создавать как традиционные веб-приложения, так и RESTful сервисы.

Примеры реализации

Пример настройки сервисов в файле Startup.cs.

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllersWithViews();
        services.AddRazorPages();
        services.AddSingleton<IMyService, MyService>();
    }
    
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if(env.IsDevelopment()){
            app.UseDeveloperExceptionPage();
        } else {
            app.UseExceptionHandler("/Home/Error");
            app.UseHsts();
        }
        app.UseHttpsRedirection();
        app.UseStaticFiles();
        app.UseRouting();
        app.UseAuthorization();
        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllerRoute(name: "default", pattern: "{controller=Home}/{action=Index}/{id?}");
            endpoints.MapRazorPages();
        });
    }
}

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