Câu trả lời của JaredPar là tốt, ngoại trừ anh ta không lưu ý raison d'etre cho AppDomains - đó là bạn chỉ có thể UNLOAD một Assembly bằng cách dỡ bỏ AppDomain của nó. Nếu bạn là một quá trình hệ điều hành dài, và bạn mong đợi phải tải và sau đó dỡ bỏ hội đồng vì bất kỳ lý do gì thì bạn cần có một AppDomain. Ví dụ nguyên mẫu ở đây là ASP.NET, tải các gói mã ứng dụng theo yêu cầu và sau đó có thể giải nén chúng sau này, khi các ứng dụng không còn được sử dụng tích cực nữa.
Chi phí bạn trả cho khả năng tải là độc lập - bạn cần giao tiếp qua ranh giới AppDomain, Không thể thực hiện cuộc gọi phương thức đơn giản. Bạn cần quản lý vòng đời AppDomain. Vv
Nếu bạn chỉ cần để tự động tải Assemblies và không nghĩ rằng bạn sẽ cần phải dỡ bỏ chúng trong cuộc đời của một quá trình duy nhất thì có thể bạn không cần phải chạy nhiều AppDomains. Một ví dụ điển hình ở đây có thể là một ứng dụng phong phú hỗ trợ một mô hình trình cắm thêm, nơi nó tìm ra các hội đồng trình cắm thêm trong thư mục "v.v" và tải chúng lên. Tuy nhiên, nếu mô hình trình cắm thêm yêu cầu dỡ tải các trình cắm thêm ... tốt.
Có các trường hợp ngoại lệ. Giống như, giả sử bạn muốn tải 2 phiên bản khác nhau của một hội đồng cùng một lúc. Bạn có thể gặp phải những cạm bẫy nếu bạn không tách biệt chúng với AppDomains. Nhưng điều đó sẽ khá hiếm.
Kịch bản cốt lõi để biện minh cho sự tồn tại của AppDomains là quá trình chạy dài mà phải có khả năng dỡ bỏ các hội đồng.
Tất nhiên, các ứng dụng có thể dựa vào quy trình của hệ điều hành khi bạn muốn dỡ một hội đồng. Nói cách khác, bạn có thể có 3 hoặc 4 quá trình hợp tác đang chạy, mỗi tiến trình có tập hợp Assemblies của riêng nó và khi bạn muốn dỡ bỏ một assembly, chỉ cần tắt quá trình lưu trữ assembly đó. Nhưng AppDomain cung cấp một cơ chế cao cấp hơn để làm điều đó, mà không yêu cầu quá trình dừng/bắt đầu hoặc xử lý chéo, mà vẫn còn nặng hơn so với cross-AppDomain comms được mô tả trước đây. Tôi có nghĩa là nó vẫn còn remoting nhưng nó là chậm hơn và bối cảnh nhiều hơn chuyển đổi.
Mối quan tâm chính là tôi không hiểu các capabilties tôi nhận được bằng cách sử dụng chúng. Tôi đọc rằng họ là một quá trình nhẹ nhưng họ dường như mang theo nhiều hơn chỉ và tôi có thể thiếu một cái gì đó mà có thể cắn tôi sau này. IE Tôi đang lấy ra nhiều hơn tôi cần. –