Push vs Poll, wenn eine große Verzögerung (Stunden) akzeptabel ist

10

Heutzutage scheint es normal zu sein, dass Abfragen eine schlechte Praxis sind und Pushing der richtige Weg ist, wenn mobile Anwendungen entwickelt werden, bei denen ständig Daten von einem Remote-Server empfangen werden müssen.

Alle großen mobilen Geschäfte bieten ihre Version eines Push-Benachrichtigungsdienstes an:

Ich frage mich jedoch, inwieweit diese Annahme gültig ist. Ich meine, wenn ich eine Anwendung habe, die einen Remote-Server nur ein paar Mal am Tag abfragt und an die "Benachrichtigungen" nicht sofort zugestellt werden müssen (eine große Verzögerung ist akzeptabel), wäre dies eine gute Entscheidung Daten abfragen, anstatt sie zu pushen?

Danke im Voraus!

Thomas CG de Vilhena
quelle
1
Ich bin mit den mobilen Push-Mechanismen nicht vertraut genug, um dies wirklich abzuwägen, aber ich frage mich, ob die Verwendung des Push-Mechanismus einige Kopfschmerzen ersparen könnte, beispielsweise im Hinblick auf den Umgang mit Ausschalt- / Schlafszenarien. Wenn dies nur eine Desktop- / Webanwendung wäre, würde ich sagen, dass das Abrufen in Ordnung ist. Beim Pushing wird normalerweise auch eine Verbindung auf Ihrem Webserver offen gehalten. Dies ist ein weiterer Vorteil des Abrufs in einem Desktop / Browser. Da es sich jedoch um eine mobile Anwendung handelt und Sie diese alternativen Push-Mechanismen verwenden können, kann die Antwort meiner Meinung nach anders ausfallen.
Dr. Wily Lehrling

Antworten:

14

Abfragen sind immer dann akzeptabel, wenn Echtzeit keine Notwendigkeit ist. Was Sie sich fragen müssen, ist, warum Sie eines anstelle des anderen verwenden würden?

Der Zweck eines Push-Dienstes sind ein paar Dinge; Es kann erheblich weniger Verkehr für Sie sein, wenn es sich bei Ihren Pushs um Broadcasts handelt und ein Drittanbieter die Broadcast-Übertragung durchführt. Auf diese Weise können Sie eine Nachricht senden und Tausende empfangen. Wie Sie jedoch bemerken, ist der größte Segen eines Push-Dienstes die Echtzeit, die es ermöglicht, dass sofortige Aktualisierungen Ihre Kunden erreichen. Wenn Sie jedoch Pushs ausführen, möchten Sie wirklich nie große Datenmengen pushen, wenn Sie senden, und Sie sind auch dem Push-Dienst eines Drittanbieters ausgeliefert, den Sie verwenden (falls Sie einen verwenden).

Der Zweck einer Umfrage besteht darin, regelmäßig nach Datenunterschieden zu suchen, wobei der Aktualisierungszeitraum bis zu einem bestimmten Zeitraum einen akzeptablen SLA für Ungenauigkeiten aufweisen kann. Bei einer Umfrage müssen alle Ihre Clients die Daten regelmäßig anfordern. Dies bedeutet, dass für jeden laufenden Client eine Verbindung angefordert wird, und dass ein Live-Dienst erforderlich ist, der diese Daten genau überwachen kann, um sie den Pollern zur Verfügung zu stellen. Das Bereitstellen genauer Daten bedeutet eine gewisse Datenpersistenz, die Festplatten- und Wartungszeit in Anspruch nimmt.

Daraus können wir ersehen, dass Sie keine Bedenken haben, wenn Sie Bedenken hinsichtlich des Netzwerkverkehrs oder der Wartung eines Dienstes haben (was bedeutet, dass möglicherweise Anforderungen authentifiziert / autorisiert, protokolliert werden, die Speicherplatz beanspruchen, alle normalen Anforderungen für die Wartung eines Dienstes). Ich möchte Clients nicht zur Abfrage zwingen. Wenn der Anwendungsfall jedoch die Übertragung eines besonders großen Datensatzes erfordert oder Sie nicht an die API eines Drittanbieters gebunden sein können, die sich zeitlich ändern kann, sowie deren SLA oder Gebühren, kann trotz der Wartung ein selbst entwickeltes Abfragesystem angewendet werden Der Overhead kann erheblich höher sein. Alternativ können Sie den Dienst bereits ausführen und die Daten so beibehalten haben, dass die Abfrage eine leichte Ergänzung zu der bereits vorhandenen Infrastruktur darstellt, was die Abfrage wünschenswerter macht.

Obwohl Sie zum zentralen Punkt, den Sie machen, richtig sind; Wenn Echtzeit erforderlich ist , reicht die Abfrage nicht aus. Wenn dies nicht der Fall ist, müssen Sie nur berechnen, wie regelmäßig die Daten überprüft werden können, multipliziert mit Ihrem Kundenstamm multipliziert mit Ihrer Datensatzgröße, um zu entscheiden, ob sich die Netzwerkkosten lohnen oder ob es sich um einen Push-Service handelt Wäre besser, wenn Sie immer nur ein Änderungsereignis pushen können, mit dem sie den großen Datensatz in einem sekundären Schritt anfordern können (obwohl die Atomizität dieser Schritte abhängig von der Kritikalität der Daten möglicherweise vorsichtig sein muss).

Jimmy Hoffa
quelle
3

Die Umfrage sollte in Ihrem Fall in Ordnung sein. Und Sie müssen sich nicht in ein anderes System (oder mehrere Systeme für mehrere Plattformen) integrieren.

Gerätespezifikationen können jedoch ein Problem sein. Können Sie zuverlässig abfragen, wenn die App nicht vorne ist und sich auf dem Gerät befindet? (kann ein Problem für Sie sein oder auch nicht). Ihre Fähigkeit dazu hängt möglicherweise von der Technologie ab, die Sie für die Entwicklung der App verwenden.

GroßmeisterB
quelle
Ich plane, integrierte Timer zu verwenden, um sicherzustellen, dass die App den Server abfragt, auch wenn er nicht "aktiv" ist. Ich weiß, wie es auf Android geht, und ich hoffe, dass iPhones und WindowsPhones die gleiche Funktionalität bieten;)
Thomas CG de Vilhena
2

Na sicher. Es ist auch einfacher (Vorsicht vor Pull-Spikes, wenn alle nach dem gleichen Zeitplan ziehen).

Trotzdem würde ich die Annahme in Frage stellen, dass "eine große Verzögerung akzeptabel ist", wenn man die Erwartungen der Mobilfunknutzer berücksichtigt. ('Karten werden nicht in Echtzeit aktualisiert! Inakzeptabel!' - oder - 'Ich weiß, dass es der Wetterdienst ist, aber ich werde diese Aktualisierungstaste alle fünf Sekunden drücken, bis die Vorhersage für morgen sonnig wird!')

ptyx
quelle
Ein guter Punkt, um zu verhindern, dass alle gleichzeitig abstimmen. Ich denke, das zufällige Einstellen von Timern reicht aus!
Thomas CG de Vilhena