Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 2833|Atbildi: 1

[.NET kodols] .NET/C# ievieš DLL spraudņa karstos atjauninājumus, kuru pamatā ir AssemblyLoadContext

[Kopēt saiti]
Publicēts 2024-6-28 14:28:33 | | | |
Prasības: Biznesa loģika ir sarežģīta un prasa pielāgošanu, un šādai loģikai atsevišķā DLL montāžā fons var dinamiski atjaunināt montāžu un izpildīt jaunāko loģiku.

.NET Core neatbalsta dinamisku AppDomains, piemēram, .NET Framework, izveidi un izlādi, tāpēc nekad nav bijis labs veids, kā karsti ielādēt spraudņus, taču labā ziņa ir tā, ka .NET Core ir atbalstījis Collectible Assembly kopš 3.0, un mēs varam izveidot atgūstamu AssemblyLoadContext, ko varam izmantot, lai ielādētu un izlādētu asamblejas.

AssemblyLoadContext klase:Hipersaites pieteikšanās ir redzama.

Vispirms izveidojiet jaunu konsoli un trīs bibliotēkas, proti:KonsoleApp6ClassLibraryStandardKlases bibliotēka1Klases bibliotēka2, tostarp ClassLibrary1 un ClassLibrary2 bibliotēkas pārmanto IWorker interfeisu ClassLibraryStandard un ievieš Run metodi.

ClassLibraryStandard kods:

ClassLibrary1 kods:

ClassLibrary2 kods:

ConsoleApp6 konsoles kods ir šāds:

Konsole atver 3 pavedienu palaišanas metodi DLL spraudnī, kas pastāvīgi dinamiski izpilda, un izmanto log4net, lai ierakstītu izejas rezultātus, un pēc tam palaiž to konsolēPēc 3 sekundēm nomainiet DLL ar jaunāko bibliotēku

Pēc konsoles palaišanas 1 sekundi vai 5 sekundes tiek izvadīta pašreizējās AssemblyLoadContext instances kolekcija, kas ir ielādētā DLL bibliotēka.

Kā parādīts zemāk:



Jūs varat redzēt, ka programmai nav neparastas izvades, un nav situācijas, kad spraudni nevar atrast izpildes procesā. Iemesls, kāpēc log4net ieraksta izpildes rezultātus, ir tāpēc, ka konsole ir bloķēta, un, lai nodrošinātu, ka 3 pavedieni var tikt izpildīti nepārtraukti, log4net tiek izmantots, lai reģistrētu izpildes rezultātus, kā parādīts zemāk redzamajā attēlā:



2024-06-28 14:24:36,606 INFO 11 RollingFile - 1
2024-06-28 14:24:36,606 INFO 10 RollingFile - Sākt atinstalēšanu
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 - atinstalēšana pabeigta
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

Pievienotā config.xml konfigurācija:

(Beigas)




Iepriekšējo:Par QRCODE QR koda kļūdu tolerances līmeni
Nākamo:.NET/C# izmanto PDFsharp, lai apvienotu vairākus PDF failus vienā
 Saimnieks| Publicēts 2024-7-6 16:59:30 |
Roslyn izmantošana, lai dinamiski kompilētu C# kodu un palaistu to
https://www.itsvse.com/thread-10786-1-1.html
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com