Изучение основных концепций ASP.NET Core: промежуточное ПО, маршрутизация, контроллеры, представления и внедрение зависимостей.

Основные концепции ASP.NET Core связаны с созданием веб-приложений с использованием этой платформы. Вот некоторые ключевые понятия и примеры кода:

  1. Промежуточное программное обеспечение.
    Компоненты промежуточного программного обеспечения — это строительные блоки приложений ASP.NET Core. Они обрабатывают HTTP-запросы и ответы. Вот пример специального промежуточного программного обеспечения, которое регистрирует путь запроса:
public class RequestLoggerMiddleware
{
    private readonly RequestDelegate _next;
    public RequestLoggerMiddleware(RequestDelegate next)
    {
        _next = next;
    }
    public async Task Invoke(HttpContext context)
    {
        // Log the request path
        Console.WriteLine($"Request Path: {context.Request.Path}");
        // Call the next middleware in the pipeline
        await _next(context);
    }
}
// In Startup.cs
public void Configure(IApplicationBuilder app)
{
    // Register the middleware
    app.UseMiddleware<RequestLoggerMiddleware>();
    // Other middleware registrations
    // ...
}
  1. Маршрутизация.
    ASP.NET Core использует маршрутизацию для сопоставления входящих запросов с соответствующими контроллерами и действиями. Вот пример настройки маршрутов:
// In Startup.cs
public void Configure(IEndpointRouteBuilder endpoints)
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
}
  1. Контроллеры и действия.
    Контроллеры обрабатывают входящие запросы и выполняют действия на основе запрошенного маршрута. Вот пример контроллера с действием:
public class HomeController : Controller
{
    public IActionResult Index()
    {
        return View();
    }
}
  1. Представления и страницы Razor.
    Представления используются для генерации ответов HTML. Razor Pages предоставляет упрощенный способ определения логики представления и контроллера в одном файле. Вот пример страницы Razor:
<!-- Index.cshtml -->
@page
@model IndexModel
<h1>Welcome to my blog!</h1>
<p>@Model.Message</p>
// Index.cshtml.cs
public class IndexModel : PageModel
{
    public string Message { get; set; }
    public void OnGet()
    {
        Message = "Hello, ASP.NET Core!";
    }
}
  1. Внедрение зависимостей.
    ASP.NET Core имеет встроенную поддержку внедрения зависимостей. Вот пример внедрения службы в контроллер:
public interface IMyService
{
    void DoSomething();
}
public class MyService : IMyService
{
    public void DoSomething()
    {
        // Implementation
    }
}
public class HomeController : Controller
{
    private readonly IMyService _myService;
    public HomeController(IMyService myService)
    {
        _myService = myService;
    }
    public IActionResult Index()
    {
        _myService.DoSomething();
        return View();
    }
}