Cách vận hành của Middleware trong ASP.NET Core

 9/1/2019 |  Admin   4904 lượt xem

(netcore.vn) - Cách vận hành của Middleware trong ASP.NET Core

Trong chương này, chúng ta sẽ hiểu cách thiết lập phần mềm trung gian. Middleware trong ASP.NET Core kiểm soát cách ứng dụng của chúng tôi đáp ứng các yêu cầu HTTP. Nó cũng có thể kiểm soát ứng dụng của chúng ta trông như thế nào khi có lỗi và đó là một phần quan trọng trong cách chúng ta xác thực và ủy quyền cho người dùng thực hiện các hành động cụ thể.

  • Middleware là các thành phần phần mềm được tập hợp thành một đường ống ứng dụng để xử lý các yêu cầu và phản hồi.

  • Mỗi thành phần chọn có chuyển yêu cầu sang thành phần tiếp theo trong đường ống hay không và có thể thực hiện một số hành động nhất định trước và sau khi thành phần tiếp theo được gọi trong đường ống.

  • Đại biểu yêu cầu được sử dụng để xây dựng các đường ống yêu cầu. Các đại biểu yêu cầu xử lý từng yêu cầu HTTP.

  • Mỗi phần mềm trung gian trong ASP.NET Core là một đối tượng và mỗi phần có vai trò rất cụ thể, tập trung và hạn chế.

  • Cuối cùng, chúng ta cần nhiều phần mềm trung gian cho một ứng dụng để hành xử phù hợp.

Bây giờ chúng ta giả sử rằng chúng ta muốn đăng nhập thông tin về mọi yêu cầu vào ứng dụng của chúng ta.

  • Trong trường hợp đó, phần đầu tiên của phần mềm trung gian mà chúng ta có thể cài đặt vào ứng dụng là một thành phần ghi nhật ký.

  • Trình ghi nhật ký này có thể thấy mọi thứ về yêu cầu đến, nhưng rất có thể một trình ghi nhật ký chỉ đơn giản là ghi lại một số thông tin và sau đó chuyển yêu cầu này đến phần tiếp theo của phần mềm trung gian.

Middleware

  • Middleware là một loạt các thành phần có mặt trong đường ống xử lý này.

  • Phần tiếp theo của phần mềm trung gian mà chúng tôi đã cài đặt vào ứng dụng là một người ủy quyền.

  • Người ủy quyền có thể đang tìm kiếm cookie cụ thể hoặc mã thông báo truy cập trong các tiêu đề HTTP.

  • Nếu người ủy quyền tìm thấy mã thông báo, nó cho phép yêu cầu tiến hành. Nếu không, có lẽ chính người ủy quyền sẽ trả lời yêu cầu bằng mã lỗi HTTP hoặc mã chuyển hướng để gửi người dùng đến trang đăng nhập.

  • Nhưng, nếu không, người ủy quyền sẽ chuyển yêu cầu đến phần tiếp theo của phần mềm trung gian là bộ định tuyến.

  • Một bộ định tuyến nhìn vào URL và xác định bước hành động tiếp theo của bạn.

  • Bộ định tuyến xem xét ứng dụng để tìm phản hồi và nếu bộ định tuyến không tìm thấy bất cứ điều gì để phản hồi, bộ định tuyến có thể trả về lỗi 404 Không tìm thấy.

Ví dụ

Bây giờ chúng ta hãy lấy một ví dụ đơn giản để hiểu thêm về phần mềm trung gian. Chúng tôi thiết lập phần mềm trung gian trong ASP.NET bằng phương thức Cấu hình của lớp Khởi động.

using Microsoft.AspNet.Builder; 
using Microsoft.AspNet.Hosting; 
using Microsoft.AspNet.Http; 

using Microsoft.Extensions.DependencyInjection; 
using Microsoft.Extensions.Configuration;  

namespace FirstAppDemo { 
   public class Startup { 
      public Startup() { 
         var builder = new ConfigurationBuilder() 
            .AddJsonFile("AppSettings.json"); 
         Configuration = builder.Build(); 
      }  
      public IConfiguration Configuration { get; set; }  
       
