Tôi đã triển khai một ứng dụng ASP.NET MVC đêm qua và phát hiện ra rằng việc triển khai với IIS7 được đặt ở chế độ tích hợp sẽ ít tốn công hơn. Câu hỏi của tôi là sự khác biệt là gì? Và ý nghĩa của việc sử dụng cái này hay cái kia là gì?
Tôi đã triển khai một ứng dụng ASP.NET MVC đêm qua và phát hiện ra rằng việc triển khai với IIS7 được đặt ở chế độ tích hợp sẽ ít tốn công hơn. Câu hỏi của tôi là sự khác biệt là gì? Và ý nghĩa của việc sử dụng cái này hay cái kia là gì?
Câu trả lời:
Chế độ cổ điển (chế độ duy nhất trong IIS6 trở xuống) là chế độ trong đó IIS chỉ hoạt động với các phần mở rộng ISAPI và bộ lọc ISAPI. Trên thực tế, trong chế độ này, ASP.NET chỉ là một phần mở rộng ISAPI (aspnet_isapi.dll) và bộ lọc ISAPI (aspnet_filter.dll). IIS chỉ coi ASP.NET là một plugin bên ngoài được triển khai trong ISAPI và hoạt động với nó như một hộp đen (và chỉ khi nó cần đưa ra yêu cầu cho ASP.NET). Trong chế độ này, ASP.NET không khác nhiều so với PHP hoặc các công nghệ khác cho IIS.
Mặt khác, chế độ tích hợp là một chế độ mới trong IIS7 nơi đường ống IIS được tích hợp chặt chẽ (nghĩa là giống như) với đường ống yêu cầu ASP.NET. ASP.NET có thể thấy mọi yêu cầu mà nó muốn và thao tác mọi thứ trên đường đi. ASP.NET không còn được coi là một plugin bên ngoài. Nó hoàn toàn được pha trộn và tích hợp trong IIS. Trong chế độ này, HttpModule
về cơ bản , ASP.NET có sức mạnh gần như bộ lọc ISAPI sẽ có và ASP.NET HttpHandler
có thể có khả năng gần tương đương như một phần mở rộng ISAPI có thể có. Trong chế độ này, ASP.NET về cơ bản là một phần của IIS.
HttpModules
phương thức / sự kiện trong iis7
có nhiều chức năng hơn trong iis6
? bạn có thể giải thích về điều đó không ?
Chế độ nhóm ứng dụng tích hợp
Khi nhóm ứng dụng ở chế độ Tích hợp, bạn có thể tận dụng kiến trúc xử lý yêu cầu tích hợp của IIS và ASP.NET. Khi một nhân viên xử lý trong nhóm ứng dụng nhận được yêu cầu, yêu cầu sẽ chuyển qua một danh sách các sự kiện được sắp xếp. Mỗi sự kiện gọi các mô đun gốc và được quản lý cần thiết để xử lý các phần của yêu cầu và để tạo phản hồi.
Có một số lợi ích khi chạy nhóm ứng dụng trong chế độ Tích hợp. Đầu tiên, các mô hình xử lý yêu cầu của IIS và ASP.NET được tích hợp vào một mô hình quy trình thống nhất. Mô hình này loại bỏ các bước đã được sao chép trước đó trong IIS và ASP.NET, chẳng hạn như xác thực. Ngoài ra, Chế độ tích hợp cho phép tính khả dụng của các tính năng được quản lý cho tất cả các loại nội dung.
Chế độ bể bơi ứng dụng cổ điển
Khi nhóm ứng dụng ở chế độ Cổ điển, IIS 7.0 sẽ xử lý các yêu cầu như trong chế độ cách ly quy trình công nhân IIS 6.0. Yêu cầu ASP.NET trước tiên trải qua các bước xử lý riêng trong IIS và sau đó được chuyển đến Aspnet_isapi.dll để xử lý mã được quản lý trong thời gian chạy được quản lý. Cuối cùng, yêu cầu được chuyển trở lại qua IIS để gửi phản hồi.
Sự tách biệt giữa các mô hình xử lý yêu cầu IIS và ASP.NET này dẫn đến sự trùng lặp của một số bước xử lý, chẳng hạn như xác thực và ủy quyền. Ngoài ra, các tính năng mã được quản lý, chẳng hạn như xác thực mẫu, chỉ khả dụng cho các ứng dụng hoặc ứng dụng ASP.NET mà bạn có tập lệnh ánh xạ tất cả các yêu cầu được xử lý bởi aspnet_isapi.dll.
Hãy chắc chắn kiểm tra các ứng dụng hiện có của bạn để biết tính tương thích trong chế độ Tích hợp trước khi nâng cấp môi trường sản xuất lên IIS 7.0 và gán ứng dụng cho nhóm ứng dụng ở chế độ Tích hợp. Bạn chỉ nên thêm một ứng dụng vào nhóm ứng dụng ở chế độ Cổ điển nếu ứng dụng không hoạt động ở chế độ Tích hợp. Ví dụ: ứng dụng của bạn có thể dựa vào mã thông báo xác thực được truyền từ IIS sang thời gian chạy được quản lý và do kiến trúc mới trong IIS 7.0, quy trình phá vỡ ứng dụng của bạn.
Lấy từ: Sự khác biệt giữa DefaultAppPool và Classic .NET AppPool trong IIS7 là gì?
Nguồn gốc: Giới thiệu về Kiến trúc IIS
IIS 6.0 và các phiên bản trước:
ASP.NET được tích hợp với IIS thông qua tiện ích mở rộng ISAPI, API C (API dựa trên ngôn ngữ lập trình C) và hiển thị mô hình xử lý yêu cầu và ứng dụng của chính nó.
Điều này tiếp xúc hiệu quả với hai đường ống máy chủ (yêu cầu / phản hồi) riêng biệt, một cho các bộ lọc ISAPI và các thành phần mở rộng, và một cho các thành phần ứng dụng được quản lý. Các thành phần ASP.NET sẽ thực thi hoàn toàn bên trong bong bóng mở rộng ASP.NET ISAPI VÀ CHỈ cho các yêu cầu được ánh xạ tới ASP.NET trong cấu hình bản đồ tập lệnh IIS.
Yêu cầu các loại nội dung không phải ASP.NET: - hình ảnh, tệp văn bản, trang HTML và trang ASP không có tập lệnh, được xử lý bởi IIS hoặc các phần mở rộng ISAPI khác và KHÔNG hiển thị với ASP.NET.
Hạn chế chính của mô hình này là các dịch vụ được cung cấp bởi các mô-đun ASP.NET và mã ứng dụng ASP.NET tùy chỉnh KHÔNG có sẵn cho các yêu cầu không phải ASP.NET
BẢN ĐỒ SCRIPT là gì?
Bản đồ tập lệnh được sử dụng để liên kết các phần mở rộng tệp với trình xử lý ISAPI thực thi khi loại tệp đó được yêu cầu. Bản đồ tập lệnh cũng có một cài đặt tùy chọn xác minh rằng tệp vật lý được liên kết với yêu cầu tồn tại trước khi cho phép yêu cầu được xử lý
Một ví dụ tốt có thể là seen here
IIS 7 trở lên
IIS 7.0 trở lên đã được thiết kế lại từ đầu để cung cấp ISAPI dựa trên API C ++ hoàn toàn mới.
IIS 7.0 trở lên tích hợp thời gian chạy ASP.NET với chức năng cốt lõi của Máy chủ Web, cung cấp một đường dẫn xử lý yêu cầu thống nhất (đơn) được tiếp xúc với cả các thành phần gốc và được quản lý được gọi là mô-đun (IHttpModules)
Điều này có nghĩa là IIS 7 xử lý các yêu cầu đến bất kỳ loại nội dung nào, với cả hai NON ASP.NET Modules / native IIS modules
và ASP.NET modules
cung cấp xử lý yêu cầu trong tất cả các giai đoạn Đây là lý do tại sao các loại nội dung NON ASP.NET (.html, tệp tĩnh) có thể được xử lý bởi các mô-đun .NET .
IHttpModule
) có khả năng thực thi cho tất cả nội dung ứng dụng và cung cấp một bộ dịch vụ xử lý yêu cầu nâng cao cho ứng dụng của bạn.IHttpHandler
)Trong chế độ cổ điển, IIS hoạt động với các phần mở rộng ISAPI và bộ lọc ISAPI trực tiếp. Và sử dụng hai dòng ống, một cho mã gốc và một cho mã được quản lý. Bạn có thể chỉ cần nói rằng trong chế độ Cổ điển IIS 7.x hoạt động giống như IIS 6 và bạn không nhận được thêm lợi ích từ các tính năng của IIS 7.x.
Trong chế độ tích hợp IIS và ASP.Net được kết hợp chặt chẽ thay vào đó chỉ phụ thuộc vào hai DLL trên Asp.net như trong trường hợp chế độ cổ điển.