我想了解如何使用SOAP或XML-RPC爲我的產品創建遠程開放API。 問題是,我的API的一部分將要求我能夠將事件從服務器推送到客戶端 - 我需要能夠「發送回調」,而不僅僅是「調用函數」作爲我的API的一部分。 在SOAP或XML-RPC中有沒有一種好的方法可以做到這一點?在XML-RPC或SOAP中實現回調
6
A
回答
7
有兩種方法可以在RPC系統中執行通知:推式模型和拉式模型。在拉模型中,客戶端將定期查詢服務器是否有任何通知可用。服務器需要存儲它們直到客戶端獲取它們(或直到它們到期)。作爲一種變體,客戶端可能會阻塞RPC調用,直到下一個事件變爲可用爲止,然後立即返回。這對於CORBA來說工作得很好,但對於SOAP或XML-RPC不能很好地工作,因爲HTTP實現通常不準備將連接保持打開幾個小時。
在推模式中,生產者將調用消費者的RPC,使消費者成爲服務器。這對於SOAP或XML-RPC來說效果不佳,因爲客戶端通常不準備承擔服務器角色,並且防火牆可能阻止回調通過。所以定期拉動是最現實的方法。
P.S.你可能已經注意到我沒有遵循你的術語:你不能推事件。事件是發生的事情。您只能推送通知,這是事件發生的信息。
0
你可以用WCF來做到這一點。但是,我不知道您是否可以以可互操作的方式進行操作。看看Duplex Services。
1
好的,最終做出的決定是將回調處理爲不會立即返回的API。
基本上,將發送RPC-XML請求,要求在事件的給定列表上通知。我們的服務器會一直等到發生其中一個事件,然後在設定的時間量之後將其作爲響應或超時進行報告,通知沒有任何事情發生。調用者將能夠嘗試再次發送請求以繼續等待。
相關問題
- 1. 實現XMLRPC
- 2. jira SOAP和XMLRPC
- 3. 在opa中實現回調
- 4. 在Qt中實現回調
- 5. protobuffers實現中的回調 - ?
- 6. 在JavaScript實現回調
- 7. Cython - 實現回調
- 8. FakeItEasy回調實現
- 9. 如何在C++中實現回調?
- 10. 無法在Android中實現回調
- 11. 在Android中實現方法回調
- 12. 如何在JavaScript中實現before_filter回調?
- 13. 在Delphi中實現DLL回調
- 14. 如何在Angular4中實現ngFor回調?
- 15. 在WP7中實現回調C#
- 16. 使用Runnable在Java中實現回調
- 17. 在ASP.NET中實現JavaScript回調?
- 18. 如何在Java中實現回調
- 19. 在Objective-C中實現C回調
- 20. 在時間軸中實現回調
- 21. 在MVC中實現WCF回調
- 22. 如何在Ruby中實現「回調」?
- 23. 在servlet實現的SOAP Web服務中返回wsdl
- 24. 如何實現SOAP?
- 25. 在SOAP客戶端中實現會話
- 26. 在Eclipse中使用OSGi實現SOAP
- 27. 來自jQuery或JavaScript的XMLRPC調用
- 28. 微軟訪問和SOAP,XMLRPC等
- 29. ActiveMessaging,ActiveResources或Ruby XMLRPC
- 30. GreenDao如何實現回調
這意味着基本上我會留下定期更新,這在資源方面有些浪費。 感謝您的回答 – 2009-08-21 04:10:15