      // This method gets called by the runtime. 
      // Use this method to add services to the container. 
      // For more information on how to configure your application, 
      // visit http://go.microsoft.com/fwlink/?LinkID=398940 
      public void ConfigureServices(IServiceCollection services) { 
      }  
      
      // This method gets called by the runtime.  
      // Use this method to configure the HTTP request pipeline. 
      public void Configure(IApplicationBuilder app) { 
         app.UseIISPlatformHandler();  
         
         app.Run(async (context) => { 
            var msg = Configuration["message"]; 
            await context.Response.WriteAsync(msg); 
         });  
      }  
      // Entry point for the application. 
      public static void Main(string[] args) => WebApplication.Run<Startup>(args); 
   } 
} 

Bên trong phương thức Configure (), chúng tôi sẽ gọi các phương thức mở rộng trên giao diện IApplicationBuilder để thêm phần mềm trung gian.

Theo mặc định, có hai phần mềm trung gian trong một dự án trống mới

  • IISPlatformHandler
  • Middleware registered with app.Run

ISPl PlatformHandler
IISPl PlatformHandler cho phép chúng tôi làm việc với xác thực Windows. Nó sẽ xem xét mọi yêu cầu đến và xem liệu có bất kỳ thông tin nhận dạng Windows nào được liên kết với yêu cầu đó không và sau đó nó gọi phần tiếp theo của phần mềm trung gian.

Middleware đã đăng ký với app.Run
Phần tiếp theo của phần mềm trung gian trong trường hợp này là một phần của phần mềm trung gian đã đăng ký với app.Run. Phương thức Run cho phép chúng ta vượt qua trong một phương thức khác mà chúng ta có thể sử dụng để xử lý mọi phản hồi đơn lẻ. Chạy không phải là thứ mà bạn sẽ thấy rất thường xuyên, nó là thứ mà chúng ta gọi là phần cuối của phần mềm trung gian.

Middleware mà bạn đăng ký với Run sẽ không bao giờ có cơ hội gọi một phần mềm trung gian khác, tất cả những gì nó làm là nhận được một yêu cầu, và sau đó nó phải tạo ra một số phản hồi.

Bạn cũng có quyền truy cập vào một đối tượng Phản hồi và một trong những điều bạn có thể làm với đối tượng Phản hồi là viết một chuỗi.

Nếu bạn muốn đăng ký một phần mềm trung gian khác sau app.Run, phần trung gian đó sẽ không bao giờ được gọi bởi vì, một lần nữa, Run là một phần cuối của phần mềm trung gian. Nó sẽ không bao giờ gọi vào phần tiếp theo của phần mềm trung gian.

Cách thêm Middleware khác
Hãy để chúng tôi tiến hành các bước sau để thêm một phần mềm trung gian khác -

Bước 1 - Để thêm một phần mềm trung gian khác, nhấp chuột phải vào dự án và chọn Quản lý gói NuGet.

Bước 2 - Tìm kiếm Microsoft.aspnet.diagnostics thực sự là phần mềm trung gian ASP.NET Core để xử lý ngoại lệ, trang hiển thị ngoại lệ và thông tin chẩn đoán. Gói đặc biệt này chứa nhiều phần khác nhau của phần mềm trung gian mà chúng ta có thể sử dụng.

Microsoft AspNet Diagnostics

Bước 3 - Cài đặt gói đó nếu nó không được cài đặt trong dự án của bạn.

Bước 4 - Bây giờ chúng ta hãy đến phương thức Configure () và gọi app.UseWelcomePage.

// This method gets called by the runtime.  
// Use this method to configure the HTTP request pipeline. 
public void Configure(IApplicationBuilder app) { 
   app.UseIISPlatformHandler(); 
   app.UseWelcomePage();  
   
   app.Run(async (context) => { 
      var msg = Configuration["message"]; 
      await context.Response.WriteAsync(msg); 
   });  
}

Bước 5 - Chạy ứng dụng của bạn và bạn sẽ thấy màn hình chào mừng sau đây.

