Computer >> Máy Tính >  >> Lập trình >> C#

C # ASP.NET Core Middleware khác với HttpModule như thế nào?

HttpModules được định cấu hình qua web.config hoặc global.asaxDeveloper không có quyền kiểm soát thứ tự thực thi.

Vì thứ tự của các mô-đun chủ yếu dựa trên các sự kiện trong vòng đời ứng dụng nên thứ tự thực thi vẫn giữ nguyên cho các yêu cầu và phản hồi.

HttpModules giúp bạn đính kèm mã cụ thể cho các sự kiện ứng dụng. HttpModules được liên kết với System.web.

Phần mềm trung gian được định cấu hình trong mã Startup.cs chứ không phải tệp web.config (điểm nhập cho ứng dụng)

Không giống như HttpModules, có toàn quyền kiểm soát những gì được thực thi và theo thứ tự. Asthey được thực hiện theo thứ tự mà chúng được thêm vào.

Thứ tự của phần mềm trung gian cho các phản hồi là ngược lại so với thứ tự cho các yêu cầu.

Phần mềm trung gian độc lập với các sự kiện này.

Phần mềm trung gian độc lập với máy chủ.

Tích hợp phần mềm trung gian của lõi Asp.Net

Xác thực Cung cấp hỗ trợ xác thực.

CORS Định cấu hình Chia sẻ Tài nguyên Nhiều Nguồn gốc.

Định tuyến Xác định và ràng buộc các tuyến yêu cầu.

Phiên Cung cấp hỗ trợ để quản lý phiên người dùng.

Chẩn đoán Bao gồm hỗ trợ cho các trang lỗi và thông tin thời gian chạy.

Ví dụ

public class MyMiddleware{
   private readonly RequestDelegate _next;
   private readonly ILogger _logger;
   public MyMiddleware(RequestDelegate next, ILoggerFactory logFactory){
      _next = next;
      _logger = logFactory.CreateLogger("MyMiddleware");
   }
   public async Task Invoke(HttpContext httpContext){
      _logger.LogInformation("MyMiddleware executing..");
      await _next(httpContext); // calling next middleware
   }
}

// Phương thức mở rộng được sử dụng để thêm phần mềm trung gian vào đường dẫn yêu cầu HTTP.

public static class MyMiddlewareExtensions{
   public static IApplicationBuilder UseMyMiddleware(this IApplicationBuilder
   builder){
      return builder.UseMiddleware<MyMiddleware>();
   }
}

// thêm phần mềm trung gian tùy chỉnh vào đường dẫn yêu cầu bằng cách sử dụng Sử dụng phương thức tiện ích mở rộng được hiển thị bên dưới

public void Configure(IApplicationBuilder app, IHostingEnvironment env){
   app.UseMiddleware<MyMiddleware>()
   app.Run(async (context) =>{
      await context.Response.WriteAsync("Hello World!");
   });
}