Webhooks vs. Polling
Dieser Artikel vergleicht Webhooks mit Polling, analysiert die Vor- und Nachteile beider Ansätze und diskutiert, wann welcher verwendet werden sollte.
Wenn wir Web-Apps entwickeln, haben wir oft mehrere Dienste. In den meisten Fällen bestehen sie aus vielen verschiedenen Webdiensten, die zusammenarbeiten. In dieser Art von Web-App, die aus mehreren Diensten besteht, muss jeder Entwickler berücksichtigen, wie Daten übertragen werden sollen.
Wenn es darum geht, dieses Problem zu lösen, haben sich zwei Ansätze durchgesetzt: Webhooks und Polling. Jede Methode bietet eine einzigartige Möglichkeit, Daten von einem Dienst zum anderen abzurufen und zu übermitteln. Die Wahl der einen Methode anstelle der anderen kann erhebliche Auswirkungen auf die Effizienz deiner Anwendung, die Echtzeitfähigkeiten und das gesamte Benutzererlebnis haben. Dieser Artikel vergleicht Webhooks mit Polling, analysiert die Vor- und Nachteile beider Ansätze und diskutiert, wann welcher verwendet werden sollte.
Was ist Polling?
Polling (oft als API-Polling bezeichnet) ist der Prozess, bei dem ein Client in regelmäßigen Abständen (sagen wir, alle x Sekunden) spezifische Daten anfordert und der Server mit den angeforderten Daten antwortet.
Man kann es sich so vorstellen, dass man in regelmäßigen Abständen fragt: „Gibt es neue Daten?”. Polling kann über HTTP-Anfragen implementiert werden, wobei der Client eine GET-Anfrage an den Server sendet und der Server mit den angeforderten Daten antwortet.
Stell dir vor, John hat ein AI-Dokumentationsprodukt namens Doc.AI entwickelt und verwendet Logto für das Benutzeridentitätsmanagement.
Frank ist ein Benutzer, der sich für Johns Produkt angemeldet und ein eigenes persönliches Konto erstellt hat. Eines Tages tritt Frank einem von seinem Freund David erstellten Workspace bei. In diesem Moment möchte John Frank eine E-Mail senden, um ihn zu bitten, die Multi-Faktor-Authentifizierung (MFA) zu aktivieren, um die Sicherheit seines Kontos zu erhöhen, bevor John ihm Zugang zu zusätzlichen sensiblen Ressourcen gewährt.
Johns Produkt-Backend muss ständig relevante APIs abfragen, um zu wissen, wann Frank Davids Workspace beitritt.
Was ist eine Webhook?
Ein Webhook (d. h. „HTTP-Callback”) ist ein Mechanismus für die Echtzeit-Datenkommunikation, bei dem ein Server einem Client Daten sendet, wenn ein Ereignis eintritt. Anstatt dass ein Client Daten anfordert, sendet ein Webhook die Daten jedes Mal an den Client, wenn es ein Update gibt.
Man kann es sich wie ein Posteingang für deine Anwendung vorstellen. Wenn bestimmte Ereignisse auftreten - zum Beispiel meldet sich ein neuer Benutzer an oder eine Zahlung wird durchgeführt - hinterlässt ein Webhook eine Nachricht im Posteingang, um deine Anwendung darüber zu informieren, was vor sich geht.
Lass uns mit unserem Doc.AI-Beispiel fortfahren, das wir bereits verwendet haben, um Polling zu erklären. So würde das Sequenzdiagramm aussehen, wenn wir Webhooks verwenden, um herauszufinden, ob Frank Davids Workspace beigetreten ist:
Wichtige Unterschiede
- Ursprungsanfrage Polling wird vom Client initiiert (in unserem Beispiel ist Doc.AI der Client und Logto der Server) und der Webhook wird durch Ereignisse ausgelöst und vom Server gestartet.
- Ressourcenverbrauch Polling ist eine Verschwendung von Rechenressourcen, da es in regelmäßigen Abständen Anfragen sendet, was zu einer geringen Effizienz der Rechenressourcen führt. Webhook hingegen wird vom Server "on demand" initiiert. Im Vergleich zum Polling verbrauchen sowohl der Client als auch der Server deutlich weniger Ressourcen.
- Timing Polling wird vom Client initiiert, sodass der Client das Timing der Datenakquisition steuern kann; Webhook hingegen wird vom Server initiiert, und der Client kann nur Daten empfangen und verarbeiten. Aufgrund der unterschiedlichen Mechanismen der beiden kann Webhook jedoch eine Echtzeit-Datensynchronisation erreichen, was mit Polling nicht möglich ist.
Welche Methode sollte ich wählen?
Basierend auf den Mechanismen von Polling und Webhooks wird in der Regel empfohlen, Polling nur dann zu wählen, wenn die Daten häufig aktualisiert werden und die Echtzeitanforderungen an die Daten nicht strikt sind. In anderen Fällen wäre Webhook die bessere Wahl.
Wenn du dich jedoch für die Verwendung von Webhooks entscheidest, müssen Entwickler die folgenden Punkte beachten:
- Wenn das System stark von den erfassten Daten abhängt, muss ein Backup-Plan zur Datenerfassung in Betracht gezogen werden, wenn der Webhook fehlschlägt und Daten nicht synchronisiert werden können, einschließlich, aber nicht beschränkt auf Polling oder Anforderungen an den Webhook, einen erneuten Versandmechanismus zu haben, usw.
- Im Endpunkt auf der Clientseite, der Webhooks empfängt, sollten API-Secret- und Inhaltssignaturprüfungen durchgeführt werden, um zu verhindern, dass Hacker den Client angreifen, indem sie einen gefälschten Webhook verwenden.
- Da der Webhook möglicherweise doppelte Anfragen sendet, ist in diesem Fall eine entsprechende Verarbeitung erforderlich, um Datenverdopplung und -inkonsistenzen zu verhindern.
Logto, als eine äußerst beliebte Benutzeridentifikationslösung, bietet zahlreiche Webhook-Szenarien und hervorragende Sicherheit. Wenn du Logto als Identitätssystem für deine Produkte verwendest, kann es leicht integriert werden und passt zu verschiedenen Anwendungsfällen.