Chúng tôi đang xây dựng một ứng dụng .NET nơi chúng tôi tải các assembly mã bên ngoài ("plugins"). Tính đến thời điểm này, chúng tôi đã tải các assembly này vào một miền ứng dụng (chính) duy nhất.Cách xử lý trao đổi dữ liệu miền ứng dụng chéo
Chúng tôi muốn có thể dỡ tải một hội đồng sau khi nó đã được tải.
Để kết thúc này, chúng tôi đang thiết kế một hệ thống sẽ tạo ra một AppDomain phụ riêng biệt để lưu trữ các hội đồng plugin, để được dỡ theo ý muốn.
Những vấn đề chúng tôi có với cách tiếp cận này:
- Plugin DLL sẽ cần phải tương tác với các lớp trong AppDomain chính (logger, ví dụ).
- Dữ liệu được gửi tới dll plugin không nhất thiết phải được đánh dấu là có thể nối tiếp hoặc được lấy từ MarshalByRefObj.
Có thực tiễn phổ biến nào trong việc phân vùng ứng dụng trong các trường hợp như vậy không? Giải pháp tốt nhất chúng ta có thể làm là gì?
Một câu hỏi thú vị khác - tại sao MarshalByRef không đi theo một thuộc tính và buộc chúng tôi lấy được từ một đối tượng?
'Chúng tôi muốn có thể dỡ bỏ một hội đồng sau khi nó đã được tải 'http://stackoverflow.com/questions/6258160/unloading-the-assembly-loaded-with-assembly-loadfrom 1. Để tương tác trên các AppDomain riêng biệt có thể bạn sẽ cần thực hiện thông qua Remoting. 2. là một tuyên bố, bạn có thể chỉnh sửa để làm rõ rằng câu hỏi thứ 2 –