2011-03-31 29 views
46

Khi tôi triển khai trang web của mình, tôi thấy rằng tôi có thể chuyển đổi một thư mục thành một thư mục ảo hoặc ứng dụng web, tôi hoàn toàn nhầm lẫn về 2 khái niệm này.Sự khác nhau giữa Ứng dụng web và Thư mục ảo trong ngữ cảnh của IIS 7.x là gì?

  • Tại sao có hai loại khác nhau?

  • Mục đích của mỗi mục đích là gì?

+2

Bản sao của http://stackoverflow.com/q/1002981/80161 –

+0

Gần đây tôi đã đổi thành Tomcat. Tôi thấy đó là khái niệm ít hơn và mô hình triển khai rõ ràng hơn. – smwikipedia

Trả lời

76

Thư mục ảo hoặc Thư mục ảo chỉ là liên kết đến thư mục vật lý ở đâu đó trên máy chủ. Thư mục này trở thành một phần của cấu trúc trang web và bạn có thể sử dụng thư mục ảo trong phần đường dẫn của URL. Mã thực hiện trong Thư mục ảo sẽ thực hiện trong cùng một "Ứng dụng" như là cha mẹ của nó.

Ứng dụng là nơi mã chạy bên trong "thư mục" đó có trạng thái Phiên và trạng thái Ứng dụng riêng. Nó có hiệu lực là một ứng dụng độc lập mới sống bên dưới ứng dụng gốc. Ví dụ, nếu bạn triển khai một ứng dụng ASP.NET vào một trang web có thư mục Ứng dụng được gọi là /myapp thì ứng dụng đó sẽ có miền ứng dụng riêng, trạng thái phiên, trạng thái ứng dụng hoàn toàn riêng biệt với một ứng dụng ASP.NET khác. chạy trong /. Ví dụ: nếu bạn đặt Giá trị ứng dụng Application["Thing"] = 123 trong ứng dụng gốc và sau đó thực hiện tương tự nhưng với giá trị khác trong /myapp thì Application["Thing"] trong thư mục gốc sẽ không bị ghi đè bởi nhiệm vụ trong /myapp.

Một việc khác bạn có thể làm với Ứng dụng là chỉ định một Hồ bơi ứng dụng khác để chạy dưới. Ví dụ: ứng dụng gốc / của bạn có thể chứa ứng dụng ASP.NET 2.0 và chạy trong một hồ bơi được định cấu hình cho .NET 2.0. Tuy nhiên bạn có thể muốn chạy một ứng dụng blog hoặc diễn đàn được viết bằng ASP.NET 4.0. Bây giờ vì bạn không thể trộn các phiên bản chạy ASP.NET trong cùng một nhóm ứng dụng, bạn có thể chỉ định một nhóm ứng dụng thay thế đặc biệt cho các ứng dụng ASP.NET 4.0.

Ứng dụng cũng có thể hoạt động như Thư mục ảo và bạn có thể trỏ thư mục ứng dụng vào thư mục vật lý ở nơi khác trên máy chủ.

Nếu bạn quan tâm đến cơ chế cơ bản của Virtual Directories và ứng dụng trên IIS7 sau đó có một cái nhìn tại câu trả lời này tôi đã đăng một khi trở lại:

Using ServerManager to create Application within Application

1

Để thêm thông tin chi tiết về những gì Kev đã đề cập rất tốt - Tất cả các thư mục ảo theo mặc định sẽ chạy trong một hồ bơi ứng dụng được xác định trước có tên là DefaultAppPool. DefaultAppPool đi kèm theo mặc định với IIS bất cứ khi nào bạn bật tính năng này trong cửa sổ. Đối với WebApps, bạn luôn có thể tạo các appPool mới/mới và chạy webApp bên trong appPool mới được tạo của bạn. Các appPool này cung cấp cho bạn rằng không gian xử lý vật lý/riêng biệt (dưới dạng các quy trình công nhân) với sự trợ giúp của IIS có thể cung cấp các dịch vụ như trạng thái phiên, trạng thái ứng dụng, vv trong các silo tới một webApp khi nó có appPool riêng được định nghĩa. Bất cứ khi nào ứng dụng webApp của bạn gặp sự cố, các ứng dụng web khác (sử dụng ứng dụng tùy chỉnh của riêng mình) hoặc các thư mục ảo (sử dụng DefaultAppPool appPool) vẫn hoàn toàn không bị ảnh hưởng.

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