2010-04-17 48 views
24

Hồ bơi ứng dụng được triển khai như thế nào trong IIS?Ứng dụng Pool trong IIS và Asp.Net là gì?

  1. Mỗi hồ bơi ứng dụng có tương đương với một .Net AppDomain không?
  2. Hoặc nó tương đương với quy trình .Net?
  3. Hồ bơi ứng dụng liên quan đến IIS w3wp.exe như thế nào?

Trả lời

25

1. Mỗi hồ bơi ứng dụng có tương đương với một .Net AppDomain không?

Không, một nhóm ứng dụng có thể có một số AppDomain. Mỗi AppDomain đại diện cho một ứng dụng ASP.NET đang chạy. Nhiều ứng dụng ASP.NET có thể thuộc về một Application Pool duy nhất.

2. Hoặc nó tương đương với quy trình .Net?

Không hoàn toàn. Xem bên dưới.

3. Làm thế nào là hồ bơi ứng dụng liên quan đến IIS w3wp.exe?

Hồ bơi ứng dụng đại diện cho một số quy trình công nhân có giới hạn có thể lưu trữ số lượng ứng dụng lớn hơn. Điều này tương tự như cách một kết nối SQL Pool chia sẻ một số lượng giới hạn các kết nối giữa một số lượng yêu cầu tùy ý.

Theo mặc định, Hồ bơi ứng dụng nhận được một quy trình làm việc (w3wp.exe) và tốt nhất là nên để riêng cài đặt này trừ khi bạn biết mình đang làm gì. Tuy nhiên, một hồ bơi ứng dụng có thể được cấu hình để sử dụng bất kỳ số lượng các quy trình.

Quy trình công nhân thực sự là tài nguyên được gộp vào đây, chứ không phải AppDomain. Sẽ luôn có cùng số lượng AppDomains vì có các ứng dụng ASP.NET (trừ khi một ứng dụng đang ở giữa việc tắt hoặc một ứng dụng tạo ra các AppDomain riêng của nó), nhưng số lượng các Processer của Worker là độc lập; một Application Pool cung cấp cho bạn một số quy trình công việc cụ thể để xử lý các yêu cầu cho một số lượng cụ thể của AppDomains.

Cài đặt 1 (mặc định) cho số lượng quy trình công nhân trong App Pool có nghĩa là tất cả Applications/AppDomains trong nhóm dùng chung một quy trình công nhân.

5

Đó là một sự đơn giản để nói theo cách này nhưng cách tốt nhất để suy nghĩ về nó là AppPool là một nhóm AppDomains. Tất cả các AppDomain này chạy trong một quy trình công nhân đơn lẻ (w3wp.exe).

+0

Cảm ơn Andrew. Bạn cũng có thể thêm, khi nào hồ bơi ứng dụng được tạo? làm thế nào để giúp đưa ứng dụng web của bạn dưới một hồ bơi? – shahkalpesh

+0

@shahkalpesh: trong IIS6 + Tôi không nghĩ rằng có thể có một ứng dụng không có trong một nhóm ứng dụng. Bạn cũng có thể thấy liên kết này hữu ích (http://weblogs.asp.net/owscott/archive/2007/09/02/application-vs-appdomain.aspx) – R0MANARMY

1

Tôi biết đây là một bài cũ, nhưng tôi nghĩ rằng đây là một giọng tốt:

1 Application Pool (IIS) = 1 Yêu cầu Queue (trong http.sys) + 1 hoặc nhiều trường hợp của w3wp.exe .

2

Một điều quan trọng khác cần đề cập là Application Security.

Trong các phiên bản trước của IIS, quy trình công nhân chạy là LocalSystem, một tài khoản mạnh có quyền quản trị hệ thống trên máy chủ.Vì LocalSystem có quyền truy cập vào hầu hết các tài nguyên trên hệ điều hành, điều này đã gây ra các tác động bảo mật. Trong IIS 6.0 (Hồ bơi ứng dụng được giới thiệu), người ta có thể đặt danh tính của quy trình công nhân ở cấp độ hồ bơi của ứng dụng. Danh tính của một hồ bơi ứng dụng là tài khoản mà theo đó quy trình công nhân của nhóm ứng dụng chạy. Theo mặc định, các hồ bơi ứng dụng hoạt động theo tài khoản NetworkService, có quyền truy cập người dùng cấp thấp.

Bằng cách chạy quy trình công nhân bằng tài khoản rất có đặc quyền thấp như NetworkService, người dùng có thể giảm lỗ hổng bảo mật. Tuy nhiên, bằng cách sử dụng quản lý IIS, nó có thể configure hồ bơi ứng dụng chạy như bất kỳ của các tài khoản được xác định trước sau:

NetworkService 
LocalSystem 
LocalService 
Các vấn đề liên quan