Ich versuche zu verstehen, wie ich SOAP oder XML-RPC verwenden kann, um eine Remote-API für mein Produkt zu erstellen. Problem ist, dass ein Teil meiner API erfordert, dass ich Ereignisse von meinem Server auf den Client übertragen kann - ich muss in der Lage sein, einen Rückruf zu senden und nicht nur eine Funktion als Teil meiner API aufzurufen . Gibt es eine gute Möglichkeit, das in SOAP oder XML-RPC zu tun?Implementieren eines Rückrufs in XML-RPC oder SOAP
Antwort
Es gibt zwei Möglichkeiten, Benachrichtigungen in einem RPC-System auszuführen: das Push-Modell und das Pull-Modell. Im Pull-Modell fragt der Client den Server regelmäßig ab, ob Benachrichtigungen verfügbar sind. Der Server muss sie speichern, bis der Client sie abruft (oder bis sie ablaufen). Als eine Variante kann der Client einen blockierenden RPC-Aufruf haben, der blockiert, bis das nächste Ereignis verfügbar wird, und dann sofort zurückkehrt. Das funktioniert gut mit CORBA, aber funktioniert nicht so gut mit SOAP oder XML-RPC, da die HTTP-Implementierungen in der Regel nicht bereit sind, eine Verbindung für Stunden offen zu lassen.
Im Push-Modell ruft der Producer einen RPC auf dem Consumer auf und macht den Consumer zu einem Server. Das funktioniert auch nicht so gut mit SOAP oder XML-RPC, da der Client normalerweise nicht bereit ist, die Serverrolle zu übernehmen, und Firewalls verhindern möglicherweise, dass der Rückruf durchkommt. Der periodische Zug ist also der realistischste Ansatz.
P.S. Sie haben vielleicht bemerkt, dass ich Ihrer Terminologie nicht gefolgt bin: Sie können Ereignisse nicht drücken. Ein Ereignis ist etwas, was passiert. Sie können nur auf die Benachrichtigung drücken, bei der es sich um eine Information handelt, dass ein Ereignis stattgefunden hat.
Sie können dies mit WCF tun. Ich weiß jedoch nicht, ob Sie das interoperabel machen können. Schauen Sie in Duplex Services.
Ok, schließlich wurde die Entscheidung getroffen, Callbacks als APIs zu behandeln, die nicht sofort zurückkehren.
Grundsätzlich wird eine RPC-XML-Anfrage gesendet, in der eine Benachrichtigung über eine bestimmte Ereignisliste angefordert wird. Unser Server würde warten, bis eines der Ereignisse eintritt, und dann nach einer bestimmten Zeit als Antwort oder Timeout zurückmelden, um mitzuteilen, dass nichts passiert ist. Der Anrufer kann versuchen, die Anfrage erneut zu senden, um weiter zu warten.
- 1. XMLRPC Aufruf SOAP müssen Antwort zurückgeben statt Absturz/
- 2. Erstellen eines Rückrufs für eine Klassenmethode
- 3. Abbrechen einer Q-Versprechen in Node.js beim Ausführen eines Rückrufs?
- 4. Web-Datenbank oder SOAP?
- 5. Die beste Methode zum Implementieren von try catch in php4
- 6. Abrufen des Facebook-Benutzerzugriffstoken-Rückrufs
- 7. Erstellen eines "benutzerdefinierten" Soap-Clients in Flex
- 8. SOAP-Bibliotheken, die WS-ReliableMessaging implementieren
- 9. .NET-Protokoll oder Aufruf/Antwort eines SOAP WebService anzeigen
- 10. php xmlrpc lesen
- 11. C++ Bibliothek für XMLRPC
- 12. Implementieren eines Sperrungs- oder Strafsystems für Benutzer in ASP.NET MVC
- 13. Wie XMLRPC :: Client-Authentifizierung
- 14. PHP xmlrpc Erweiterung und MAMP
- 15. Implementieren eines Cache
- 16. Promise-Abweisung funktioniert nicht innerhalb des Rückrufs
- 17. DotNetOpenAuth.WebServerClient.XSRF-Sitzung ändert sich während des Rückrufs
- 18. Dynamische Funktionsaufrufe in Python mit XMLRPC
- 19. Senden eines Soap-Headers mit einer WSDL-Soap-Anfrage mit PHP
- 20. Wann/wo wir XMLRPC verwenden
- 21. Python XMLRPC mit gleichzeitigen Anfragen
- 22. Implementieren eines einteilbar Schnittstelle
- 23. Zend SOAP Server - Implementieren einer bereits vorhandenen WSDL zur Unterstützung eines Clients
- 24. Wie Implementieren eines zusätzlichen Parameters in Grails Paginierung implementieren?
- 25. Obj-C Ringpufferobjekt, Implementieren eines?
- 26. Implementieren eines interaktiven PDF in iOS
- 27. SOAP In C++ CGI
- 28. Implementieren eines periodisch aktualisierenden Cache in Java
- 29. Suche nach Many2One Feld odoo PHP XMLRPC
- 30. Implementieren eines Multi-State-Planers
Dies bedeutet, dass im Wesentlichen ich bin mit regelmäßigen Updates, die in Bezug auf Ressourcen etwas verschwenderisch ist links. Danke für die Antwort –