Προγραμματισμός

Πώς να προγραμματίσετε χρησιμοποιώντας το PostSharp στο C #

Το Aspect Oriented Programming (AOP) είναι ένα πρότυπο προγραμματισμού που σας επιτρέπει να ορίσετε πολιτικές για την απρόσκοπτη διαχείριση των οριζόντιων προβληματισμών στις εφαρμογές. Το AOP μπορεί να αξιοποιηθεί για την αφαίρεση συνδυασμένων κωδικών, την εγγραφή καθαρότερου κώδικα, την αύξηση της αφαίρεσης κώδικα και την αρθρωτότητα, τη μείωση του κόστους συντήρησης και ανάπτυξης και να κάνει τις εφαρμογές πιο εύχρηστες και ευέλικτες. Το PostSharp είναι ένα από τα πιο δημοφιλή διαθέσιμα εργαλεία που μπορούν να χρησιμοποιηθούν για την εφαρμογή AOP ​​σε εφαρμογές.

Ξεκινώντας

Για να ξεκινήσετε να χρησιμοποιείτε το PostSharp, ίσως θελήσετε να εγκαταστήσετε την τελευταία σταθερή έκδοση χρησιμοποιώντας την Κονσόλα διαχείρισης πακέτων. Εναλλακτικά, μπορείτε να εγκαταστήσετε το PostSharp χρησιμοποιώντας το παράθυρο "Διαχείριση πακέτων NuGet". Για να ξεκινήσετε να χρησιμοποιείτε το PostSharp στην εφαρμογή σας, ακολουθήστε αυτά τα βήματα.

1. Ανοίξτε το Visual Studio 2015.

2. Στο μενού του Visual Studio, κάντε κλικ στο Αρχείο> Νέο> Έργο.

3. Επιλέξτε το πρότυπο εφαρμογής κονσόλας από τη λίστα των προτύπων έργου που εμφανίζονται.

4. Αποθηκεύστε το νέο έργο εφαρμογής κονσόλας με ένα όνομα.

5. Στο μενού του Visual Studio, κάντε κλικ στο Εργαλεία> Διαχείριση πακέτων NuGet> Διαχείριση πακέτων NuGet για λύση.

6. Αναζητήστε την πιο πρόσφατη σταθερή έκδοση του PostSharp και κάντε κλικ στο Install.

Και αυτό πρέπει να κάνετε τώρα. Όταν σας ζητηθεί, επιλέξτε τα έργα στα οποία θέλετε να εγκατασταθεί το PostSharp και κάντε κλικ στο OK. Μόλις ολοκληρωθεί η εγκατάσταση, είστε έτοιμοι να χρησιμοποιήσετε το PostSharp στην εφαρμογή σας.

Προγραμματισμός PostSharp

Μόλις εγκατασταθεί το PostSharp, μπορείτε να ξεκινήσετε να το χρησιμοποιείτε στην εφαρμογή σας. Για να το κάνετε αυτό, θα πρέπει να δημιουργήσετε μία ή περισσότερες πτυχές για τη χρήση της εφαρμογής σας. Ένας τρόπος για να εφαρμόσετε το AOP στις εφαρμογές σας είναι μέσω της χρήσης χαρακτηριστικών. Μόλις καθοριστεί η πτυχή σας, θα θελήσετε να εφαρμόσετε την πτυχή στο πρόγραμμά σας μέσω χαρακτηριστικών.

Στο παράθυρο Solution Explorer, επιλέξτε το έργο σας, κάντε δεξί κλικ και προσθέστε μια νέα τάξη με το όνομα ExceptionAspect. Σημειώστε ότι η πτυχή που απαιτείται για τον χειρισμό εξαιρέσεων στην εφαρμογή σας πρέπει να προέρχεται από την κλάση OnExceptionAspect της βιβλιοθήκης PostSharp. Το OnExceptionAspect περιλαμβάνει μια μέθοδο που ονομάζεται OnException την οποία θα πρέπει να παρακάμψετε για να χειριστείτε εξαιρέσεις. Ο παρακάτω κώδικας απεικονίζει την προσαρμοσμένη κατηγορία διαστάσεων εξαίρεσης.

[Σειριοποιήσιμος]

δημόσια τάξη ExceptionAspect: OnExceptionAspect

    {

δημόσια παράκαμψη void OnException (MethodExecutionArgs args)

        {

Console.WriteLine ("Παρουσιάστηκε σφάλμα στο:" +

DateTime.Now.ToShortTimeString () + "Μήνυμα σφάλματος:" +

args.Exception.Message);

args.FlowBehavior = FlowBehavior.Continue;

base.OnException (args);

        }

    }

