Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 22873|Vastaus: 0

[Lähde] .NET/C# toteuttaa AOP:n Autofacin ja DynamicProxyn kautta

[Kopioi linkki]
Julkaistu 4.11.2017 12.21.23 | | | |
Mikä on AOP? Baidu-tietosanakirjan siteeraus: AOP on lyhenne sanoista Aspect Oriented Programming (Aspect Oriented Programming), joka tarkoittaa: teknologiaa kasvokeskeiseen ohjelmointiin, jolla saavutetaan ohjelmatoimintojen yhtenäinen ylläpito esikäännösmenetelmien ja dynaamisten agenttien avulla ajonaikana. AOP:n toteuttamiseen on kaksi pääasiallista tapaa: toinen on staattinen implantointi käännösvaiheessa, etuna on korkea tehokkuus, haittana joustavuuden puute ja postsharp .netin alla on edustaja (tämä on veloitettu). Toinen menetelmä on dynaamiset välityspalvelimet, joilla on päinvastaiset edut ja haitat: dynaaminen proxyjen luominen kohdetyypille ja niiden sieppaaminen välityspalvelmien kautta. Mitä AOP voi tehdä, yleisiä käyttötapauksia ovat transaktioiden käsittely, lokitus jne. Puhutaanpa siitä, miten Autofac toteuttaa AOP:n, Autofac on erittäin hyvä IOC-kontti .netissä ja erittäin suorituskykyinen (tehokkain kontti .netissä), ja AOP on yksinkertaisesti tiikeri. Autofacin AOP toteutetaan Castle-projektin (myös kontti) ydinosan kautta nimeltä Autofac.Extras.DynamicProxy, joka nimensä mukaisesti toteutetaan dynaamisena välityspalvelimena.

Valmistelu ennen käyttöä:

Asenna Nuget-paketti Autofac, Autofac.Extras.DynamicProxy, ja kolme viitettä lisätään onnistuneen asennuksen jälkeen


Nyt se on virallisesti alkanut!



Vaihe 1: Luo torjuntahävittäjä

Alla on esimerkki yksinkertaisesta interseptorista, joka näyttää siepatun metodin nimen, parametrien listan ja palautustuloksen

Vaihe 2: Rekisteröi interseptori Autofac-konttiin

Torjuntakone on rekisteröitävä Aufofac-konttiin, joko torjuntatyypin tai nimen perusteella, mikä tekee torjuntamenetelmästä erilaisen (kuten myöhemmin käsitellään).


Nimen lisääminen
rakentaja. Register(c => uusi CallLogger(Console.Out)). <IInterceptor>Nimetty ("lokikutsut");

Tyypin injektio
rakentaja. Register(c => uusi CallLogger(Console.Out));


Vaihe 3: Ota torjuntalaite käyttöön

Interseptorin käyttöönottoon on kaksi pääasiallista tapaa: EnableInterfaceInterceptors(), EnableClassInterceptors().

EnableInterfaceInterceptors-menetelmä luo dynaamisesti rajapintavälityspalvelimen

EnableClassInterceptors-menetelmä luo kohdeluokan aliluokan proxy-luokan, ja tässä on huomattava, että se sieppaa vain virtuaalisen metodin ja ohittaa metodin

Ota Interceptor-näytekoodi käyttöön:


Vaihe 4: Ilmoita, minkä tyyppisen tyypin haluat siepata

On kaksi tapaa:

Ensimmäinen tyyppi: Lisää ominaisuusattribuutti tyypille




Toinen tyyppi on dynaaminen torjuntakoneen injektoiminen, kun rekisteröintityyppi siirretään konttiin


Vaihe 5: Testaa vaikutus

1. Proxy-sieppaus



Ympyräluokkakoodi:



2. Rajapinnan välityspalvelimen sieppaus



IShape-liitäntäkoodi:

Ympyräluokkakoodi:







Edellinen:VS2010 C# Close Port Tool -lähdekoodi
Seuraava:JS-MD5-salausfunktio
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com