CFSDN nhấn mạnh vào việc tạo ra giá trị thông qua mã nguồn mở. Chúng tôi cam kết xây dựng một nền tảng chia sẻ tài nguyên để mọi người làm CNTT có thể tìm thấy thế giới tuyệt vời của riêng mình tại đây.
Bài đăng trên blog CFSDN này phân tích hướng dẫn sử dụng IStartupFilter trong các dự án .netcore. Bài viết được tác giả thu thập và biên soạn. Nếu bạn quan tâm đến bài viết này, hãy nhớ thích nó.
lý lịch:
Một số dịch vụ trong dự án netcore giao tiếp thông qua phần mềm trung gian, chẳng hạn như thành phần orleans. Dịch vụ và máy khách trong đó sẽ chỉ định cổng và cổng. Chúng ta chỉ cần mở máy khách ra thế giới bên ngoài và đóng cổng trên máy chủ. Điều này tương đương với việc loại bỏ máy chủ, giúp tiết kiệm một số kết nối cấu hình và cổng, đồng thời rất tiện lợi khi sử dụng.
Giết máy chủ bằng đoạn mã sau:
sử dụng Microsoft.AspNetCore.Builder;sử dụng Microsoft.AspNetCore.Hosting;sử dụng Microsoft.Extensions.DependencyInjection;sử dụng Microsoft.Extensions.Hosting;sử dụng System;namespace StartupFilterTest{ nội bộ lớp Program { tĩnh void Main(string[] args) { #region Net 5 Host.CreateDefaultBuilder(args) .ConfigureServices((hostContext, svc) => { svc.AddSingleton(); }) //.ConfigureWebHostDefaults(host => //{ // host.UseStartup(); //}) .Build().Run(); #endregion #region Net 6 //var builder = WebApplication.CreateBuilder(); //builder.Services.AddSingleton(); //var app = builder.Build(); //app.Run(); //WebApplicationBuilder _bootstrapHostBuilder Cấu hìnhWebHostDefaults #endregion } }}
Mã được chú thích trong net5 là dịch vụ chúng ta tắt và chạy nó tương đương với một bảng điều khiển thuần túy.
Tuy nhiên, tệp khởi động cần phải chỉ định phần mềm trung gian và các mã khác, do đó việc xóa tệp Khởi động sẽ bất tiện. Khi tìm kiếm tài liệu, tôi thấy rằng IStartupFilter có thể triển khai chức năng này, thay thế khối mã Configure.
public void Configure(ứng dụng IApplicationBuilder, môi trường IWebHostEnvironment) { }
Giao diện IStartupFilter chỉ có một phương thức, "Action Configure(Action next)". Chỉ cần triển khai nó và đưa vào vùng chứa.
lớp nội bộ MyStartupFilter: IStartupFilter { public Action Configure(Action next) { return app => { app.Run(async context => { await context.Response.WriteAsync("hello world"); }); next(app); }; } }
Nhưng một vấn đề mới phát sinh. Tôi thấy chương trình không bao giờ thực thi vào MyStartupFilter khi nó chạy. Tại sao vậy? Tôi đã xem mã nguồn và thấy rằng việc triển khai giao diện IStartupFilter được đặt trong webhost.
Vì vậy, bạn chỉ có thể chỉ định Máy chủ. Và phương pháp này yêu cầu phải chỉ định tệp Khởi động. Đây là kết thúc của vòng tròn. Tôi muốn đơn giản hóa nó nhưng thiết kế của Microsoft khiến tôi phải đi vòng tròn.

Sau đó tôi phát hiện ra rằng net6 có thể được triển khai mà không cần file khởi động, hãy xem phần bình luận của mã net6 ở trên. Chương trình net6 đã có những thay đổi lớn và bắt đầu với WebApplication. Khi xem ứng dụng web, tôi tìm thấy trình xây dựng của nó, trình này chỉ định lệnh gọi ConfigureWebHostDefaults thông qua bootstrapHostBuilder.

Net6 có thể đơn giản hóa tệp Khởi động, nhưng quá trình khởi động của nó được liên kết trực tiếp với máy chủ web. So với net5, ngay cả máy chủ cũng không thể được lưu.
Sau khi đi vòng quanh, tôi quay lại điểm xuất phát. Vì tôi chưa nghiên cứu mã nguồn của nó nên tôi chỉ hiểu được đến mức này. Hai câu hỏi cuối cùng: 1. Net6 có thể chạy mà không cần máy chủ không? 2. IStartupFilter và Startup có thể được tách biệt khỏi máy chủ và độc lập với nhau không? Đừng liên kết chúng lại với nhau.
Đây là phần cuối của bài viết này về việc sử dụng IStartupFilter trong dự án netcore. Để biết thêm thông tin về việc sử dụng netcore IStartupFilter, vui lòng tìm kiếm các bài viết trước của tôi hoặc tiếp tục duyệt các bài viết liên quan sau. Tôi hy vọng bạn sẽ ủng hộ tôi trong tương lai! .
Liên kết gốc: https://www.cnblogs.com/morec/p/15577629.html.
Cuối cùng, bài viết này về phân tích cú pháp hướng dẫn về cách sử dụng IStartupFilter trong các dự án .netcore đã kết thúc. Nếu bạn muốn biết thêm về phân tích cú pháp hướng dẫn về cách sử dụng IStartupFilter trong các dự án .netcore, vui lòng tìm kiếm các bài viết trên CFSDN hoặc tiếp tục duyệt các bài viết liên quan. Tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .
Tôi là một lập trình viên xuất sắc, rất giỏi!