Welcome Screen

Màn hình Chào mừng này có thể không hữu ích.

Bước 6 - Chúng ta hãy thử một cái gì đó có thể hữu ích hơn một chút. Thay vì sử dụng trang Chào mừng, chúng tôi sẽ sử dụng RuntimeInfoPage.

// This method gets called by the runtime.  
// Use this method to configure the HTTP request pipeline. 
public void Configure(IApplicationBuilder app) { 
   app.UseIISPlatformHandler(); 
   app.UseRuntimeInfoPage();  
   
   app.Run(async (context) => { 
      var msg = Configuration["message"]; 
      await context.Response.WriteAsync(msg); 
   });  
}

Bước 7 - Lưu trang Startup.cs của bạn và làm mới trình duyệt của bạn và bạn sẽ thấy trang sau.

Startup CS

RuntimeInfoPage này là một phần mềm trung gian sẽ chỉ đáp ứng các yêu cầu đến với một URL cụ thể. Nếu yêu cầu đến không khớp với URL đó, phần trung gian này chỉ cho phép yêu cầu chuyển qua phần tiếp theo của phần mềm trung gian. Yêu cầu sẽ chuyển qua phần mềm trung gian IISPl PlatformHandler, sau đó chuyển đến phần mềm trung gian UseR nbInfoPage. Nó sẽ không tạo ra một phản hồi, vì vậy nó sẽ đi đến ứng dụng của chúng tôi.Run và hiển thị chuỗi.

Bước 8 - Hãy để chúng tôi thêm vào Wikipedia / runtimeinfo vào cuối URL của bạn. Bây giờ bạn sẽ thấy một trang được tạo bởi phần mềm trung gian trang thông tin thời gian chạy đó.

Runtime Information

Bây giờ bạn sẽ thấy một phản hồi cung cấp cho bạn một số thông tin về môi trường thời gian chạy của bạn, chẳng hạn như Hệ điều hành, phiên bản thời gian chạy, kiến trúc, loại và tất cả các gói bạn đang sử dụng, v.v.

liên quan

Tìm hiểu tất tần tật về Model Validation trong ASP.NET Core  4160

 2/23/2020

HTTP 400 Responses có gì mới trong web APIs của ASP.NET Core

Xem chi tiết 

HTTP 400 Responses có gì mới trong web APIs của ASP.NET Core  2799

 2/23/2020

HTTP 400 Responses có gì mới trong web APIs của ASP.NET Core

Xem chi tiết 

ASP.NET Core - Đăng nhập và đăng xuất  20216

 9/5/2019

Sau đây, NET Core VN xin giới thiệu 2 chức năng đăng nhập và đăng xuất trong ASP.NET Core.

Xem chi tiết 

ASP.NET Core - CRUD cho User module  4932

 9/5/2019

Sau đây, NET Core VN xin giới thiệu CRUD thông tin User trong ASP.NET Core.

Xem chi tiết 

Identity Migrations trong ASP.NET Core  2990

 9/5/2019

Sau đây, .NET Core VN xin giới thiệu về chạy migration cho Identity trong ASP.NET Core.

Xem chi tiết 

Cấu hình Identity trong ASP.NET Core  4277

 9/5/2019

Cấu hình Identity trong ASP.NET Core

Xem chi tiết 

Thuộc tính Authorize trong ASP.NET Core  5261

 9/5/2019

Thuộc tính Authorize trong ASP.NET Core

Xem chi tiết 

Tổng quan về Identity trong ASP.NET Core  5359

 9/5/2019

Tổng quan về Identity trong ASP.NET Core

Xem chi tiết 

ASP.NET Core - Razor Edit Form là gì?  2465

 9/5/2019

ASP.NET Core - Razor Edit Form là gì?

Xem chi tiết 

ASP.NET Core - Razor Tag Helpers là gì?  2562

 9/5/2019

ASP.NET Core - Razor Tag Helpers là gì?

Xem chi tiết 
Like Fanpage Để Ủng Hộ Chúng Tôi Duy Trì Website