Skip to main content

Τι είναι ένα ενεργό αντικείμενο;

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

Σε ένα ενεργό σχέδιο σχεδιασμού αντικειμένων, το ίδιο αντικείμενο διακομιστή στο παραπάνω παράδειγμα θα τρέχει στο δικό του νήμα ξεχωριστό από τα άλλα αντικείμενα.Θα ήταν επίσης τυλιγμένο σε κάποιο είδος διεπαφής γνωστό ως πληρεξούσιο που τρέχει επίσης σε ένα ξεχωριστό νήμα, μερικές φορές το κύριο νήμα εκτέλεσης του προγράμματος.Όταν ένα απομακρυσμένο αντικείμενο θέλει να έχει το αντικείμενο του διακομιστή να στείλει ένα μήνυμα συνομιλίας, έρχεται σε επαφή με το αντικείμενο Proxy, μεταβιβάζει σε όλες τις απαιτούμενες πληροφορίες και στη συνέχεια επιστρέφει στην κανονική του κατάσταση εκτέλεσης αντί να περιμένει.Οι πληροφορίες από το απομακρυσμένο αντικείμενο σε ένα μήνυμα που περνάει σε μια ουρά για το ενεργό αντικείμενο να επεξεργαστεί.Σε αυτό το σημείο, τόσο η διασύνδεση πληρεξούσιου όσο και το απομακρυσμένο αντικείμενο είναι ελεύθεροι να συνεχίσουν να εκτελούν και δεν έχουν αποκλειστεί.Εν τω μεταξύ, το ενεργό αντικείμενο λειτουργεί για να διατηρήσει την ουρά άδειο, επεξεργάζοντας κάθε εισερχόμενο μήνυμα.Εάν το αντικείμενο κλήσης απαιτεί κάποιες πληροφορίες που πρέπει να επιστραφούν από το ενεργό αντικείμενο, τότε μια δομή επανάκλησης μπορεί να χρησιμοποιηθεί για να ενημερώσει το απομακρυσμένο αντικείμενο οποιωνδήποτε αλλαγών στην κατάσταση.