Skip to main content

Vad är ett aktivt objekt?

I datorprogrammering och teknik är ett aktivt objekt en typ av designmönster som kan användas för att säkerställa att viss tjänst alltid finns i ett flertrådat eller samtidigt system.Ett aktivt objekt är ett objekt som implementerar en mekanism så att den kan ta emot och bearbeta inmatning från externa objekt utan att tvinga de externa objekten att vänta på att körningen ska slutföras.Denna mekanism tillåter också många objekt som alla kan köra samtidigt att använda aktiva objekt utan möjlighet för långa blockeringstider där de samtidiga processerna måste stoppa och vänta på åtkomst.Detta uppnås oftast genom att linda in de aktiva objekten i ett offentligt tillgängligt gränssnitt, kallas en proxy och sedan implementera en typ av kö -system i objekten så att meddelanden lagras för senare bearbetning.Detta skapar ett designmönster där objekt skickar meddelanden till aktiva objekt och sedan fortsätter sin bearbetning tills det aktiva objektet bearbetar meddelandet och senare informerar resultaten för resultaten så att de kan uppdatera sina tillstånd i enlighet därmed.

Utanför ett aktivt objektdesignmönster, ett normalt objekt kan kallas ett passivt objekt.I ett enkelt programexempel kan ett passivt objekt fungera som ett chattserverrelä, där fjärrobjekt kontaktar det passiva objektet för att överföra ett meddelande till alla andra på servern.När det passiva serverobjektet får ett chattmeddelande från ett fjärrobjekt måste det hantera begäran omedelbart och sedan omedelbart skicka utdata, allt medan fjärrobjektet stoppar sin egen körning tills processen är klar, en effekt som kallas blockering.Att skapa olika trådar i programmet kan lösa problemet med exekveringsblockering men initierar sedan problem med synkronisering.

I ett aktivt objektdesignmönster skulle samma serverobjekt i exemplet ovan köras i sin egen tråd separat från de andra objekten.Det skulle också vara lindat i någon typ av gränssnitt som kallas en proxy som också körs i en separat tråd, ibland huvudprogrammet.När ett fjärrobjekt vill låta serverobjektet skicka ut ett chattmeddelande, kontaktar det proxyobjektet, överför till den all den information som krävs och återgår sedan till sitt normala exekveringstillstånd istället för att vänta.

Proxy -gränssnittet konverterar sedanInformationen från fjärrobjektet till ett meddelande om att den överför en kö för det aktiva objektet att bearbeta.Vid denna tidpunkt är både proxy -gränssnittet och det fjärrobjektet fritt att fortsätta utföra och är inte blockerade.Samtidigt arbetar det aktiva objektet för att hålla kön tom och bearbeta varje inkommande meddelande.Om det samtalsobjektet kräver att information ska returneras av det aktiva objektet, kan en återuppringningsstruktur användas för att informera det fjärrobjektet för eventuella förändringar i tillstånd.