Skip to main content

Was ist ein aktives Objekt?

Bei Computerprogrammierung und Engineering ist ein aktives Objekt eine Art von Entwurfsmuster, mit der sichergestellt werden kann, dass ein Service immer in einem Multi-Threaden- oder gleichzeitigen System verfügbar ist.Ein aktives Objekt ist ein Objekt, das einen Mechanismus implementiert, damit die Eingabe von externen Objekten empfangen und verarbeiten kann, ohne die externen Objekte zu erzwingen, um die Ausführung abzuschließen.Dieser Mechanismus ermöglicht es auch vielen Objekten, die alle gleichzeitig ausführen könnten, um aktive Objekte ohne die Möglichkeit für lange Blockierzeiten zu verwenden, in denen die gleichzeitigen Prozesse anhalten und auf den Zugriff warten müssen.Dies wird am häufigsten erreicht, indem die aktiven Objekte in eine öffentlich zugängliche Schnittstelle eingewickelt werden, die als Proxy bezeichnet wird, und dann eine Art von Warteschlangensystem in den Objekten implementieren, damit Nachrichten für die spätere Verarbeitung gespeichert werden.Dadurch werden ein Entwurfsmuster erstellt, in dem Objekte Nachrichten an aktive Objekte senden und dann ihre Verarbeitung fortsetzen, bis das aktive Objekt die Nachricht verarbeitet und später die aufrufenden Objekte der Ergebnisse informiert, damit sie ihre Zustände entsprechend aktualisieren können.Ein normales Objekt kann als passives Objekt bezeichnet werden.In einem einfachen Programmbeispiel kann ein passives Objekt als Chat -Server -Relais fungieren, in dem Remote -Objekte das passive Objekt kontaktieren, um eine Nachricht an alle anderen auf dem Server zu übermitteln.Immer wenn das passive Serverobjekt eine Chat -Nachricht von einem Remote -Objekt empfängt, muss die Anforderung sofort verarbeitet und dann sofort die Ausgabe senden, während das Remote -Objekt seine eigene Ausführung anhält, bis der Prozess abgeschlossen ist, ein Effekt, der als Blockierung bezeichnet wird.Das Erstellen verschiedener Threads im Programm kann das Problem der Ausführungsblockierung lösen, initiiert jedoch Probleme mit der Synchronisation.

In einem aktiven Objektdesign -Muster würde das gleiche Serverobjekt im obigen Beispiel in seinem eigenen Thread ausgeführt, der von den anderen Objekten getrennt ist.Es würde auch in eine Art von Schnittstelle eingewickelt, die als Proxy bezeichnet wird und auch in einem separaten Thread ausgeführt wird, manchmal im Hauptprogrammausführungs -Thread.Wenn ein Remote -Objekt das Serverobjekt eine Chat -Nachricht sendet, kontaktiert es das Proxy -Objekt, übergibt alle erforderlichen Informationen und kehrt dann zu seinem normalen Ausführungszustand zurück, anstatt zu warten.

Die Proxy -Schnittstelle konvertiert dann zu seinem normalen Ausführungszustand.Die Informationen aus dem Remote -Objekt in eine Nachricht, die sie an eine Warteschlange übergeben, damit das aktive Objekt verarbeitet werden kann.Zu diesem Zeitpunkt können sowohl die Proxy -Schnittstelle als auch das Remote -Objekt frei ausführen und nicht blockiert.In der Zwischenzeit hält das aktive Objekt die Warteschlange leer und verarbeitet jede eingehende Nachricht.Wenn das Anrufobjekt einige Informationen vom aktiven Objekt zurückgeben müssen, kann eine Rückrufstruktur verwendet werden, um das Remote -Objekt über Änderungen des Zustands zu informieren.