Skip to main content

Hvad er et aktivt objekt?

I computerprogrammering og teknik er et aktivt objekt en type designmønster, der kan bruges til at hjælpe med at sikre, at en vis service altid er tilgængelig i et flertrådet eller samtidig system.Et aktivt objekt er et objekt, der implementerer en mekanisme, så den kan modtage og behandle input fra eksterne objekter uden at tvinge de eksterne objekter til at vente på, at udførelsen skal afsluttes.Denne mekanisme tillader også mange objekter, der alle kan køre samtidigt for at bruge aktive objekter uden mulighed for lange blokeringstider, hvor de samtidige processer skal stoppe og vente på adgang.Dette opnås oftest ved at indpakke de aktive objekter i en offentligt tilgængelig grænseflade, kaldet en proxy og derefter implementere en type køsystem inde i objekterne, så meddelelser gemmes til senere behandling.Dette skaber et designmønster, hvor objekter sender meddelelser til aktive objekter og derefter fortsætter deres behandling, indtil det aktive objekt behandler meddelelsen og senere informerer de opkaldsobjekter om resultaterne, så de kan opdatere deres tilstande i overensstemmelse hermed.

uden for et aktivt objektdesignmønster., kan et normalt objekt kaldes et passivt objekt.I et simpelt programeksempel kan et passivt objekt muligvis fungere som et chatserverrelæ, hvor fjernobjekter kontakter det passive objekt for at overføre en meddelelse til alle andre på serveren.Hver gang det passive serverobjekt modtager en chatmeddelelse fra et fjerntliggende objekt, skal den håndtere anmodningen med det samme og derefter straks sende output, alt sammen mens fjernobjektet stopper sin egen udførelse, indtil processen er udført, en effekt kendt som blokering.Oprettelse af forskellige tråde inden for programmet kan løse problemet med eksekveringsblokering, men indleder derefter problemer med synkronisering.

I et aktivt objektdesignmønster ville det samme serverobjekt i ovenstående eksempel køre i sin egen tråd adskilt fra de andre objekter.Det ville også blive indpakket i en form for interface kendt som en proxy, der også kører i en separat tråd, undertiden hovedprogramudførelsestråden.Når et fjerntliggende objekt ønsker at få serverobjektet ud med en chatmeddelelse, kontakter den proxy -objektet, overføres til det hele den krævede information og vender derefter tilbage til sin normale eksekveringstilstand i stedet for at vente.

Proxy -grænsefladen konverterer derefterOplysningerne fra det eksterne objekt til en meddelelse om, at de overføres til en kø for det aktive objekt at behandle.På dette tidspunkt er både proxy -grænsefladen og det eksterne objekt frit at fortsætte med at udføre og er ikke blokeret.I mellemtiden fungerer det aktive objekt for at holde køen tom og behandler hver indgående meddelelse.Hvis det opkaldsobjekt kræver, at nogle oplysninger returneres af det aktive objekt, kan en tilbagekaldsstruktur bruges til at informere fjernobjektet om eventuelle ændringer i tilstand.