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:ConsoleApp6、ClassLibraryStandard、ClassLibrary1、ClassLibrary2, 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)
|