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

Πώς να χρησιμοποιήσετε την ένεση εξάρτησης στο ASP.Net Core

Η υποστήριξη για έγχυση εξάρτησης είναι ενσωματωμένη στο ASP.Net Core, το ανοιχτό λογισμικό της Microsoft, την πλατφόρμα cross, το άπαχο και αρθρωτό πλαίσιο για τη δημιουργία εφαρμογών ιστού υψηλής απόδοσης, με δυνατότητα κλιμάκωσης. Στο ASP.Net Core, τόσο οι υπηρεσίες πλαισίου όσο και οι υπηρεσίες εφαρμογών μπορούν να εισαχθούν στις τάξεις σας, αντί να συνδέονται στενά. Σε αυτό το άρθρο θα δούμε πώς μπορούμε να εργαστούμε με εξάρτηση εξάρτησης στο ASP.Net Core.

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

Διάθεση μιας υπηρεσίας μέσω έγχυσης εξάρτησης στο ASP.Net

Θα δημιουργήσουμε τώρα μια απλή υπηρεσία στο Visual Studio χρησιμοποιώντας το ASP.Net Core και θα δείξουμε πώς μπορούμε να το προσθέσουμε στο δοχείο έγχυσης εξάρτησης, να το καταχωρήσουμε στον αγωγό και στη συνέχεια να το καταναλώσουμε στην εφαρμογή μας. Ακολουθήστε αυτά τα βήματα για να δημιουργήσετε ένα νέο έργο ASP.Net Core στο Visual Studio 2017 ή το Visual Studio 2015. Εάν χρησιμοποιείτε το Visual Studio 2015, βεβαιωθείτε ότι έχετε εγκαταστήσει το .Net Core.

  1. Ανοίξτε το Visual Studio
  2. Κάντε κλικ στο Αρχείο -> Νέο -> Έργο
  3. Στο νέο παράθυρο διαλόγου έργου, επιλέξτε το πρότυπο έργου "ASP.NET Core Web Application"
  4. Καθορίστε το όνομα και την τοποθεσία για το έργο σας και κάντε κλικ στο OK για αποθήκευση

Τώρα, δημιουργήστε την ακόλουθη κλάση POCO (απλό παλιό αντικείμενο CLI). Αυτή η τάξη περιέχει μόνο μία ιδιότητα - αντιπροσωπεύει όλους τους τομείς θεμάτων που καλύπτονται από τους συγγραφείς μιας συγκεκριμένης εκδοτικής εταιρείας.

δημόσια τάξη TopicArea

    {

δημόσια συμβολοσειρά Όνομα {get; σειρά; }

    }

Εξετάστε την ακόλουθη διεπαφή που ονομάζεται ITopicAreaService που αντιπροσωπεύει τη σύμβαση για το ΘέμαAreaService.

δημόσια διεπαφή ITopicAreaService

    {

IEnumerable GetAllTopicAreas ();

    }

ο ITopicAreaService διεπαφή περιέχει τη δήλωση μιας μεθόδου που ονομάζεται GetAllTopicAreas (). ο ΘέμαAreaService τάξη εφαρμόζει το ITopicAreaService όπως φαίνεται παρακάτω.

δημόσια τάξη TopicAreaService: ITopicAreaService

    {

δημόσια IEnumerable GetAllTopicAreas ()

        {

επιστροφή νέας λίστας

        {

νέο θέμα {Όνομα},

νέο θέμα {Όνομα},

νέο θέμαArea {Όνομα}

        };

        }

    }

Καταχώριση υπηρεσιών για ένεση εξάρτησης στο ASP.Net

Το επόμενο βήμα είναι η εγγραφή του ΘέμαAreaService με το δοχείο έγχυσης εξάρτησης διαθέσιμο ως μέρος του κώδικα ASP.Net. Για να το κάνετε αυτό, γράψτε το ακόλουθο κομμάτι κώδικα στο ConfigureServices μέθοδο στο αρχείο Startup.cs. ο ConfigureServices Η μέθοδος προσθέτει υπηρεσίες στο κοντέινερ υπηρεσιών, το οποίο τις καθιστά διαθέσιμες στην εφαρμογή σας μέσω εξάρτησης εξάρτησης. Ονομάζεται αυτόματα από το χρόνο εκτέλεσης.

public void ConfigureServices (υπηρεσίες IServiceCollection)

        {

υπηρεσίες.AddTransient ();

// Προσθήκη υπηρεσιών πλαισίου.

υπηρεσίες.AddMvc ();

        }

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

δημόσια στατική τάξη ServiceExtensions

    {

Δημόσιο στατικό μητρώο IServiceCollectionΥπηρεσίες (

αυτές οι υπηρεσίες IServiceCollection)

        {

υπηρεσίες.AddTransient ();

// Προσθέστε όλες τις άλλες υπηρεσίες εδώ.

υπηρεσίες επιστροφής;

        }

    }

