Mô hình lưu trữ lõi Asp.Net được sử dụng trong các ứng dụng web như thế nào?



Lõi Asp.net có sự cải tiến đáng kể cho mô hình lưu trữ. Các phiên bản trước dự kiến ​​sẽ lưu trữ các ứng dụng web Asp.net Core thông qua các máy chủ web proxy như IIS trên Windows, Apache hoặc NGINX. Tuy nhiên, Asp.net core 2.2 mới cho phép lưu trữ trực tiếp ứng dụng Asp.net trong Windows trong IIS mà không cần các yêu cầu máy chủ bên ngoài. Do đó, điều này làm tăng thông lượng bằng cách sử dụng cơ chế lưu trữ trong quá trình đơn giản.

Mô hình lưu trữ trong ASP.NET Core

ASP.NET là một công nghệ từ Microsoft cho phép bạn tạo các trang động ở phía máy chủ web.

Lưu trữ ASP.NET được tích hợp đầy đủ với phần mềm dựa trên Windows cũng như với chính hệ điều hành. Công nghệ này được coi là khá an toàn và đáng tin cậy, cũng như dễ sử dụng. Nó chủ yếu được sử dụng để phát triển các sản phẩm trong ứng dụng.

Các mô hình lưu trữ trong ASP.NET Core có hai loại, tức là Hosting trong quá trình và Hosting ngoài quy trình. Trước ASP.Net Core 2.2 chỉ có một mô hình lưu trữ, đó là lưu trữ ngoài quy trình nhưng do hiệu năng, Mô hình lưu trữ trong quy trình trong các phiên bản Asp.net core 2.2 được giới thiệu.

Giới thiệu Mô hình Hosting trong quá trình trong Asp.net Core

Các phiên bản trước của ASP.NET Core yêu cầu một phiên bản để lưu trữ ứng dụng trong IIS bằng cách sử dụng mô hình lưu trữ ngoài quy trình ủy quyền thông qua IIS. Các yêu cầu đạt IIS hoặc IIS Express được chuyển tiếp đến ứng dụng web ASP.NET Core chạy trong Máy chủ web Kestrel. Tuy nhiên, với lưu trữ trong quá trình mới, chỉ có một máy chủ được sử dụng để lưu trữ như IIS, Nginx hoặc Linux. Điều đó có nghĩa là thay vì chuyển tiếp các yêu cầu tới Kestrel, một triển khai Máy chủ Web mới (IISHttpServer) được lưu trữ trực tiếp bên trong Nhóm ứng dụng IIS, sẽ phục vụ yêu cầu. Với ASP.NET Core 3.1, mô hình lưu trữ trong quá trình được sử dụng làm mô hình mặc định bất cứ khi nào bạn phát triển một ứng dụng mới bằng cách sử dụng một mẫu hiện có.

Rõ ràng, mô hình lưu trữ này có thông lượng và hiệu suất cao hơn nhiều so với mô hình lưu trữ Out-Of-Process.

Mô hình lưu trữ ngoài quy trình

Trong các mô hình lưu trữ ngoài quy trình, bạn có thể sử dụng trực tiếp máy chủ Kestrel làm máy chủ đối mặt với yêu cầu của người dùng hoặc bạn có thể triển khai ứng dụng vào IIS sẽ hoạt động như một máy chủ proxy và gửi yêu cầu đến máy chủ Kestrel nội bộ. Trong loại mô hình lưu trữ này, bạn có hai tùy chọn để lưu trữ tức là sử dụng Kestrel và Proxy Server:

1. Sử dụng Kestrel

Trong đó, Kestrel tự đóng vai trò là máy chủ biên, máy chủ trực tiếp yêu cầu người dùng, điều đó có nghĩa là người ta chỉ có thể sử dụng máy chủ Kestrel cho ứng dụng.

2. Sử dụng máy chủ proxy

Do những hạn chế của máy chủ Kestrel, người ta không thể sử dụng điều này trong tất cả các ứng dụng. Trong những trường hợp như vậy, người ta phải sử dụng các máy chủ mạnh mẽ như IIS, Apache hoặc NGINX. Vì vậy, trong tình huống này, máy chủ này hoạt động như một máy chủ proxy dự trữ sẽ chuyển hướng mọi yêu cầu đến máy chủ Kestrel nội bộ nơi ứng dụng đang chạy. Tại đây, hai máy chủ như IIS và Kestrel đang chạy.

Mô hình lưu trữ này là mô hình mặc định cho tất cả các ứng dụng đã triển khai phiên bản .NET Core 2.2 trước đó. Một trong những hạn chế của việc sử dụng loại này như hiệu suất chậm.

Suy nghĩ cuối cùng:

Theo thực tế, hầu hết các công ty phát triển web ASP.Net chắc chắn muốn sử dụng mô hình lưu trữ trong quá trình. Vì nó tiêu thụ ít tài nguyên hơn và cung cấp hiệu suất tốt. Vì nó không cần một quy trình bổ sung cho Kestrel và nó cũng tránh giao tiếp thêm giữa IIS và Kestrel. Tuy nhiên, có những trường hợp người ta có thể muốn chọn lưu trữ Out-Of-Process, chẳng hạn như trong trường hợp lưu trữ cùng một ứng dụng web trong Windows và trong Linux. Khi nói về việc lưu trữ ứng dụng trên các nền tảng khác, Kestrel là cơ chế chính được sử dụng để xử lý các yêu cầu HTTP trên tất cả các nền tảng.

Tuy nhiên, chạy In-Process trên IIS là cách tốt nhất trừ khi bạn có yêu cầu rất cụ thể đối với Kestrel.

Tín dụng hình ảnh chính: Ảnh của Farzad Nazifi trên Bapt




Bình luận (0)

Để lại một bình luận