Stiamo costruendo un'applicazione .NET in cui vengono caricati assembly di codice esterni ("plug-in"). Fino a questo punto, stavamo caricando questi assembly in un singolo dominio di applicazione (principale).Come gestire lo scambio di dati del dominio cross app
Vorremmo essere in grado di scaricare un assieme dopo che è stato caricato.
A tal fine, stiamo progettando un sistema che creerà un AppDomain secondario separato per ospitare gli assembly del plugin, da scaricare a volontà.
I problemi che abbiamo con questo approccio:
- Il plugin DLL avrà bisogno di interagire con le classi nelle principali AppDomain (logger, per esempio).
- I dati inviati alla dll del plugin non sono necessariamente contrassegnati come serializzabili o derivati da MarshalByRefObj.
Esiste una pratica comune di partizionamento dell'applicazione in questi casi? Qual è la soluzione migliore per cui possiamo andare?
Un'altra domanda interessante: perché MarshalByRef non utilizza un attributo e ci costringe a derivare da un oggetto?
'Ci piacerebbe essere in grado di scaricare un assieme dopo che è stato caricato. Http://stackoverflow.com/questions/6258160/unloading-the-assembly-loaded-with-assembly-loadfrom 1. Per interagire AppDomain separati sarà probabilmente necessario farlo tramite Remoting. 2. è una dichiarazione, potresti modificare per chiarire questa seconda domanda –