Push-Model
Das Push-Model ist in der Anwendungsprogrammierung ein Entwurfsmuster zur Datenübertragung, bei dem der Datenlieferant die Daten überwacht. Erkennt dieser Änderungen, sendet er die geänderten Werte an den Datenempfänger. Der Empfänger verhält sich passiv und wartet, nachdem er sich nach dem Beobachter-Muster angemeldet hat, auf neue Werte. Das Gegenteil ist das Pull-Model.
Vorteile:
- Daten werden nur übertragen, wenn sich tatsächlich Werte geändert haben.
- Der Sender kann die Daten unmittelbar nach Wertänderung absenden und benötigt deshalb keine zusätzlichen Puffer.
Nachteile:
- Der Datenlieferant benötigt eine Auswertelogik für die Änderungserkennung.
- Nach Verlust eines Wertes bei der Übertragung sind Sender und Empfänger asynchron. Diese Asynchronität wird erst bei der nächsten Wertänderung behoben.
Anwendungsbeispiele
Webpush
Der Webpush-Vorschlag der Internet Engineering Task Force ist ein einfaches Protokoll, um Echtzeit-Ereignisse wie eingehende Anrufe oder Nachrichten zu übermitteln, die zeitnah zugestellt (oder "gepusht") werden können. Das Protokoll verwendet HTTP Version 2 und konsolidiert alle Echtzeit-Ereignisse in einer einzigen Sitzung, was eine effizientere Nutzung der Netzwerk- und Funkressourcen gewährleistet. Ein einziger Dienst konsolidiert alle Ereignisse und verteilt diese Ereignisse an die Anwendungen, sobald sie eintreffen. Doppelte Overhead-Kosten werden vermieden, da nur eine Sitzung benötigt wird.[1] Web-Benachrichtigungen sind Teil des W3C-Standards und definieren eine API für Endbenutzer-Benachrichtigungen. Eine Benachrichtigung ermöglicht es, den Benutzer außerhalb des Kontexts einer Webseite über ein Ereignis, wie beispielsweise die Zustellung von E-Mails, zu benachrichtigen.[2] Als Teil dieser vom W3C definierten Standard-Push-API wurde sie von den Webbrowsern Chrome, Firefox, Edge und Safari implementiert.[3]
HTTP-Server-Push
HTTP-Server-Push (auch bekannt als HTTP-Streaming) wiederum ist ein Mechanismus zum Senden nicht angeforderter (asynchroner) Daten von einem Webserver an einen Webbrowser. HTTP-Server-Push kann durch einen von mehreren Mechanismen erreicht werden.
Als Teil von HTML5 ermöglicht die WebSocket-API einem Webserver und einem Client die Kommunikation über eine Vollduplex-TCP-Verbindung.
Im Allgemeinen beendet der Webserver eine Verbindung nicht, nachdem Antwortdaten an einen Client gesendet wurden. Der Webserver lässt die Verbindung offen, sodass beim Eintreten eines Ereignisses (z. B. einer Änderung der internen Daten, die einem oder mehreren Clients gemeldet werden muss), dieses sofort versendet werden kann. Andernfalls müsste das Ereignis, bis die nächste Anfrage des Clients eingeht, in die Warteschlange gestellt werden. Die meisten Webserver bieten diese Funktionalität über CGI an (z. B. Non-Parsed-Header-Skripte auf Apache HTTP Server). Der zugrundeliegende Mechanismus für diesen Ansatz ist die Chunked-Transfer-Kodierung.
Ein weiterer Mechanismus hängt mit einem speziellen MIME-Type namens multipart/x-mixed-replace zusammen, der 1995 von Netscape eingeführt wurde. Webbrowser interpretieren ihn als ein Dokument, das sich ändert, sobald der Server eine neue Version an den Client schiebt.[4] Er wird auch heute noch von Firefox, Opera und Safari unterstützt, vom Internet Explorer jedoch ignoriert und von Google Chrome nur teilweise unterstützt.[5] Er kann auch auf HTML-Dokumente und für das Streaming von Bildern in Webcam-Anwendungen angewendet werden.
Der Vorschlag Web Applications 1.0 der WHATWG enthält einen Mechanismus, um Inhalte an den Client zu pushen. Am 1. September 2006 implementierte der Webbrowser Opera dieses neue, seinerzeit experimentelle System in einer Funktion namens Server-Sent Events, die nun als Teil von HTML5 standardisiert wird.[6][7]
Falls HTTP-Server-Push nicht anwendbar ist, kann als Alternative long Polling verwendet werden.
Push-Benachrichtigung
Eine Push-Benachrichtigung ist eine erzwungene Nachricht. Sie wird vom Backend-Server oder einer Anwendung an die Benutzerschnittstelle „gepusht“, z. B. (aber nicht beschränkt auf) mobile Anwendungen und Desktop-Anwendungen. Push-Benachrichtigungen wurden von Apple erstmals 2009 eingeführt.[8]
2010 veröffentlichte Google seinen eigenen Dienst, Google Cloud to Device Messaging. Inzwischen wurde er durch Google Cloud Messaging und dann Firebase Cloud Messaging ersetzt.[9]
Im November 2015 kündigte Microsoft an, dass der Windows-Benachrichtigungsdienst erweitert wird, um die Architektur der Windows-Plattform zu nutzen, sodass Push-Benachrichtigungen an Windows 10, Windows 10 Mobile, Xbox sowie an andere unterstützte Plattformen mit universellen API-Aufrufen und POST-Anfragen gesendet werden können.[10]
Push-Benachrichtigungen werden hauptsächlich in 2 Ansätze unterteilt, lokale Benachrichtigungen und entfernte Benachrichtigungen.[11]
- Bei lokalen Benachrichtigungen plant die Anwendung die Benachrichtigung mit dem Betriebssystem des lokalen Geräts oder setzt sie alternativ als Timer in der Anwendung selbst, wenn sie kontinuierlich im Hintergrund laufen kann. Wenn die geplante Zeit des Ereignisses erreicht ist oder die programmierte Bedingung des Ereignisses erfüllt ist, wird die Meldung in der Benutzeroberfläche der Anwendung angezeigt.
- Remote-Benachrichtigungen werden über einen Remote-Server abgewickelt. In diesem Szenario muss die Client-Anwendung auf dem Server mit einem eindeutigen Schlüssel (z. B. einer UUID) registriert werden. Der Server sendet dann die Nachricht gegen den eindeutigen Schlüssel ab, um die Nachricht über ein vereinbartes Client-Server-Protokoll wie HTTP oder XMPP an die Client-Anwendung zu übermitteln und der Client zeigt die empfangene Nachricht an. Wenn die Push-Benachrichtigung eintrifft, kann sie kurze Benachrichtigungen und Nachrichten übermitteln, Badges auf Anwendungssymbole setzen, die Benachrichtigungs-LED blinken oder kontinuierlich leuchten lassen oder Warntöne abspielen, um die Aufmerksamkeit der Benutzer zu erregen.[12] Push-Benachrichtigungen werden von Anwendungen in der Regel dazu verwendet, die Aufmerksamkeit der Benutzer auf Informationen zu lenken. Der Inhalt der Meldungen kann in die folgenden Beispielkategorien eingeteilt werden:
- Chat-Nachrichten, z. B.: Nachrichten aus dem Facebook-Messenger, die von anderen Benutzern gesendet werden.[13]
- Anbieter-Sonderangebote, z. B.: Ein Unternehmen möchte seine Angebote den Kunden gegenüber bewerben.
- Erinnerung an Ereignisse, z. B.: Eine Anwendung kann es dem Nutzer ermöglichen, sich zu einem bestimmten Zeitpunkt erinnern zu lassen.
- Abonnierte Themen ändern sich, z. B.: Benutzer möchten vielleicht Aktualisierungen bezüglich des Wetters an ihrem Standort erhalten oder eine Webseite überwachen, um Änderungen zu verfolgen
Echtzeit-Push-Benachrichtigungen können Datenschutzprobleme aufwerfen, da sie dazu verwendet werden können, eine Verbindung zwischen virtuellen Identitäten von Social-Network-Pseudonymen an die realen Identitäten der Smartphone-Besitzer herzustellen.
Literatur
Frank Buschmann, Regine Meunier, Hans Rohnert, Peter Sommerlad, Michael Stal: Pattern-oriented Software Architecture. John Wiley & Sons, Chichester/ New York 1996, ISBN 0-471-95869-7.
Einzelnachweise
- ↑ Elio Damaggio, Martin Thomson, Brian Raymor: Generic Event Delivery Using HTTP Push. Abgerufen am 1. Mai 2020 (englisch).
- ↑ Web Notifications. Abgerufen am 1. Mai 2020.
- ↑ Push API. Abgerufen am 1. Mai 2020.
- ↑ CGI Programming on the World Wide Web. Chapter 6 – 6.6 Animation. O'Reilly & Associates, abgerufen am 1. Mai 2020.
- ↑ 249132 - chromium - An open-source project to help move the web forward. - Monorail. Abgerufen am 1. Mai 2020.
- ↑ The Opera Blog - News | Opera. Abgerufen am 1. Mai 2020 (amerikanisches Englisch).
- ↑ Opera Watch - Opera takes the lead with AJAX support among browsers: More efficient streaming. (Nicht mehr online verfügbar.) 18. März 2007, archiviert vom Original am 18. März 2007; abgerufen am 1. Mai 2020. Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.
- ↑ iPhone push notification service for devs announced. Abgerufen am 1. Mai 2020 (englisch).
- ↑ Google Cloud Messaging for Android (GCM) Unveiled, to Replace C2DM Framework. Abgerufen am 1. Mai 2020.
- ↑ GrantMeStrength: Windows Push Notification Services (WNS) overview - UWP applications. Abgerufen am 1. Mai 2020 (amerikanisches Englisch).
- ↑ Local and Remote Notification Programming Guide: Local and Remote Notifications Overview. Abgerufen am 1. Mai 2020.
- ↑ Information about Push Notifications for iOS and Android. 19. Februar 2019, abgerufen am 1. Mai 2020 (amerikanisches Englisch).
- ↑ Wie kann ich meine mobilen Push-Benachrichtigungen von Facebook anpassen? | Facebook-Hilfebereich | Facebook. Abgerufen am 1. Mai 2020.