2011-08-29 20 views
7

Tôi có trang web và dịch vụ web trong cùng một thư mục ảo và một số trang web gọi dịch vụ web.IIS AppDomain instantiation

Khi dịch vụ web được gọi, IIS có tạo một AppDomain mới hay nó chạy dịch vụ web trong cùng một AppDomain không?

Có cài đặt này không? Trên một máy của tôi, nó xuất hiện để tạo một AppDomain mới. Việc thay đổi chế độ pool ứng dụng từ Tích hợp vs Cổ điển có ảnh hưởng đến điều này không?

+0

Dịch vụ web của WCF hoặc ASP .NET? – Jeff

Trả lời

8

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.

Các vấn đề liên quan