Χρησιμοποιώντας το Εγγραφή Υπηρεσίες μέθοδος σας επιτρέπει να διατηρήσετε το δικό σας ConfigureServices μέθοδος άπαχη και διατηρήσιμη. Αντί να καθορίσετε κάθε υπηρεσία στο ConfigureServices, το μόνο που πρέπει να κάνετε είναι να καλέσετε το Εγγραφή Υπηρεσίες μέθοδος επέκτασης μία φορά στο δικό σας ConfigureServices μέθοδο όπως φαίνεται στο απόσπασμα κώδικα παρακάτω.

public void ConfigureServices (υπηρεσίες IServiceCollection)

        {

υπηρεσίες. RegisterServices ();

// Προσθήκη υπηρεσιών πλαισίου.

υπηρεσίες.AddMvc ();

        }

Ζωή έγχυσης εξάρτησης στο ASP.Net

Ο χρόνος ζωής εξάρτησης εξάρτησης χρησιμοποιείται για να καθορίσει πότε δημιουργούνται και επαναδημιουργούνται τα εξαρτώμενα αντικείμενα. Όσον αφορά τη διάρκεια ζωής για παρουσίες εξάρτησης εξάρτησης σε εφαρμογές ASP.Net Core, υπάρχουν τρεις δυνατότητες:

  1. Singleton: Αυτό σημαίνει ότι θα δημιουργηθεί και θα κοινοποιηθεί μόνο μία παρουσία από όλους τους καταναλωτές.
  2. Πεδίο εφαρμογής: Αυτό συνεπάγεται ότι θα δημιουργηθεί μία παρουσία ανά εύρος (δηλαδή μία παρουσία ανά αίτημα στην εφαρμογή).
  3. Παροδικό: Αυτό σημαίνει ότι τα στοιχεία δεν θα κοινοποιηθούν αλλά θα δημιουργούνται κάθε φορά που ζητούνται.

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

υπηρεσίες. AddScoped ();

υπηρεσίες. AddSingleton ();

Χρησιμοποιώντας μια υπηρεσία μέσω έγχυσης εξάρτησης στο ASP.Net

Τώρα που η υπηρεσία που εφαρμόσαμε έχει προστεθεί στον αγωγό, μπορείτε να τη χρησιμοποιήσετε σε οποιονδήποτε από τους ελεγκτές στο έργο ASP.Net Core. Το παρακάτω απόσπασμα κώδικα δείχνει πώς μπορείτε να ζητήσετε μια παρουσία του ΘέμαAreaService στον ελεγκτή σας.

ιδιωτικό μόνο για ανάγνωση ITopicAreaService _topicAreaService;

δημόσια DefaultController (ITopicAreaService topicAreaService)

    {

_topicAreaService = topicAreaService;

    }

Να πώς GetAllTopicAreas μέθοδος του ΘέμαAreaService καλείται από τη μέθοδο δράσης του ελεγκτή σας.

[HttpGet]

δημόσια IEnumerable GetAllTopicAreas ()

        {

επιστροφή _topicAreaService.GetAllTopicAreas ();

        }

Δίνεται παρακάτω η πλήρης λίστα κωδικών της κλάσης ελεγκτή για αναφορά σας.
χρησιμοποιώντας Microsoft.AspNetCore.Mvc;

χρησιμοποιώντας System.Collections.Generic;

namespace ASPNETCoreDI.Controllers

{

[Παραγωγή ("application / json")]

[Διαδρομή ("api / Default")]

δημόσια τάξη DefaultController: Controller

    {

ιδιωτική μόνο ανάγνωση

δημόσια DefaultController (ITopicAreaService topicAreaService)

        {

_topicAreaService = topicAreaService;

        }

[HttpGet]

δημόσια IEnumerable GetAllTopicAreas ()

        {

επιστροφή _topicAreaService.GetAllTopicAreas ();

        }

    }

}

Μπορείτε να αξιοποιήσετε την ενσωματωμένη υποστήριξη για έγχυση εξάρτησης στο ASP.Net Core για τη δημιουργία εφαρμογών που είναι αρθρωτές, λιτές και καθαρές, εύκολες στη συντήρηση και δοκιμή. Ο ενσωματωμένος πάροχος έγχυσης εξάρτησης στο ASP.Net Core δεν είναι τόσο πλούσιος σε χαρακτηριστικά όσο κοντέινερ όπως το StructureMap και το Ninject, αλλά είναι αρκετά γρήγορος και, όπως έχουμε δει, εύκολο να διαμορφωθεί και να χρησιμοποιηθεί.

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