Skip to main content

Wat is een actief object?

In computerprogrammering en engineering is een actief object een type ontwerppatroon dat kan worden gebruikt om ervoor te zorgen dat sommige service altijd beschikbaar is in een multi-threaded of gelijktijdig systeem.Een actief object is een object dat een mechanisme implementeert, zodat het input kan ontvangen en verwerken van externe objecten zonder de externe objecten te dwingen te wachten tot uitvoering is voltooid.Dit mechanisme maakt ook veel objecten mogelijk die allemaal tegelijkertijd kunnen worden uitgevoerd om actieve objecten te gebruiken zonder de mogelijkheid voor lange blokkeertijden waarin de gelijktijdige processen moeten stoppen en wachten op toegang.Dit wordt meestal bereikt door de actieve objecten in een openbaar toegankelijke interface te verpakken, een proxy genoemd en vervolgens een type wachtrijsysteem in de objecten te implementeren, zodat berichten worden opgeslagen voor latere verwerking., een normaal object kan een passief object worden genoemd.In een eenvoudig programma -voorbeeld kan een passief object fungeren als een chatserverrelais, waarin externe objecten contact opnemen met het passieve object om een bericht naar alle anderen op de server te verzenden.Wanneer het Passive Server -object een chatbericht van een extern object ontvangt, moet het het verzoek onmiddellijk afhandelen en vervolgens onmiddellijk de uitvoer verzenden, terwijl het externe object zijn eigen uitvoering stopt totdat het proces is voltooid, een effect dat bekend staat als blokkering.Het maken van verschillende threads in het programma kan het probleem van het blokkeren van uitvoering oplossen, maar initieert vervolgens problemen met synchronisatie.

In een actief objectontwerppatroon zou hetzelfde serverobject in het bovenstaande voorbeeld in zijn eigen thread worden uitgevoerd, gescheiden van de andere objecten.Het zou ook worden ingepakt in een soort interface die bekend staat als een proxy die ook in een afzonderlijke thread wordt uitgevoerd, soms de hoofdprogramma -uitvoeringsthread.Wanneer een externe object het serverobject een chatbericht wil laten verzenden, neemt het contact op met het proxy -object, geeft het alle vereiste informatie door en keert vervolgens terug naar de normale uitvoeringstoestand in plaats van te wachten.

De proxy -interface converteert vervolgensDe informatie van het externe object in een bericht dat het doorgaat naar een wachtrij voor het actieve object om te verwerken.Op dit punt zijn zowel de proxy -interface als het externe object vrij om door te gaan met uitvoeren en worden ze niet geblokkeerd.Ondertussen werkt het actieve object om de wachtrij leeg te houden en elk inkomend bericht te verwerken.Als het oproepobject vereist dat enige informatie wordt geretourneerd door het actieve object, kan een callback -structuur worden gebruikt om het externe object van eventuele wijzigingen in de status te informeren.