Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 22873|Απάντηση: 0

[Πηγή] Το .NET/C# υλοποιεί το AOP μέσω Autofac και DynamicProxy

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 4/11/2017 12:21:23 μ.μ. | | | |
Τι είναι το AOP; Παραθέτοντας την Εγκυκλοπαίδεια Baidu: Το AOP είναι η συντομογραφία του Aspect Oriented Programming, που σημαίνει: μια τεχνολογία για προγραμματισμό προσανατολισμένο στο πρόσωπο για την επίτευξη ενοποιημένης συντήρησης των λειτουργιών του προγράμματος μέσω μεθόδων προ-μεταγλώττισης και δυναμικών πρακτόρων κατά τη διάρκεια του χρόνου εκτέλεσης. Υπάρχουν δύο κύριοι τρόποι εφαρμογής του AOP, ο ένας είναι η στατική εμφύτευση κατά τη μεταγλώττιση, το πλεονέκτημα είναι η υψηλή απόδοση, το μειονέκτημα είναι η έλλειψη ευελιξίας και το postsharp κάτω από το .net είναι ο αντιπρόσωπος (αυτό χρεώνεται). Η άλλη μέθοδος είναι οι δυναμικοί διακομιστής μεσολάβησης, οι οποίοι έχουν τα αντίθετα πλεονεκτήματα και μειονεκτήματα από την πρώτη, δημιουργώντας δυναμικά διακομιστές μεσολάβησης για τον τύπο στόχου και υποκλέπτοντάς τους μέσω κλήσεων διακομιστή μεσολάβησης. Αυτό που μπορεί να κάνει το AOP, οι περιπτώσεις κοινής χρήσης είναι η επεξεργασία συναλλαγών, η καταγραφή κ.λπ. Ας μιλήσουμε για το πώς η Autofac εφαρμόζει το AOP, το Autofac είναι ένα πολύ καλό κοντέινερ IOC στο .net και πολύ καλή απόδοση (το πιο αποτελεσματικό κοντέινερ στο .net), καθώς και το AOP είναι απλά μια τίγρη. Το AOP της Autofac υλοποιείται μέσω του βασικού τμήματος του έργου Castle (επίσης κοντέινερ) που ονομάζεται Autofac.Extras.DynamicProxy, το οποίο, όπως υποδηλώνει το όνομα, υλοποιείται ως δυναμικός διακομιστής μεσολάβησης.

Προετοιμασία πριν από τη χρήση:

Εγκαταστήστε το πακέτο Nuget Autofac, Autofac.Extras.DynamicProxy και θα προστεθούν τρεις αναφορές μετά την επιτυχή εγκατάσταση


Τώρα ξεκίνησε επίσημα!



Βήμα 1: Δημιουργήστε έναν αναχαιτιστή

Παρακάτω είναι ένα παράδειγμα απλού αναχαιτιστή που εμφανίζει το όνομα της μεθόδου που αναχαιτίζεται, μια λίστα παραμέτρων και το αποτέλεσμα επιστροφής

Βήμα 2: Καταχωρίστε τον αναχαιτιστή στο δοχείο Autofac

Ο αναχαιτιστής πρέπει να είναι καταχωρημένος στο δοχείο Aufofac, είτε με βάση τον τύπο του αναχαιτιστή είτε με το όνομα, γεγονός που καθιστά τη μέθοδο χρήσης του αναχαιτιστή διαφορετική (όπως συζητείται παρακάτω).


Εισαγωγή ονόματος
οικοδόμος. Register(c => νέο CallLogger(Console.Out)). Named<IInterceptor>("log-calls");

Τύπος έγχυσης
οικοδόμος. Register(c => νέο CallLogger(Console.Out));


Βήμα 3: Ενεργοποιήστε τον αναχαιτιστή

Υπάρχουν δύο κύριοι τρόποι για να ενεργοποιήσετε τον αναχαιτιστή: EnableInterfaceInterceptors(), EnableClassInterceptors().

Η μέθοδος EnableInterfaceInterceptors δημιουργεί δυναμικά έναν διακομιστή μεσολάβησης διασύνδεσης

Η μέθοδος EnableClassInterceptors θα δημιουργήσει μια κλάση διακομιστή μεσολάβησης υποκλάσης της κλάσης προορισμού και θα πρέπει να σημειωθεί εδώ ότι θα υποκλέψει μόνο την εικονική μέθοδο και θα παρακάμψει τη μέθοδο

Ενεργοποίηση δείγματος κώδικα αναχαίτισης:


Βήμα 4: Υποδείξτε τον τύπο που θέλετε να υποκλέψετε

Υπάρχουν δύο τρόποι:

Ο πρώτος τύπος: Προσθήκη χαρακτηριστικού χαρακτηριστικού στον τύπο




Ο δεύτερος τύπος είναι η δυναμική έγχυση του αναχαιτιστή όταν ο τύπος καταχώρισης μεταφέρεται στο δοχείο


Βήμα 5: Δοκιμάστε το αποτέλεσμα

1. Υποκλοπή πληρεξουσίου



Κωδικός κλάσης κύκλου:



2. Υποκλοπή διακομιστή μεσολάβησης διεπαφής



Κωδικός διεπαφής IShape:

Κωδικός κλάσης κύκλου:







Προηγούμενος:Πηγαίος κώδικας VS2010 C# Close Port Tool
Επόμενος:Λειτουργία κρυπτογράφησης JS-MD5
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com