Κάθε πτυχή πρέπει να είναι σειριοποιήσιμη - σημειώστε τη χρήση του [Serializable] χαρακτηριστικού στην κατηγορία ExceptionAspect που φαίνεται παραπάνω. Τώρα που η πτυχή είναι στη θέση της, μπορείτε να την εφαρμόσετε σε μία ή περισσότερες μεθόδους στην εφαρμογή σας χρησιμοποιώντας χαρακτηριστικά. Το παρακάτω απόσπασμα κώδικα απεικονίζει ένα δείγμα μεθόδου για την εφαρμογή της πτυχής εξαίρεσης που μόλις δημιουργήθηκε.

[ExceptionAspect]

δημόσιο στατικό κενό TestExceptionAspect ()

  {

ρίξτε νέα εξαίρεση ("Αυτό είναι ένα δοκιμαστικό μήνυμα").

  }

Μπορείτε να εφαρμόσετε την προσαρμοσμένη εξαίρεση που δημιουργήθηκε μόλις σε μία ή περισσότερες μεθόδους στην εφαρμογή - ή ακόμα και σε επίπεδο τάξης. Εάν η πτυχή εφαρμοστεί σε επίπεδο τάξης, θα αντιμετωπιστούν οι εξαιρέσεις από οποιαδήποτε από τις μεθόδους της τάξης. Οι πτυχές PostSharp μπορούν επίσης να εφαρμοστούν σε ολόκληρη τη συναρμολόγηση. Αυτή η δυνατότητα είναι γνωστή ως Multicast και μπορεί να εφαρμοστεί στο χώρο ονομάτων προορισμού καθορίζοντας την ακόλουθη δήλωση στο αρχείο AssemblyInfo.cs:

[συνέλευση: ExceptionAspect (AttributeTargetTypes = "PostSharp. *")]

Το "PostSharp. *" Στο παραπάνω απόσπασμα κώδικα αναφέρεται σε όλους τους τύπους που υπάρχουν στο χώρο ονομάτων PostSharp.

Η κλάση OnMethodBoundaryAspect σάς επιτρέπει να εκτελείτε προσαρμοσμένο κώδικα πριν και μετά την εκτέλεση μιας μεθόδου. Ενώ η μέθοδος OnEntry εκτελείται πριν από την εκτέλεση μιας μεθόδου στην οποία εφαρμόζεται η όψη, η μέθοδος OnExit εκτελείται μετά την εκτέλεση της μεθόδου σας. Η ακόλουθη λίστα κωδικών δείχνει πώς μπορείτε να μετρήσετε το χρόνο εκτέλεσης μιας μεθόδου χρησιμοποιώντας μια πτυχή. Η παρακάτω κλάση ExecutionTimeAspect αντλεί την κλάση OnMethodBoundaryAspect και παρακάμπτει τις μεθόδους OnEntry και OnExit.

 [Σειριοποιήσιμος]

δημόσια κλάση ExecutionTimeAspect: OnMethodBoundaryAspect

    {

[Μη εναρμονισμένο]

Χρονόμετρο χρονόμετρο;

δημόσια παράκαμψη void OnEntry (MethodExecutionArgs args)

        {

stopWatch = Stopwatch.StartNew ();

base.OnEntry (args);

        }

δημόσια παράκαμψη void OnExit (MethodExecutionArgs args)

        {

μέθοδος συμβολοσειράς = νέο

StackTrace (). GetFrame (1) .GetMethod (). Όνομα;

string message = string.Format ("Η μέθοδος: [{0}] πήρε

{1} ms για εκτέλεση. ",

                        μέθοδος, stopWatch.ElapsedMilliseconds);

Console.WriteLine (μήνυμα);

base.OnExit (args);

        }

    }

Μπορείτε επίσης να τροποποιήσετε τη μέθοδο OnExit παραπάνω για να καταγράψετε τον χρόνο εκτέλεσης των μεθόδων. Τώρα που η όψη σας είναι έτοιμη για χρήση, μπορεί να εφαρμοστεί σε μία ή περισσότερες μεθόδους για την ανάκτηση του χρόνου εκτέλεσης.

[ExecutionTimeAspect]

δημόσιο στατικό κενό TestExceptionAspect ()

{

// Κάποιος κωδικός

}

Μπορείτε να μάθετε περισσότερα για το PostSharp διαβάζοντας την τεκμηρίωση.

$config[zx-auto] not found$config[zx-overlay] not found