Sto cercando di capire come utilizzare SOAP o XML-RPC per creare un'API remota e aperta per il mio prodotto. Problema, parte della mia API mi richiederà di essere in grado di ottenere eventi trasferiti dal mio server al client - Dovrò essere in grado di "inviare una richiamata" e non solo "chiamare una funzione" come parte della mia API . C'è un buon modo per farlo in SOAP o XML-RPC?Implementazione di una richiamata in XML-RPC o SOAP
risposta
Esistono due modi per effettuare le notifiche in un sistema RPC: il modello push e il modello pull. Nel modello pull, il client interrogherà periodicamente il server se sono disponibili eventuali notifiche. Il server deve memorizzarli finché il client non li recupera (o finché non scadono). Come variante, il client può avere una chiamata RPC bloccante che blocca fino a quando il prossimo evento non diventa disponibile, e quindi ritorna immediatamente. Funziona bene con CORBA, ma non funziona così bene con SOAP o XML-RPC, poiché le implementazioni HTTP non sono in genere pronte a lasciare una connessione aperta per ore.
Nel modello push, il produttore invocherà un RPC sul consumatore, rendendo il consumatore un server. Ciò non funziona egregiamente con SOAP o XML-RPC, poiché il client non è in genere preparato a svolgere il ruolo del server e i firewall potrebbero impedire il richiamo della callback. Quindi l'attrazione periodica riguarda l'approccio più realistico.
P.S. potresti aver notato che non seguivo la tua terminologia: non puoi spingere eventi . Un evento è qualcosa che accade. Puoi solo inviare la notifica, che è un'informazione che un evento è accaduto.
È possibile farlo con WCF. Tuttavia, non so se puoi farlo in modo interoperabile. Esamina Duplex Services.
Ok, alla fine la decisione presa era di trattare i callback come API che non ritornano immediatamente.
Fondamentalmente, verrà inviata una richiesta RPC-XML che richiede di essere notificata in un determinato elenco di eventi. Il nostro server attenderà fino a quando uno degli eventi si verificherà e quindi lo riporterà come risposta o timeout dopo un certo periodo di tempo, notificando che non è successo nulla. Il chiamante sarà in grado di provare a inviare la richiesta nuovamente per continuare ad attendere.
- 1. Implementazione della richiamata dal servizio all'attività
- 2. come utilizzare XMLRPC in C#
- 3. Java di Apache XMLRPC biblioteca
- 4. C++ Library per XMLRPC
- 5. URL di richiamata di Twitter O-Auth
- 6. Chiamare una richiamata in javascript
- 7. DropDownListPer richiamata o istruzione if
- 8. guasti SOAP o oggetto risultati?
- 9. SOAP client in .NET - riferimenti o esempi?
- 10. Python XMLRPC con richieste simultanee
- 11. Implementazione di missaggio o tratto in AS3?
- 12. Richiamata richiamata thread
- 13. Richiamata con interfacce o oggetti funzione?
- 14. Scrittura di una classe che accetta una richiamata in Python?
- 15. Quando utilizzare una funzione di richiamata?
- 16. Come inviare una richiesta SOAP in PHP
- 17. Implementazione di una barra delle azioni: ABSherlock o ABCompat?
- 18. Osservabile per una richiamata in Rx
- 19. Implementazione di una HashMap
- 20. Come implementare una richiamata in PHP?
- 21. SOAP 1.2 restituisce una cattiva richiesta mentre SOAP 1.1 funziona
- 22. TPL Come eseguire una "richiamata"
- 23. Esiste una richiamata per History.pushstate?
- 24. Come effettuare una chiamata SOAP in Go?
- 25. Implementazione di una LinkedHashMap simultanea
- 26. Implementazione della struttura "O" in Swift
- 27. Python SOAP Client - usa SUDS o qualcos'altro?
- 28. Quale è meglio PHP SOAP o NuSOAP?
- 29. Integrazione di XMLRPC/Web Services con Core Data
- 30. Implementazione di una query ricorsive in SQL
Ciò significa che in sostanza sono rimasto con aggiornamenti periodici, il che è un po 'dispendioso in termini di risorse. Grazie per la risposta –