Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 22873|Atbildi: 0

[Avots] .NET/C# ievieš AOP, izmantojot Autofac un DynamicProxy

[Kopēt saiti]
Publicēts 04.11.2017 12:21:23 | | | |
Kas ir AOP? Citējot Baidu enciklopēdiju: AOP ir saīsinājums no Aspect Oriented Programming, kas nozīmē: tehnoloģija uz seju orientētai programmēšanai, lai panāktu vienotu programmas funkciju uzturēšanu, izmantojot iepriekšējas kompilācijas metodes un dinamiskus aģentus izpildes laikā. Ir divi galvenie veidi, kā ieviest AOP, viens ir statiskā implantācija kompilācijas laikā, priekšrocība ir augsta efektivitāte, trūkums ir elastības trūkums, un postsharp zem .net ir pārstāvis (tas ir iekasēts). Otra metode ir dinamiskie starpniekserveri, kuriem ir pretējas priekšrocības un trūkumi no pirmajiem, dinamiski izveidojot starpniekserverus mērķa tipam un pārtverot tos, izmantojot starpniekservera zvanus. Ko AOP var darīt, izplatītākie lietošanas gadījumi ir darījumu apstrāde, reģistrēšana utt. Parunāsim par to, kā Autofac īsteno AOP, Autofac ir ļoti labs SOK konteiners zem .net un ļoti laba veiktspēja (visefektīvākais konteiners zem .net), kā arī AOP ir vienkārši tīģeris. Autofac AOP tiek īstenots, izmantojot pils (arī konteinera) projekta galveno daļu ar nosaukumu Autofac.Extras.DynamicProxy, kas, kā norāda nosaukums, tiek īstenots kā dinamisks starpniekserveris.

Sagatavošana pirms lietošanas:

Instalējiet Nuget pakotni Autofac, Autofac.Extras.DynamicProxy, un pēc veiksmīgas instalēšanas tiks pievienotas trīs atsauces


Tagad tas ir oficiāli sācies!



1. darbība: pārtvērēja izveide

Zemāk ir vienkārša pārtvērēja piemērs, kas parāda pārtvertās metodes nosaukumu, parametru sarakstu un atgriešanas rezultātu

2. solis: reģistrējiet pārtvērēju Autofac konteinerā

Pārtvērējs ir jāreģistrē Aufofac konteinerā vai nu pēc pārtvērēja veida, vai pēc nosaukuma, kas padara pārtvērēja izmantošanas metodi atšķirīgu (kā aplūkots vēlāk).


Nosaukuma injekcija
celtnieks. Register(c => jauns CallLogger(Console.Out)). Named<IInterceptor>("žurnāla zvani");

Tipa iesmidzināšana
celtnieks. Register(c => jauns CallLogger(Console.Out));


3. darbība: iespējojiet pārtvērēju

Ir divi galvenie veidi, kā iespējot pārtvērēju: EnableInterfaceInterceptors(), EnableClassInterceptors().

EnableInterfaceInterceptors metode dinamiski izveido interfeisa starpniekserveri

EnableClassInterceptors metode izveidos mērķa klases apakšklases starpniekservera klasi, un šeit jāatzīmē, ka tā tikai pārtvers virtuālo metodi un ignorēs metodi

Iespējot Interceptor parauga kodu:


4. solis: norādiet veidu, kuru vēlaties pārtvert

Ir divi veidi:

Pirmais veids: objekta atribūta pievienošana tipam




Otrais veids ir dinamiski ievadīt pārtvērēju, kad reģistrācijas veids tiek pārnests uz konteineru


5. darbība: pārbaudiet efektu

1. Starpniekservera pārtveršana



Apļa klases kods:



2. Interfeisa starpniekservera pārtveršana



IShape interfeisa kods:

Apļa klases kods:







Iepriekšējo:VS2010 C# Aizvērt portu rīka avota kodu
Nākamo:JS-MD5 šifrēšanas funkcija
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com