[英]Performance of SOAP vs. XML-RPC or REST
關於使用XML-RPC或REST的解決方案的簡單性的論點很容易理解,很難與之爭論。
我經常也聽到過這樣的論點,即SOAP增加的開銷可能會顯着影響已使用的帶寬甚至延遲。 我希望看到量化影響的測試結果。 有誰知道這些信息的良好來源?
作為協議的REST不定義任何形式的消息信封,而SOAP確實具有此標准。
因此,嘗試和比較兩者有點簡單,它們是蘋果到橙子。
也就是說,SOAP信封(減去數據)只有幾k,因此如果您通過SOAP和REST檢索序列化對象,速度應該沒有任何明顯的差異。
SOAP和使用XML的任何其他協議通常會使您的消息膨脹很多 - 根據上下文,這可能是也可能不是問題。
像JSON這樣的東西會更緊湊,可能更快地序列化/反序列化 - 但是不要因為這個原因而專門使用它。 做任何你覺得有意義的事情,如果這是一個問題就改變它。
通常使用HTTP的任何東西(除非它重用HTTP 1.1 keepalive連接,許多實現都沒有)為每個請求啟動一個新的TCP連接; 這非常糟糕,特別是在高延遲鏈接上。 HTTPS更糟糕。 如果您有一個發送者到一個接收者的大量短請求,請考慮如何將這個開銷拿出來。
對任何類型的RPC(無論是SOAP還是其他)使用HTTP總是會產生這種開銷。 其他RPC協議通常允許您保持連接打開。
有一些研究已經完成,你可能會發現信息。 請參閱以下內容:
MSDN論壇上還有一個(有點過時的)有趣的性能對話。
簡而言之 - 大多數這些來源似乎都同意SOAP和REST與通用數據的性能大致相同。 然而,一些結果似乎表明,對於二進制數據,REST實際上可能性能較差。 請參閱我鏈接的論壇中的鏈接以獲取更多詳細信息。
如果您正在獲取大量基於SOAP操作的INFORMATION(get *類型的調用),那么目前無法緩存它們。 但是,如果您要使用REST實現這些相同的操作,則可能會緩存數據(取決於您的業務環境),如上所述。 因為SOAP使用POST進行操作,所以它無法在服務器端緩存信息。
SOAP肯定更慢。 有效負載明顯較大,組裝,傳輸,解析,驗證和處理速度較慢。
我不知道基准測試問題的任何答案,但是,我對SOAP格式的了解是肯定的,它確實有開銷,但是每個請求的開銷不會增加:如果你有一個元素被發送到Web服務,你有開銷+一個元素構造,如果你有1000個元素發送到Web服務,你有開銷+ 1000元素構造。 在為特定操作格式化XML請求時發生開銷,但請求中的每個單獨的參數元素的格式都相同。
如果您堅持使用可重復的,短暫的數據突發(例如,500個元素),速度應該是可以接受的。
我想這里的主要問題是如何比較RPC和SOAP。
他們都通過使用你操作的存根對象和你得到的原始/復雜數據類型來提供相同的通信抽象方法,而不知道如何在下面處理這一切。
我總是喜歡(JSON-)RPC因為
雖然有理由你應該使用SOAP,即如果你需要命名參數而不是依賴於它們的正確順序
您從此stackoverflow 問題中獲得的更多詳細信息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.