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:KonsoleApp6、ClassLibraryStandard、Klases bibliotēka1、Klases 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)
|