Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 2833|Risposta: 1

[.NET Core] .NET/C# implementa aggiornamenti caldi dei plugin DLL basati su AssemblyLoadContext

[Copiato link]
Pubblicato il 28-06-2024 alle 14:28:33 | | | |
Requisiti: La logica di business è complessa e richiede personalizzazione, e per tale logica, in un assembly DLL separato, lo sfondo può aggiornare dinamicamente l'assembly ed eseguire la logica più recente.

.NET Core non supporta la creazione e lo scarico dinamico di AppDomain come il .NET Framework, quindi non c'è mai stato un buon modo per caricare plug, ma la buona notizia è che .NET Core supporta Collectible Assembly dalla versione 3.0, e possiamo creare un AssemblyLoadContext recuperabile che possiamo usare per caricare e scaricare assemblaggi.

Classe AssemblyLoadContext:Il login del link ipertestuale è visibile.

Per prima cosa, crea una nuova console e tre librerie, ovvero:ConsoleApp6ClassLibraryStandardBibliotecaClasse1BibliotecaClasse2, tra cui le librerie ClassLibrary1 e ClassLibrary2 ereditano l'interfaccia IWorker in ClassLibraryStandard e implementano il metodo Run.

Codice standard di ClassLibrary:

Codice ClassLibrary1:

Codice ClassLibrary2:

Il codice console di ConsoleApp6 è il seguente:

La console apre il metodo Run di 3 thread nel plugin DLL che viene costantemente in esecuzione dinamica, usa log4net per registrare i risultati di output e poi lo esegue nella consoleSostituisci la DLL con l'ultima libreria dopo 3 secondi

Dopo aver eseguito la console per 1 secondo o 5 secondi, viene prodotta la raccolta dell'istanza corrente di AssemblyLoadContext, che è la libreria DLL caricata.

Come mostrato di seguito:



Puoi vedere che il programma non ha alcun output anomalo e non c'è alcuna situazione in cui il plugin non possa essere trovato durante il processo di esecuzione. Il motivo per cui log4net registra i risultati dell'esecuzione è che la console è bloccata e, per garantire che i 3 thread possano essere eseguiti continuamente, log4net viene utilizzato per registrare i risultati dell'esecuzione, come mostrato nella figura sottostante:



2024-06-28 14:24:36,606 INFO 11 File Mobili - 1
2024-06-28 14:24:36,606 INFO 10 Rolling File - Inizia a disinstallare
2024-06-28 14:24:36,606 INFO 13 File Rolling - 1
2024-06-28 14:24:36,606 INFO 13 File Rolling - 1
2024-06-28 14:24:36,606 INFO 13 File Rolling - 1
2024-06-28 14:24:36,606 INFO 11 File Mobili - 1
2024-06-28 14:24:36,606 INFO 11 File Mobili - 1
2024-06-28 14:24:36,606 INFO 13 File Rolling - 1
2024-06-28 14:24:36,606 INFO 13 File Rolling - 1
2024-06-28 14:24:36,606 INFO 13 File Rolling - 1
2024-06-28 14:24:36,606 INFO 10 Rolling File - AssemblyLoadContext_Unloading
2024-06-28 14:24:36,606 INFO 13 File Rolling - 1
2024-06-28 14:24:36,606 INFO 13 File Rolling - 1
...
2024-06-28 14:24:36,607 INFO 12 File Rolling - 1
2024-06-28 14:24:36,607 INFO 13 File mobile - 1
2024-06-28 14:24:36,607 INFO 12 File Rolling - 1
2024-06-28 14:24:36,606 INFO 10 File in rotazione - Disinstallazione completata
2024-06-28 14:24:36,607 INFO 12 File Rolling - 1
2024-06-28 14:24:36,607 INFO 12 File Rolling - 1
...
2024-06-28 14:24:36,607 INFO 12 File Rolling - 1
2024-06-28 14:24:36,607 INFO 13 File mobile - 1
2024-06-28 14:24:36,607 INFO 12 File Rolling - 1
2024-06-28 14:24:36,607 INFO 13 File mobile - 1
2024-06-28 14:24:36,607 INFO 12 File Rolling - 1
2024-06-28 14:24:36,606 INFO 11 File Mobili - 1
2024-06-28 14:24:36,607 INFO 13 Archivio Rolling - 2
2024-06-28 14:24:36,607 INFO 12 File Mobili - 2

Configurazione config.xml allegata:

(Fine)




Precedente:Informazioni sul livello di tolleranza ai guasti dei codici QR QR
Prossimo:.NET/C# utilizza PDFsharp per unire più file PDF in uno solo
 Padrone di casa| Pubblicato il 6-7-2024 16:59:30 |
Usa Roslyn per compilare dinamicamente codice C# ed eseguirlo
https://www.itsvse.com/thread-10786-1-1.html
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com