Wenn Sie dem Bereich der elektrischen Signale entkommen und sich mit Software beschäftigen, gibt es dann wirklich eine "Push" -Architektur, bei der keine regelmäßigen Abfragen stattfinden?
Ich kann mir kein Design vorstellen, bei dem es auf einer bestimmten Ebene nicht abfragt . Es scheint, als ob es immer nur ein oder zwei Ebenen unter der tatsächlichen Abstraktion / API liegt, mit der Sie sich befassen. Sockets am empfangenden Ende der meisten "Push" -Verbindungen fragen nur nach eingehenden Anforderungen usw. ab.
networking
architecture
push
John Cromartie
quelle
quelle
Antworten:
Ich denke, Windows benötigte Anwendungen, um bis NT und Windows 95 nach E / A abzufragen. Moderne Allzweckbetriebssysteme haben die Notwendigkeit von Abfragen so gut wie beseitigt. Wenn Ihre Anwendung das Lesen von einem Socket anfordert, muss die Lesefunktion den Betriebssystemkern aufrufen. Das Betriebssystem versetzt den aufrufenden Thread in einen angehaltenen Zustand. Wenn Netzwerkpakete eingehen, lösen sie einen Hardware-Interrupt aus, der vom Betriebssystem verarbeitet wird. Wenn das Paket dasjenige ist, nach dem Ihre Anwendung sucht, nimmt das Betriebssystem den Thread aus dem angehaltenen Zustand und der Lesevorgang kann fortgesetzt werden. Mit anderen Worten, Ihre Anwendung ist tatsächlich über das Betriebssystem mit dem Bereich der elektrischen Signale verbunden.
quelle
Die Websocket-Architektur ist eine Push-Architektur, ebenso wie Exchange & Outlook. Diese Protokolle bleiben jederzeit mit dem Server verbunden und der Server sendet Nachrichten (pusht sie), wenn Nachrichten vorliegen ...
quelle
Ich würde auch Steckdosen, die Charles bereits vorgestellt hat, als "Push" -Design betrachten. Er hat Sie vom Bereich der elektrischen Signale bis zum Ende begleitet, aber ein weiteres zu berücksichtigendes Thema sind "Push" -Designs, bei denen es sich lediglich um Entscheidungen zur Anwendungsarchitektur handelt, die auf viel höheren Abstraktionsebenen stattfinden.
Typische Ereignis-Frameworks werden als Push betrachtet, da die Ereignisquelle Ereignisse auslöst, unabhängig davon, wer auf sie wartet oder ob die Ereignissenke mit diesen Ereignissen Schritt halten kann.
Ein weiteres Beispiel, in dem ich arbeite, ist das Video-Streaming. Wir arbeiten mit RTP (Echtzeit-Transportprotokoll). Es basiert auf UDP / IP und ist von Natur aus ein Push-Protokoll. Der Absender sendet weiterhin Videos mit der von ihm gewählten Rate, ohne sich jemals darum zu kümmern, ob der Empfänger damit Schritt hält.
quelle
Sicher gibt es. UDP-Socket-Anwendungen unter Unix können beispielsweise reine Push-Anwendungen sein. Am bekanntesten wäre das klassische BSD-Unix
syslogd
, das seine Bereitschaft erklärt, eingehende ("Push") Pakete anzunehmen und zu verarbeiten. Keine umgekehrte Kommunikation auf Anwendungs- oder Protokollebene (der "Drücker" weiß nicht einmal, ob das Paket korrekt empfangen und verarbeitet wurde). Auf API-Ebene innerhalb der empfangenden Anwendung kann es Abruf-, Synchron- oder Rückrufempfangsmechanismen geben, von denen die beiden letzteren Pure-Push-Mechanismen sind.quelle