Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 2833|Răspunde: 1

[.NET Core] .NET/C# implementează actualizări calde ale pluginurilor DLL bazate pe AssemblyLoadContext

[Copiază linkul]
Postat la 28-06-2024 14:28:33 | | | |
Cerințe: Logica de business este complexă și necesită personalizare, iar pentru o astfel de logică, într-un ansamblu DLL separat, fundalul poate actualiza dinamic asamblarea și executa cea mai recentă logică.

.NET Core nu suportă crearea și descărcarea dinamică a AppDomain-urilor, așa cum este .NET Framework, așa că nu a existat niciodată o metodă bună de a încărca plugin-uri hotload, dar vestea bună este că .NET Core suportă Collectible Assembly încă din versiunea 3.0 și putem crea un AssemblyLoadContext recuperabil pe care îl putem folosi pentru a încărca și descărca asamblări.

Clasa AssemblyLoadContext:Autentificarea cu hyperlink este vizibilă.

În primul rând, creează o nouă consolă și trei biblioteci, și anume:ConsoleApp6ClassLibraryStandardBibliotecăClase1ClassLibrary2, printre care bibliotecile ClassLibrary1 și ClassLibrary2 moștenesc interfața IWorker din ClassLibraryStandard și implementează metoda Run.

Cod standard ClassLibrary:

Codul ClassLibrary1:

Cod ClassLibrary2:

Codul consolei ConsoleApp6 este următorul:

Consola deschide metoda Run a celor 3 fire de execuție din pluginul DLL care rulează dinamic constant, folosește log4net pentru a înregistra rezultatele de ieșire, apoi o rulează în consolăÎnlocuiește DLL-ul cu cea mai recentă bibliotecă după 3 secunde

După rularea consolei timp de 1 secundă sau 5 secunde, colectarea instanței curente AssemblyLoadContext este ieșită, adică biblioteca DLL încărcată.

Așa cum se arată mai jos:



Poți vedea că programul nu are nicio ieșire anormală și nu există nicio situație în care pluginul să nu poată fi găsit în timpul procesului de execuție. Motivul pentru care log4net înregistrează rezultatele execuției este că consola este blocată, iar pentru a asigura că cele 3 fire pot rula continuu, log4net este folosit pentru a înregistra rezultatele execuției, așa cum se arată în figura de mai jos:



2024-06-28 14:24:36,606 INFO 11 Fișier rulant - 1
2024-06-28 14:24:36,606 INFO 10 Fișier rulant - Începe dezinstalarea
2024-06-28 14:24:36,606 INFO 13 Fișier rulant - 1
2024-06-28 14:24:36,606 INFO 13 Fișier rulant - 1
2024-06-28 14:24:36,606 INFO 13 Fișier rulant - 1
2024-06-28 14:24:36,606 INFO 11 Fișier rulant - 1
2024-06-28 14:24:36,606 INFO 11 Fișier rulant - 1
2024-06-28 14:24:36,606 INFO 13 Fișier rulant - 1
2024-06-28 14:24:36,606 INFO 13 Fișier rulant - 1
2024-06-28 14:24:36,606 INFO 13 Fișier rulant - 1
2024-06-28 14:24:36,606 INFO 10 Fișier rulant - AssemblyLoadContext_Unloading
2024-06-28 14:24:36,606 INFO 13 Fișier rulant - 1
2024-06-28 14:24:36,606 INFO 13 Fișier rulant - 1
...
2024-06-28 14:24:36,607 INFO 12 Fișier rulant - 1
2024-06-28 14:24:36,607 INFORMAȚII 13 Fișier rulant - 1
2024-06-28 14:24:36,607 INFO 12 Fișier rulant - 1
2024-06-28 14:24:36,606 INFO 10 Fișier rulant - Dezinstalare completă
2024-06-28 14:24:36,607 INFO 12 Fișier rulant - 1
2024-06-28 14:24:36,607 INFO 12 Fișier rulant - 1
...
2024-06-28 14:24:36,607 INFO 12 Fișier rulant - 1
2024-06-28 14:24:36,607 INFORMAȚII 13 Fișier rulant - 1
2024-06-28 14:24:36,607 INFO 12 Fișier rulant - 1
2024-06-28 14:24:36,607 INFORMAȚII 13 Fișier rulant - 1
2024-06-28 14:24:36,607 INFO 12 Fișier rulant - 1
2024-06-28 14:24:36,606 INFO 11 Fișier rulant - 1
2024-06-28 14:24:36,607 INFO 13 Fișier rulant - 2
2024-06-28 14:24:36,607 INFO 12 Fișier rulant - 2

Configurația config.xml atașată:

(Sfârșit)




Precedent:Despre nivelul de toleranță la erorile codurilor QR QR
Următor:.NET/C# folosește PDFsharp pentru a uni mai multe fișiere PDF într-unul singur
 Proprietarul| Postat la 2024-7-6 16:59:30 |
Folosește Roslyn pentru a compila dinamic codul C# și a-l rula
https://www.itsvse.com/thread-10786-1-1.html
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com