See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 2833|Vastuse: 1

[.NET tuum] .NET/C# rakendab DLL plugina kuumi uuendusi AssemblyLoadContext põhjal

[Kopeeri link]
Postitatud 2024-6-28 14:28:33 | | | |
Nõuded: Äriloogika on keerukas ja vajab kohandamist ning sellise loogika puhul saab eraldi DLL assamblees taust dünaamiliselt uuendada kokkupanekut ja käivitada uusimat loogikat.

.NET Core ei toeta dünaamilist AppDomainide loomist ja mahalaadimist nagu .NET Framework, seega pole kunagi olnud head viisi pluginate hotloadmiseks, kuid hea uudis on see, et .NET Core toetab Collectible Assembly't alates versioonist 3.0 ning me saame luua taaskasutatava AssemblyLoadContexti, mida saame kasutada assembleride laadimiseks ja mahalaadimiseks.

AssemblyLoadContext klass:Hüperlingi sisselogimine on nähtav.

Esiteks loo uus konsool ja kolm teeki, nimelt:ConsoleApp6ClassLibraryStandardClassLibrary1ClassLibrary2, millest ClassLibrary1 ja ClassLibrary2 teegid pärivad IWorkeri liidese ClassLibraryStandardis ja rakendavad Run meetodit.

ClassLibraryStandardkood:

ClassLibrary1 kood:

ClassLibrary2 kood:

ConsoleApp6 konsoolikood on järgmine:

Konsool avab DLL pluginas 3 lõime Run meetodi, mis töötab pidevalt dünaamiliselt ja salvestab väljundtulemused log4net-i ning käivitab selle konsoolisAsenda DLL viimase teegiga 3 sekundi pärast

Pärast konsooli käivitamist 1 sekundit või 5 sekundit väljastatakse praeguse AssemblyLoadContext instantsi kogum, mis on laaditud DLL-teek.

Nagu allpool näidatud:



Näete, et programmil ei ole ebanormaalset väljundit ja pole olukord, kus pluginat ei leiaks täitmisprotsessi ajal. Põhjus, miks log4net salvestab täitmise tulemusi, on see, et konsool on blokeeritud, ning selleks, et kolm lõime saaksid pidevalt töötada, kasutatakse log4net-i täitmistulemuste salvestamiseks, nagu alloleval joonisel näidatud:



2024-06-28 14:24:36,606 INFO 11 RollingFile - 1
2024-06-28 14:24:36,606 INFO 10 RollingFile - Alusta desinstallimist
2024-06-28 14:24:36,606 INFO 13 RollingFile - 1
2024-06-28 14:24:36,606 INFO 13 RollingFile - 1
2024-06-28 14:24:36,606 INFO 13 RollingFile - 1
2024-06-28 14:24:36,606 INFO 11 RollingFile - 1
2024-06-28 14:24:36,606 INFO 11 RollingFile - 1
2024-06-28 14:24:36,606 INFO 13 RollingFile - 1
2024-06-28 14:24:36,606 INFO 13 RollingFile - 1
2024-06-28 14:24:36,606 INFO 13 RollingFile - 1
2024-06-28 14:24:36,606 INFO 10 RollingFile - AssemblyLoadContext_Unloading
2024-06-28 14:24:36,606 INFO 13 RollingFile - 1
2024-06-28 14:24:36,606 INFO 13 RollingFile - 1
...
2024-06-28 14:24:36,607 INFO 12 RollingFile - 1
2024-06-28 14:24:36,607 INFO 13 RollingFile - 1
2024-06-28 14:24:36,607 INFO 12 RollingFile - 1
2024-06-28 14:24:36,606 INFO 10 RollingFile - Desinstallimine lõpetatud
2024-06-28 14:24:36,607 INFO 12 RollingFile - 1
2024-06-28 14:24:36,607 INFO 12 RollingFile - 1
...
2024-06-28 14:24:36,607 INFO 12 RollingFile - 1
2024-06-28 14:24:36,607 INFO 13 RollingFile - 1
2024-06-28 14:24:36,607 INFO 12 RollingFile - 1
2024-06-28 14:24:36,607 INFO 13 RollingFile - 1
2024-06-28 14:24:36,607 INFO 12 RollingFile - 1
2024-06-28 14:24:36,606 INFO 11 RollingFile - 1
2024-06-28 14:24:36,607 INFO 13 RollingFile - 2
2024-06-28 14:24:36,607 INFO 12 RollingFile - 2

Kinnitatud config.xml konfiguratsioon:

(Lõpp)




Eelmine:QRCODE QR-koodi rikketaluvuse kohta
Järgmine:.NET/C# kasutab PDFsharpi, et ühendada mitu PDF-faili üheks
 Üürileandja| Postitatud 2024-7-6 16:59:30 |
Kasuta Roslyni, et dünaamiliselt kompileerida C# koodi ja käivitada
https://www.itsvse.com/thread-10786-1-1.html
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com