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

Εργασία με τομείς εφαρμογών στο .Net

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

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

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

Γιατί χρειαζόμαστε τομείς εφαρμογών;

Το περιβάλλον εκτέλεσης κοινής γλώσσας διασφαλίζει ότι ο κώδικας που εκτελείται μέσα σε μία εφαρμογή δεν μπορεί να έχει πρόσβαση στον κώδικα ή στους πόρους μιας άλλης εφαρμογής που εκτελείται στο πλαίσιο του διαχειριζόμενου περιβάλλοντος. Πώς επιτυγχάνεται αυτό; Ο διαχειριζόμενος κώδικας ή ο κώδικας που εκτελεί μέσα στο διαχειριζόμενο περιβάλλον πρέπει να περάσει από μια διαδικασία επαλήθευσης. Αυτή η επαλήθευση γίνεται το CLR (κοινός χρόνος εκτέλεσης γλώσσας) για να διασφαλιστεί η ασφάλεια τύπου. Οι τομείς εφαρμογών βοηθούν το CLR να παρέχει το απαιτούμενο επίπεδο απομόνωσης, έτσι ώστε πολλές εφαρμογές να μπορούν να εκτελεστούν στο πλαίσιο μίας μεμονωμένης διαδικασίας χωρίς να επιβαρύνουν πολύ την απόδοση για να αυξήσουν την επεκτασιμότητα.

Το MSDN δηλώνει: "Οι τομείς εφαρμογών παρέχουν μια πιο ασφαλή και ευέλικτη μονάδα επεξεργασίας που μπορεί να χρησιμοποιήσει ο χρόνος εκτέλεσης της κοινής γλώσσας για την απομόνωση μεταξύ εφαρμογών. Μπορείτε να εκτελέσετε πολλούς τομείς εφαρμογών σε μία μόνο διαδικασία με το ίδιο επίπεδο απομόνωσης που θα υπήρχε σε ξεχωριστό διεργασίες, αλλά χωρίς να επιβαρυνθεί το πρόσθετο κόστος της πραγματοποίησης κλήσεων μεταξύ διεργασιών ή εναλλαγής μεταξύ διεργασιών. "

Δημιουργία τομέων εφαρμογών μέσω προγραμματισμού

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

χρησιμοποιώντας το Σύστημα;

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

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

namespace ApplicationDomains

{

Πρόγραμμα τάξης

    {

static void Main (συμβολοσειρά [] args)

        {

Console.WriteLine (Thread.GetDomain (). FriendlyName);

Console.WriteLine (Assembly.GetEntryAssembly (). FullName);

Console.ReadLine ();

        }

    }

}

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

χρησιμοποιώντας το Σύστημα;

namespace ApplicationDomains

{

Πρόγραμμα τάξης

    {

static void Main (συμβολοσειρά [] args)

        {

AppDomain childApplicationDomain = AppDomain.CreateDomain ("ApplicationDomain");

Console.WriteLine ("Το όνομα τομέα του κεντρικού υπολογιστή είναι:" + AppDomain.CurrentDomain.FriendlyName);

Console.WriteLine ("Το αναγνωριστικό τομέα κεντρικού υπολογιστή είναι:" + AppDomain.CurrentDomain.Id.ToString ());

Console.WriteLine ("Το όνομα του θυγατρικού τομέα είναι:" + childApplicationDomain.FriendlyName);

Console.WriteLine ("Το αναγνωριστικό θυγατρικού τομέα είναι:" + childApplicationDomain.Id.ToString ());

Κονσόλα.ReadKey ();

        }

    }

}

Μπορείτε να δημιουργήσετε έναν νέο τομέα εφαρμογής χρησιμοποιώντας μία από τις υπερφορτωμένες μεθόδους CreateDomain της κλάσης System.AppDomain. Σημειώστε ότι όλες αυτές οι μέθοδοι είναι στατικές και ως εκ τούτου μπορείτε να τις επικαλέσετε χωρίς να χρειάζεται να δημιουργήσετε την κατηγορία AppDomain. Ακολουθεί η λίστα των υπερφορτωμένων μεθόδων CreateDomain της κλάσης System.AppDomain.

δημόσιο στατικό AppDomain CreateDomain (String appDomainName)

δημόσιο στατικό AppDomain CreateDomain (String appDomainName, Evidence securityInformation)

δημόσιο στατικό AppDomain CreateDomain (String appDomainName,

Ασφάλεια αποδεικτικών στοιχείων, AppDomainSetup appDomainSetupInformation)

δημόσιο στατικό AppDomain CreateDomain (όνομα συμβολοσειράς,

Ασφάλεια αποδεικτικών στοιχείων, String appBasePath, String appRelativeSearchPath,

bool shadowCopyFiles)

Μπορείτε να δημιουργήσετε έναν τομέα εφαρμογής χρησιμοποιώντας οποιαδήποτε από αυτές τις υπερφορτωμένες μεθόδους CreateDomain - μπορείτε απλώς να μεταβιβάσετε το όνομα του τομέα εφαρμογής που θέλετε να δημιουργήσετε ως παράμετρο σε αυτήν τη μέθοδο. Μπορείτε επίσης να περάσετε τις πολιτικές ασφαλείας, εάν θέλετε, ως επιπλέον παράμετρος. Η μέθοδος ExecuteAssembly χρησιμοποιείται για τη φόρτωση και εκτέλεση συναρμολόγησης σε έναν τομέα εφαρμογής.

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

χρησιμοποιώντας το Σύστημα;

namespace ApplicationDomains

{

Πρόγραμμα τάξης

    {

static void Main (συμβολοσειρά [] args)

        {

AppDomain applicationDomain = System.AppDomain.CreateDomain ("AppDomain");

applicationDomain.ExecuteAssembly (@ "D: \ Projects \ TestCode.exe");

Console.WriteLine ("Πατήστε οποιοδήποτε πλήκτρο για να ξεφορτώσετε τον τομέα εφαρμογής ...");

Κονσόλα.ReadKey ();

System.AppDomain.Unload (applicationDomain);

        }

    }

}

Όταν εκτελεστεί το παραπάνω πρόγραμμα, θα δημιουργηθεί ένας νέος τομέας εφαρμογών με το όνομα "AppDomain" και στη συνέχεια θα φορτωθεί μια συναρμολόγηση (που ονομάζεται "TestCode.exe") στον τομέα της εφαρμογής και θα εκτελεστεί. Ο τομέας εφαρμογής που έχει δημιουργηθεί θα εκφορτωθεί μόλις πατηθεί ένα πλήκτρο.

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