Gibt es wirklich so etwas wie "Push"?


8

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.


4
Betrachten Sie einen durch Hardware ausgelösten Interrupt als "Polling"?
Oliver Charlesworth

Ich würde nein sagen. Aber welche Softwaresysteme können sie tatsächlich nutzen (insbesondere im Bereich vernetzter Apps)?
John Cromartie

5
Socket-Programmierung und Web-Sockets sind "Push".
zzzzBov

Antworten:


14

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.


Vielen Dank! Dies ist eine großartige Zusammenfassung. Ich habe tatsächlich "Code" von Charles Petzold gelesen und bin gerade zu dem Teil über Interrupts gekommen. Dies alles macht jetzt viel mehr Sinn und ich kann sehen, wie ein Netzwerkgerät und eine CPU und ein Betriebssystem zusammenarbeiten könnten, um eine echte Push-Architektur zu implementieren.
John Cromartie

2

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 ...


1

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.


1

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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.