See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 22873|Vastuse: 0

[Allikas] .NET/C# rakendab AOP-i Autofaci ja DynamicProxy kaudu

[Kopeeri link]
Postitatud 04.11.2017 12:21:23 | | | |
Mis on AOP? Tsitaat Baidu entsüklopeediale: AOP on lühend väljendist aspektipõhine programmeerimine, mis tähendab: tehnoloogiat näopõhiseks programmeerimiseks, mis võimaldab programmi funktsioonide ühtset hooldust eelkompileerimismeetodite ja dünaamiliste agentide abil käitusajal. AOP rakendamiseks on kaks peamist viisi: üks on staatiline implanteerimine kompileerimise ajal, eeliseks on kõrge efektiivsus, puuduseks on paindlikkuse puudumine ja postsharp .net all on esindaja (see on tasuline). Teine meetod on dünaamilised proksid, millel on vastupidised eelised ja puudused kui esimestel – dünaamiliselt luuakse proksisid sihttüübile ja püütakse neid proksikõnede kaudu. Mida AOP suudab teha, on tavalised kasutusjuhtumid tehingute töötlemine, logimine jne. Räägime, kuidas Autofac rakendab AOP-i, Autofac on väga hea IOC konteiner .net all ja väga hea jõudlus (kõige tõhusam konteiner .net all), lisaks on AOP lihtsalt tiiger. Autofaci AOP on teostatud Castle'i (ka konteiner) projekti põhiosa Autofac.Extras.DynamicProxy kaudu, mis, nagu nimigi ütleb, on rakendatud dünaamilise proxyna.

Ettevalmistus enne kasutamist:

Paigalda Nuget pakett Autofac, Autofac.Extras.DynamicProxy ning pärast edukat paigaldust lisatakse kolm viidet


Nüüd on see ametlikult alanud!



1. samm: Loo interceptor

Allpool on näide lihtsast interceptorist, mis kuvab pealtkuulatud meetodi nime, parameetrite nimekirja ja tagastustulemuse

2. samm: Registreeri interceptor Autofaci konteinerisse

Interceptor peab olema registreeritud Aufofaci konteineris, kas hävitaja tüübi või nime järgi, mis muudab püüduri kasutamise meetodi erinevaks (nagu hiljem käsitletakse).


Nime süstimine
Ehitaja. Register(c => uus CallLogger (Console.Out)). <IInterceptor>Nimega ("log-calls");

Tüüpsüstimine
Ehitaja. Register(c => uus CallLogger(Console.Out));


3. samm: Lülita interceptor sisse

Interceptori aktiveerimiseks on kaks peamist viisi: EnableInterfaceInterceptors(), EnableClassInterceptors().

EnableInterfaceInterceptors meetod loob dünaamiliselt liidese proxy

EnableClassInterceptors meetod loob sihtklassi alamklassi proxy-klassi ning siin tuleb märkida, et see püüab kinni ainult virtuaalse meetodi ja ületab meetodi

Luba Interceptori näidiskood:


4. samm: Märgi, millist tüüpi soovid kinni püüda

On kaks võimalust:

Esimene tüüp: Lisa tüübile tunnuse atribuut




Teine tüüp on interceptorile dünaamiline süstimine, kui registreerimistüüp kantakse konteinerisse


5. samm: Testi mõju

1. Proxy vaheltlõige



Ringklassi kood:



2. Liidese proxy pealtkuulamine



IShape liidese kood:

Ringklassi kood:







Eelmine:VS2010 C# Close Port Tool lähtekood
Järgmine:JS-MD5 krüpteerimisfunktsioon
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com