Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 2833|Odpověď: 1

[.NET Core] .NET/C# implementuje horké aktualizace DLL pluginů založené na AssemblyLoadContext

[Kopírovat odkaz]
Zveřejněno 28. 6. 2024 14:28:33 | | | |
Požadavky: Obchodní logika je složitá a vyžaduje úpravy, a pro takovou logiku může pozadí v samostatné DLL sestavě dynamicky aktualizovat sestavu a vykonávat nejnovější logiku.

.NET Core nepodporuje dynamické vytváření a odstraňování AppDomainů jako .NET Framework, takže nikdy neexistoval dobrý způsob, jak hotload pluginy, ale dobrou zprávou je, že .NET Core podporuje Collectible Assembly od verze 3.0 a můžeme vytvořit obnovitelný AssemblyLoadContext, který můžeme použít k načítání a odstraňování assemblerů.

Třída AssemblyLoadContext:Přihlášení k hypertextovému odkazu je viditelné.

Nejprve vytvořte novou konzoli a tři knihovny, konkrétně:ConsoleApp6ClassLibraryStandardClassLibrary1ClassLibrary2, mezi nimiž knihovny ClassLibrary1 a ClassLibrary2 dědí rozhraní IWorker v ClassLibraryStandard a implementují metodu Run.

ClassLibraryStandard:

Kód ClassLibrary1:

Kód ClassLibrary2:

Kód konzole ConsoleApp6 je následující:

Konzole otevírá metodu Run se 3 vlákny v DLL pluginu, který se neustále dynamicky spouští, a používá log4net k zaznamenání výstupních výsledků, a poté jej spustí v konzoliNahraďte DLL nejnovější knihovnou po 3 sekundách

Po spuštění konzole po dobu 1 sekundy nebo 5 sekund je výstupem kolekce aktuální instance AssemblyLoadContext, což je načtená knihovna DLL.

Jak je uvedeno níže:



Vidíte, že program nemá žádný abnormální výstup a neexistuje situace, kdy by plugin nebyl během spuštění nalezen. Důvodem, proč log4net zaznamenává výsledky vykonání, je to, že konzole je zablokovaná, a aby bylo zajištěno, že tři vlákna mohou být nepřetržitě, používá se log4net k jejich záznamu, jak je znázorněno na obrázku níže:



2024-06-28 14:24:36,606 INFO 11 RollingFile - 1
2024-06-28 14:24:36,606 INFO 10 RollingFile - Začněte odinstalovat
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 - Odinstalace dokončena
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

Připojená config.xml konfigurace:

(Konec)




Předchozí:O úrovni odolnosti QRCODE QR kódu
Další:.NET/C# používá PDFsharp ke sloučení více PDF souborů do jednoho
 Pronajímatel| Zveřejněno 6. 7. 2024 v 16:59:30 |
Použijte Roslyn k dynamické kompilaci kódu v C# a spuštění
https://www.itsvse.com/thread-10786-1-1.html
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com