Hvad er et aktivt objekt?

I computerprogrammering og -teknik er et aktivt objekt en type designmønster, der kan bruges til at sikre, at en vis service altid er tilgængelig i et flertrådet eller samtidigt system. Et aktivt objekt er et objekt, der implementerer en mekanisme, så det kan modtage og behandle input fra eksterne objekter uden at tvinge de eksterne objekter til at vente på, at udførelsen er færdig. Denne mekanisme giver også mange objekter, der muligvis alle kører samtidigt, brug af aktive objekter uden mulighed for lange blokeringsperioder, hvor de samtidige processer skal stoppe og vente på adgang. Dette opnås ofte 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 kaldende objekter om resultaterne, så de kan opdatere deres tilstande i overensstemmelse hermed.

Uden for et aktivt objektdesignmønster kaldes et normalt objekt et passivt objekt. I et simpelt programeksempel fungerer et passivt objekt muligvis som en chat-serverrelæ, hvor eksterne objekter 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 eksternt objekt, skal det håndtere anmodningen straks og derefter straks sende output, alt imens fjernobjektet stopper sin egen eksekvering, indtil processen er udført, en effekt kendt som blokering. Oprettelse af forskellige tråde i programmet kan løse problemet med eksekveringsblokering, men derefter initieres problemer med synkronisering.

I et aktivt objektdesignmønster kører det samme serverobjekt i ovenstående eksempel i sin egen tråd adskilt fra de andre objekter. Det vil også være indpakket i en eller anden type interface, der er kendt som en proxy, der også kører i en separat tråd, undertiden hovedudførelsestråden. Når et fjernobjekt ønsker, at serverobjektet skal sende en chatbesked, kontakter det proxyobjektet, overfører det til al den nødvendige information og vender derefter tilbage til sin normale eksekveringstilstand i stedet for at vente.

Proxygrænsefladen konverterer derefter informationen fra det fjerne objekt til en meddelelse om, at den overføres til en kø, hvor det aktive objekt skal behandles. På dette tidspunkt er både proxy-grænsefladen og det fjerne 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 opkaldende objekt kræver, at nogle oplysninger returneres af det aktive objekt, kan en opkaldsstruktur bruges til at informere det fjerne objekt om eventuelle ændringer i tilstanden.

ANDRE SPROG

Hjalp denne artikel dig? tak for tilbagemeldingen tak for tilbagemeldingen

Hvordan kan vi hjælpe? Hvordan kan vi hjælpe?