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

Nézet: 22873|Válasz: 0

[Forrás] .NET/C# az AOP-t Autofac és DynamicProxy segítségével valósítja meg

[Linket másol]
Közzétéve 2017. 11. 04. 12:21:23 | | | |
Mi az az AOP? Idézve a Baidu Enciklopédiát: Az AOP az Aspektusorientált Programozás rövidítése, ami azt jelenti: egy olyan technológiát az arcorientált programozáshoz, amely lehetővé teszi a programfunkciók egységes karbantartását elő-kompilációs módszerek és dinamikus ügynökök révén a futás során. Az AOP megvalósításának két fő módja van: az egyik a statikus implantáció fordítási időben: az előnye a magas hatékonyság, hátránya a rugalmasság hiánya, és a .net alatt a postsharp a képviselő (ez díjazott). A másik módszer a dinamikus proxyk, amelyeknek ellentétes előnyei és hátrányai vannak, például dinamikusan hoznak létre proxykat a célpont típus számára, és proxy hívásokon keresztül fogják el őket. Az AOP által megszokott felhasználási esetek a tranzakciófeldolgozás, naplózás stb. Beszéljünk arról, hogyan valósítja meg az Autofac az AOP-ot, az Autofac egy nagyon jó IOC konténer .net alatt, és nagyon jó teljesítmény (a leghatékonyabb konténer .net alatt), ráadásul az AOP egyszerűen egy tigris. Az Autofac AOP-ját a Castle (szintén egy konténer) projekt mag része, az Autofac.Extras.DynamicProxy révén valósítják meg, amely, ahogy a neve is mutatja, dinamikus proxyként van megvalósítva.

Előkészítés használat előtt:

Telepítsd a Nuget csomagot Autofac, Autofac.Extras.DynamicProxy, és a sikeres telepítés után három hivatkozás kerül hozzá


Most hivatalosan is elkezdődött!



1. lépés: Létrehozz egy elfogót

Az alábbiakban egy egyszerű interceptor példája látható, amely megjeleníti az elfogott metódus nevét, a paraméterek listáját és a visszaküldési eredményt

2. lépés: Regisztrálni az elfogót az Autofac konténerbe

Az elfogót az Aufofac konténerben kell regisztrálni, akár elfogó típus, akár név szerint, ami megkülönbözteti az elfogó használatát (ahogy később tárgyalják).


Névbeépítés
Építő. Register(c => új CallLogger(Console.Out)). Név <IInterceptor>("naplóhívások");

Típusbefecskendezés
Építő. Register(c => új CallLogger(Console.Out));


3. lépés: Kapcsold be az elfogó gépet

Két fő módja van az elfogó engedélyezésének: EnableInterfaceInterceptors(), EnableClassInterceptors().

Az EnableInterfaceInterceptors módszer dinamikusan hoz létre egy interfész proxyt

Az EnableClassInterceptors metódus létrehoz egy alosztály proxy osztályt a célosztályból, és itt meg kell jegyezni, hogy csak a virtuális metódust fogja el és felülírja a metódust.

Engedélyezd az Interceptor mintakódot:


4. lépés: Jelöld meg, melyik típust szeretnéd elfogni

Kétféle módja van:

Az első típus: Hozzáadj egy tulajdonság attribútumot a típushoz




A második típus dinamikusan injektálja az elfogót, amikor a regisztrációs típust áthelyezik a konténerbe


5. lépés: Tesztelje a hatást

1. Proxy interception



Circle osztálykód:



2. Interfész proxy elhallgatása



IShape interfész kód:

Circle osztálykód:







Előző:VS2010 C# Port Eszköz zárása forráskód
Következő:JS-MD5 titkosítási függvény
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