Hồ bơi ứng dụng IIS chạy một quy trình công nhân duy nhất (theo mặc định). Trong quy trình công nhân đó, một AppDomain
được tạo cho mỗi ứng dụng IIS (trang web). Theo như tôi biết, bất kỳ mã thực hiện trong ứng dụng IIS sẽ chạy trong cùng một AppDomain
(trừ khi tất nhiên bạn đang tạo tên miền ứng dụng con của riêng bạn trong mã chính mình). Bạn có thể điều chỉnh số lượng quy trình công nhân trên mỗi trang web, nhưng thực tế chỉ thực hiện việc này nếu bạn thấy mình gặp sự cố về hiệu suất (không thể giải quyết bằng cách tách biệt các nhóm ứng dụng). Nếu bạn chạy nhiều miền ứng dụng trên mỗi trang web, mã chạy trong các miền ứng dụng riêng biệt đó không thể chia sẻ trạng thái (ví dụ: phiên InProc) và chỉ có thể giao tiếp thông qua tuần tự hóa - không phải lý tưởng.
Liên quan đến ASP.NET và WCF; khi được lưu trữ trong IIS, mặc định chạy trong chế độ side-by-side, trong cùng một AppDomain
, điều này cho phép họ chia sẻ trạng thái, nhưng yêu cầu WCF không được xử lý bởi thời gian chạy ASP.NET, thay vào đó các cuộc gọi đến các dịch vụ WCF bị chặn và xử lý bởi thời gian chạy WCF. (Mặc dù các cuộc gọi đến .svc
tệp vẫn được định tuyến thông qua ASP.NET ban đầu). Trong chế độ side-by-side, các cuộc gọi WCF không tuân theo cấu hình, bảo mật, mạo danh, vv mà bạn có thể đã cấu hình cho trang web ASP.NET của bạn.
WCF trên IIS cũng có thể chạy trong chế độ tương thích ASP.NET, trong đó việc triển khai WCF được quản lý bởi trình xử lý http và do đó được xử lý bởi đường dẫn ASP.NET. Nếu bạn sẽ xem xét rằng các dịch vụ của bạn chỉ cần hỗ trợ HTTP, bạn có thể xem xét việc lưu trữ dịch vụ trong chế độ tương thích để có quyền truy cập vào sức mạnh và tính linh hoạt của đường dẫn ASP.NET.
Về chế độ đường ống Tích hợp và Cổ điển, trong chế độ Tích hợp, ASP.NET được điều hành bởi w3wp.exe
như một phần tích hợp của đường ống xử lý IIS. Điều này có nghĩa là mọi thứ sử dụng trình xử lý tùy chỉnh, v.v., bạn có thể đã cắm vào đường ống (ngay cả khi cung cấp nội dung non -ASP.NET, ví dụ: PHP), sẽ được tải và thực hiện trong cùng một AppDomain
.
Ở chế độ Cổ điển, ASP.NET được chạy trong quy trình công nhân chủ sở hữu, aspnet_wp.exe
và được kết nối với đường dẫn xử lý IIS dưới dạng bộ lọc ISAPI. Tôi tin rằng cùng một cơ chế xung quanh việc sử dụng AppDomain
cũng áp dụng ở đây.
Nguồn
2011-08-29 14:17:30
Dịch vụ web của WCF hoặc ASP .NET? – Jeff