2009-04-22 26 views
9

Có một AppDomain cho mọi chương trình C# ngay cả khi chúng tôi không cụ thể tạo một AppDomain? Tại sao nó được yêu cầu? Tôi đã đọc về hội đồng bên thứ ba bị rơi toàn bộ ứng dụng nếu chúng tôi không tải chúng vào AppDomain riêng biệt. Tôi đã không nhận được điểm đó tốt. Bất cứ ai cũng có thể giải thích điều này.Có một AppDomain cho mọi chương trình C# không?

Trả lời

15

AppDomain giống như một quy trình, đó là cơ sở hạ tầng mà ứng dụng của bạn chạy. Một assembly .NET cần được tải trong một AppDomain để chạy. Nó không cần thiết để tải các cụm của bên thứ ba vào riêng biệt AppDomains, nhưng nếu bạn làm, nó cung cấp sự cách ly giữa chúng (như hai quy trình riêng biệt) và sự cố trong một sẽ không ảnh hưởng đến nhau. Miền ứng dụng có thể được tải xuống độc lập.

Ví dụ, SQL Server sử dụng AppDomain s để tải cụm CLR một cách an toàn trong quá trình của nó.

2

Mọi ứng dụng đều có ít nhất một miền ứng dụng, vâng.

Tôi không biết lưu ý về hội đồng bên thứ 3 có nghĩa là gì.

1

có ít nhất một tên miền ứng dụng cho mọi chương trình bạn có thể tạo bao nhiêu tùy thích nhưng bạn hiếm khi cần nhiều hơn một.

Về cơ bản, vùng chứa nơi mã đang chạy với một ủy thác cụ thể đang chạy.

1

Có miền ứng dụng mặc định nơi ứng dụng của bạn được tải vào (mọi trường hợp đều được tải xuống riêng).

Điều tai nạn nghĩa là lắp ráp bên thứ ba (tức là một plugin) sẽ làm hỏng toàn bộ ứng dụng của bạn khi nó bị treo nếu bạn không tải nó vào miền ứng dụng riêng biệt. Do đó, thực tiễn tốt là tải các plugin vào miền ứng dụng riêng biệt, vì sự cố trong miền ứng dụng sẽ chỉ làm hỏng miền ứng dụng đó chứ không phải các tên miền khác. CLR Add-In blog có một số bài viết về điều này.

Điều quan trọng cần lưu ý là miền ứng dụng không nhất thiết phải ở trong cùng một quá trình hoặc trên cùng một hệ thống, do đó, về cơ bản bạn cần nó để truy cập từ xa.

3

Tôi đã đọc về lắp ráp bên thứ 3 gây tai nạn nếu chúng ta không tận dụng AppDomain

Tôi nghĩ rằng bạn đang nói về nạp hội khác để lĩnh vực ứng dụng riêng biệt. Bằng cách đó, họ có thể bị cô lập khỏi không gian địa chỉ của bạn để ngăn chặn sự cố trong mã của họ ảnh hưởng đến bạn. Chi phí là giao tiếp với một hội đồng trong một miền ứng dụng riêng biệt là khó khăn hơn và có một hình phạt perf như tất cả các cuộc gọi cần phải được võ trên ranh giới miền ứng dụng.

Đây là chủ đề khá nâng cao, tôi khuyên bạn nên đọc trong số Richter (các sách khác có thể sử dụng được).

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