2009-12-29 3 views
5

Possiedo un'applicazione server C# long in esecuzione su Linux/mono e ho aggiunto la possibilità di caricare gli assembly DLL in modo immediato per estendere l'applicazione. Ho scoperto l'aggiornamento di questi assembly DLL in fase di esecuzione non può essere fatto senza l'utilizzo di AppDomains, che dall'aspetto di ottenere solo in termini di ciò che ho già fatto. Certo ci saranno soluzioni alternative, ma non è quello che voglio veramente.Tentativo di evitare AppDomains

Il mono fornisce soluzioni alternative che potrei aver perso? C# 4.0 ha qualcosa di nuovo in quest'area?

risposta

0

Ho usato la libreria Mono.CSharp. Puoi compilare il codice C# al volo e posizionare i ganci nella tua applicazione principale per eseguirlo.

1

Invece di caricare un nuovo assembly per modificare il comportamento, avete preso in considerazione la possibilità di suddividere l'applicazione in componenti distinti e di comunicare tra loro tramite un servizio Web o TCP/IP? In questo modo è possibile modificare il comportamento dell'applicazione (in fase di esecuzione) modificando la posizione in cui i componenti chiamano. Ad esempio, è possibile creare un nuovo componente con il nuovo behavior, webservice ad esempio, quindi indicare a tutti i componenti esistenti di utilizzarlo.

Risolverà anche alcuni problemi di memoria con applicazioni a esecuzione prolungata con il tempo di esecuzione mono.

+0

Tutte le tubature del messaggio e le spese generali che portano è quello che sto cercando di evitare. Non ho avuto problemi con la mia app in esecuzione da molto tempo con mono. – FlappySocks