Was ist ein aktives Objekt?
In der Computerprogrammierung und -technik 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 ihre Verarbeitung fortsetzen, bis das aktive Objekt die Nachricht verarbeitet und später informiert wirdDie aufrufenden Objekte der Ergebnisse, damit sie ihre Zustände entsprechend aktualisieren können.
Außerhalb eines aktiven Objektdesign -Musters kann ein normales Objekt 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 in Verbindung setzen, 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 Blocking bekannt ist. 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 dem getrennt istandere Objekte. 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 -Meldung 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 die Informationen aus dem Remote -Objekt in eine Nachricht, die sie in eine Warteschlange übergibt, damit das aktive Objekt verarbeitet wird. 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 aufrufende Objekt vom aktiven Objekt zurückgegeben werden soll, kann eine Rückrufstruktur verwendet werden, um das Remote -Objekt über Änderungen des Zustands zu informieren.