Skip to main content

Hva er et aktivt objekt?

I dataprogrammering og ingeniørfag er et aktivt objekt en type designmønster som kan brukes til å sikre at noen tjenester alltid er tilgjengelig i et flertrådet eller samtidig system.Et aktivt objekt er et objekt som implementerer en mekanisme slik at det kan motta og behandle inngang fra eksterne objekter uten å tvinge de eksterne objektene til å vente på at utførelsen skal fullføres.Denne mekanismen tillater også mange objekter som alle kjører samtidig for å bruke aktive objekter uten mulighet for lange blokkeringstider der de samtidige prosessene må stoppe og vente på tilgang.Dette oppnås oftest ved å pakke de aktive objektene i et offentlig tilgjengelig grensesnitt, kalt en proxy, og deretter implementere en type kø -system inne i objektene slik at meldinger lagres for senere behandling.Dette oppretter et designmønster der objekter sender meldinger til aktive objekter og deretter fortsetter behandlingen til det aktive objektet behandler meldingen og senere informerer om samtaleobjektene til resultatene slik at de kan oppdatere tilstandene sine deretter.

utenfor et aktivt objektdesignmønster, et normalt objekt kan kalles et passivt objekt.I et enkelt programeksempel kan et passivt objekt fungere som et chat -serverrelé, der eksterne objekter kontakter det passive objektet for å overføre en melding til alle andre på serveren.Hver gang det passive serverobjektet mottar en chat -melding fra et eksternt objekt, må den håndtere forespørselen umiddelbart og deretter umiddelbart sende utdata, alt mens det eksterne objektet stopper sin egen utførelse til prosessen er gjort, en effekt kjent som blokkering.Å lage forskjellige tråder i programmet kan løse problemet med utførelsesblokkering, men initierer deretter problemer med synkronisering.

I et aktivt objektdesignmønster, vil det samme serverobjektet i eksemplet ovenfor kjøres i sin egen tråd atskilt fra de andre objektene.Det vil også bli pakket inn i en eller annen form for grensesnitt kjent som en proxy som også kjører i en egen tråd, noen ganger utførelsestråden for hovedprogrammet.Når et eksternt objekt ønsker å få serverobjektet til å sende ut en chat -melding, kontakter det proxy -objektet, overfører all den informasjonen som kreves, og går deretter tilbake til sin normale utførelsesstilstand i stedet for å vente.

Proxy -grensesnittet konverterer deretterInformasjonen fra det eksterne objektet til en melding om at den går til en kø for det aktive objektet å behandle.På dette tidspunktet står både proxy -grensesnittet og det eksterne objektet fritt til å fortsette å utføre og er ikke blokkert.I mellomtiden fungerer det aktive objektet for å holde køen tom, og behandler hver innkommende melding.Hvis det anropende objektet krever at noe informasjon skal returneres av det aktive objektet, kan en tilbakeringingsstruktur brukes til å informere det eksterne objektet om eventuelle endringer i tilstanden.