Kann Anbieter eines (REST) Webservice seine Konsumenten automatisch benachrichtigen?

MrX

Mitglied
Hallo zusammen,
ich beschäftige mich derzeit mit (REST) Webservices und habe eine Frage, die ich aus Diskussion mit Kollegen und Internetrecherche bisher nicht beantworten konnte:
Funktioniert ein Webservice grundsätzlich so, dass der Nutzer eines Webservice aktiv beim Service-Anbieter durch Aufruf entsprechender URL nachfragen muss, um den Service zu nutzen, oder ist es auch möglich, dass ein Webservice dessen Nutzer (z.B. durch Registrierung am WS) automatisch mit Daten versorgt, ohne dass diese aktiv nachfragen?
In der aktuellen Literatur finde ich nur Beispiele bzgl. aktivem Nachfragen des Konsumenten beim Anbieter.

Hintergrund:
Es sollen Datensätze vom Webservice zum Abruf angeboten werden, die Konsumenten sollen aber nicht aktiv danach "fragen", sondern sich am Webservice "registrieren" (?) und somit über neue/update/delete Datensätze automatisch informiert werden.

Wenn es für meine Frage ein Beispiel, Link oder sonstiges Infomaterial gibt, danke schon einmal für eure Hilfe!
 
Jetzt überleg doch einmal. Wie soll er denn informiert werden? Soll der Postbote ihm ein Paket bringen? Ich glaube nicht. Er soll sich die Daten in einer App, Programm oder was auch immer ansehen. Was muss er also machen? Er muss diese App starten. Was macht dann dieser App? Sie schaut nach ob es was neues gibt. Du brauchst also die andere Richtung gar nicht.

Ansonsten sind Notifications dafür gedacht den User darauf aufmerksam zu machen das es etwas neues gibt. Diese schicken aber eben nur die Info "Es gibt was neues in einem Satz" und dann muss der User immer noch die App öffnen und sich die Daten ansehen.

Gruß

Claus
 
Hi,
Jetzt überleg doch einmal. Wie soll er denn informiert werden? Soll der Postbote ihm ein Paket bringen? Ich glaube nicht.
=> Überflüssig

Er soll sich die Daten in einer App, Programm oder was auch immer ansehen. Was muss er also machen? Er muss diese App starten. Was macht dann dieser App? Sie schaut nach ob es was neues gibt. Du brauchst also die andere Richtung gar nicht.
Dass man "die andere Richtung nicht braucht" hängt wohl eher stark vom Szenario ab. Wenn der Serviceanbieter nur alle paar Stunden einen neuen Datensatz zur Verfügung stellt, der Nutzer aber sekündlich beim Anbieter nachfragt, um zeitnah die Daten konsumieren zu können, ist dies aus Performance-Gründen sicherlich nicht ratsam?

Deswegen hört sich der Hinweis bzgl. "Notifications" aus meiner Sicht gut an:

Ansonsten sind Notifications dafür gedacht den User darauf aufmerksam zu machen das es etwas neues gibt. Diese schicken aber eben nur die Info "Es gibt was neues in einem Satz" und dann muss der User immer noch die App öffnen und sich die Daten ansehen.

Bzgl. Notifications habe ich in der Tat jetzt noch nichts gelesen, es stellt sich aber auch hier dann wieder für mich deine Eingangsfrage, wie die Notification an den-, bzw. die Konsumenten gesendet werden? Ich vermute nicht per Post. WS-Notifications (https://de.wikipedia.org/wiki/WS-Notification) ist hier die Basistechnologie?

Den Ablauf stelle ich mir dann wie folgt vor:
  • Neuer Datensatz X wird durch App. A erzeugt.
  • App. A weist Webservice an, eine Notification ("Neuer Datensatz X") an die registrierten Konsumenten zu senden (PUT).
  • Konsument(en) empfängt/empfangen Notification und sendet/senden an WS eine Anfrage, um den Datensatz X anzufragen (GET).
Szenarien für POST (Update) und DELETE je nach Bedarf.

Wäre das in etwa der Weg, so etwas umsetzen zu können?

Grüße...
 
Ja, ziemlich genau das ist der Weg - man muss es halt nur noch technisch umsetzen 😉

Möglichkeiten gibts einige.
zB eine dauerhafte TCP-Verbindung zum Server offen halten, oder die Clients halten selbst einen Server offen und registrieren sich als Hook, etc
 
Ja, ziemlich genau das ist der Weg - man muss es halt nur noch technisch umsetzen 😉

Möglichkeiten gibts einige.
zB eine dauerhafte TCP-Verbindung zum Server offen halten, oder die Clients halten selbst einen Server offen und registrieren sich als Hook, etc

Und warum nicht einfach einen der tausend Push notification Anbieter nehmen? Bei Apple ist das sogar integriert.
 
Ein Webservice ist eine ziemlich einseitige Geschichte. Der Client schickt einen Request und der Webservice die Response. Fuer deine Anforderung musst du mehrere Technologien kombinieren. Im Webbereich gibt es z.B. Websockets. Da baut der Client eine Verbindung auf, die dann vom Server gehalten wird. Wenn's was Neues gibt, kann der Server ein Update senden. Eine andere Moeglichkeit waere einen Webservice auf beiden Seiten einzurichten. In so einem Szenario kann der Client sich beim Server registrieren, indem er eine URL sendet. Der Server kann dann Neuigkeiten an diese URL senden. Ist sozusagen eine Server-Server Kommunication via Callback.

https://en.wikipedia.org/wiki/WebSocket
https://en.wikipedia.org/wiki/Observer_pattern
http://soapatterns.org/design_patterns/service_callback

Cheers,
Andy
 

Zurück
Oben