Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 2833|Válasz: 1

[.NET mag] .NET/C# DLL plugin hot updates implementál AssemblyLoadContext alapján

[Linket másol]
Közzétéve: 2024-6-28 14:28:33 | | | |
Követelmények: Az üzleti logika összetett és testreszabást igényel, és ehhez a logikához egy külön DLL összeállításban a háttér dinamikusan frissítheti az összeállítást és végrehajthatja a legújabb logikát.

A .NET Core nem támogatja az AppDomain-ek dinamikus létrehozását és eltávolítását, mint a .NET Framework, így sosem volt jó módja a bővítmények hotload-ának, de a jó hír, hogy a .NET Core 3.0 óta támogatja a Collectible Assembly-t, és létrehozhatunk egy visszafoglalható AssemblyLoadContext-et, amivel összeszerelőket tölthetünk és kirakunk.

AssemblyLoadContext osztály:A hiperlink bejelentkezés látható.

Először hozz létre egy új konzolt és három könyvtárat, nevezetesen:ConsoleApp6ClassLibraryStandardClassLibrary1ClassLibrary2, amelyek közül a ClassLibrary1 és ClassLibrary2 könyvtárak öröklik az IWorker interfészt a ClassLibraryStandardban, és megvalósítják a Run metódust.

ClassLibrarySzabványkód:

ClassLibrary1 kód:

ClassLibrary2 kód:

A ConsoleApp6 konzolkód a következő:

A konzol megnyitja a 3 szálból álló Run módszert a DLL pluginben, amely folyamatosan dinamikusan fut, és a log4net segítségével rögzíti az eredményeket, majd futtatja a konzolonCseréld le a DLL-t a legújabb könyvtárra 3 másodperc múlva

Miután a konzolt 1 másodpercig vagy 5 másodpercig futtatták, a jelenlegi AssemblyLoadContext példány gyűjteménye jön ki, ami a betöltött DLL könyvtár.

Ahogy az alábbiakban látható:



Láthatod, hogy a programnak nincs rendellenes kimenete, és nincs olyan helyzet, amikor a plugin ne található meg a végrehajtás során. Azért rögzíti a log4net a végrehajtási eredményeket, mert a konzol le van tiltva, és annak érdekében, hogy a három szál folyamatosan működhessen, a log4net-et használják a végrehajtási eredmények rögzítésére, ahogy az alábbi ábrán látható:



2024-06-28 14:24:36,606 INFO 11 RollingFile - 1
2024-06-28 14:24:36,606 INFO 10 RollingFile - Kezdj el eltávolítani
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 - Eltávolítás befejezve
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

Csatolt config.xml konfiguráció:

(Vége)




Előző:A QRCODE QRCODE hibatűrési szintről
Következő:A .NET/C# a PDFsharp segítségével több PDF fájlt egyesít egy formátumba
 Háziúr| Közzétéve: 2024-7-6, 16:59:30 |
Használd a Roslyn-t a C# kód dinamikus fordításához és futtatásához
https://www.itsvse.com/thread-10786-1-1.html
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com