Ho un processo che può avere più AppDomain. Ogni AppDomain raccoglie alcune statistiche. Dopo un periodo di tempo specificato, voglio accumulare queste statistiche e salvarle in un file.Condivisione di dati tra AppDomains
Un modo per fare ciò è Remoting, che voglio evitare.
L'unica altra tecnica che ho in mente è quella di salvare i dati di ogni AppDomain in un file, e dopo un tempo specifico, uno degli AppDomain raccoglie tutti i dati e li accumula.
Ma sarebbe ideale se tutto questo potesse essere fatto in memoria, senza il costo di serializzare le informazioni da passare tra AppDomains. Qualcuno ha qualche idea?
Non ho ancora scritto il codice. Sto solo lavorando sul design. Puoi dirmi di un articolo che spiega la condivisione dei dati utilizzando il primo approccio che hai postato? – ata
Anche il marshalling per riferimento serializzerà i dati, ma in piccoli pezzi. Ogni chiamata al metodo restituirà un po 'di informazioni serializzando efficacemente un po' dei dati. Questa è probabilmente una buona idea se richiedi solo una piccola parte dei dati. Ma se devi elaborare (quasi) l'intero dato, ottenendolo a poco a poco con molte chiamate cross domain sarà incredibilmente lento rispetto alla serializzazione e al trasferimento dei dati in una sola volta. –
Se segui questa strada, non dimenticare di sovrascrivere il metodo InitializeLifetimeService; questo mi stava facendo impazzire pochi giorni fa ("Oggetto" ... "è stato disconnesso o non esiste sul server.") –