Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 2833|Odpoveď: 1

[.NET Core] .NET/C# implementuje horúce aktualizácie DLL pluginov na základe AssemblyLoadContext

[Kopírovať odkaz]
Zverejnené 28.6.2024 o 14:28:33 | | | |
Požiadavky: Obchodná logika je zložitá a vyžaduje prispôsobenie, a pre takúto logiku môže v samostatnej DLL zostave pozadie dynamicky aktualizovať zostavu a vykonávať najnovšiu logiku.

.NET Core nepodporuje dynamické vytváranie a odstraňovanie AppDomainov ako .NET Framework, takže nikdy neexistoval dobrý spôsob, ako hotloadovať pluginy, ale dobrou správou je, že .NET Core podporuje Collectible Assembly od verzie 3.0 a môžeme vytvoriť obnoviteľný AssemblyLoadContext, ktorý môžeme použiť na načítanie a odkladanie assemblelov.

Trieda AssemblyLoadContext:Prihlásenie na hypertextový odkaz je viditeľné.

Najprv vytvorte novú konzolu a tri knižnice, a to:ConsoleApp6ClassLibraryStandardClassLibrary1ClassLibrary2, medzi ktorými knižnice ClassLibrary1 a ClassLibrary2 preberajú rozhranie IWorker v ClassLibraryStandard a implementujú metódu Run.

ClassLibraryStandard kód:

Kód ClassLibrary1:

ClassLibrary2 kód:

Kód konzoly ConsoleApp6 je nasledovný:

Konzola otvára metódu Run s 3 vláknami v DLL plugine, ktorý sa neustále dynamicky vykonáva, a používa log4net na zaznamenanie výstupných výsledkov, potom ju spustí v konzoleNahraďte DLL najnovšou knižnicou po 3 sekundách

Po spustení konzoly na 1 sekundu alebo 5 sekúnd sa vygeneruje kolekcia aktuálnej inštancie AssemblyLoadContext, čo je načítaná knižnica DLL.

Ako je uvedené nižšie:



Vidíte, že program nemá žiadny abnormálny výstup a neexistuje situácia, kde by sa plugin nedal nájsť počas vykonávania. Dôvod, prečo log4net zaznamenáva výsledky vykonávania, je ten, že konzola je zablokovaná, a aby sa zabezpečilo, že 3 vlákna môžu vykonávať nepretržite, log4net sa používa na zaznamenanie výsledkov vykonávania, ako je znázornené na obrázku nižšie:



2024-06-28 14:24:36,606 INFO 11 RollingFile - 1
2024-06-28 14:24:36,606 INFO 10 RollingFile - Začnite odinštalovať
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 - Odinštalovanie dokončené
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

Pripojená config.xml konfigurácia:

(Koniec)




Predchádzajúci:O úrovni odolnosti QRCODE QR kódu
Budúci:.NET/C# používa PDFsharp na zlúčenie viacerých PDF súborov do jedného
 Prenajímateľ| Zverejnené 2024-7-6 o 16:59:30 |
Použite Roslyn na dynamickú kompiláciu C# kódu a jeho spustenie
https://www.itsvse.com/thread-10786-1-1.html
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com