2011-05-04 22 views
4

我需要在使用Ruby與Java進行SOAP集成之間做出決定。我的整個Web應用程序基於Ruby on Rails構建,並且有一個重要的後端組件必須與使用SOAP的舊系統集成。Java與Ruby的SOAP處理

Java擁有像Apache Axis這樣的大型SOAP庫,並且似乎與這種「傳統」Web服務很好地集成,而Ruby有一些像Savon和handSOAP這樣的寶石。

我偏向於使用Ruby庫,但擔心性能/可伸縮性問題。使用Ruby的性能/可伸縮性問題有哪些?

爲了獲得更多的上下文,與遺留系統的集成有兩個組件:日常進程,其性能不太重要,以及實時查詢引擎,其性能非常重要,因爲用戶正在等待查詢處理。

+1

你爲什麼認爲SOAP調用會成爲瓶頸?無論您使用何種語言,XML都相對較慢。真正的瓶頸通常是數據庫和/或網絡。 – 2011-05-04 19:25:20

+2

當您被迫使用SOAP Web服務時,SAVON是大多數人的首選。你可以使用HTTParty,但你必須手動處理信封。 – 2011-05-04 19:26:18

回答

5

我最近面臨同樣的挑戰。我原來使用Java,但最終都使用Builder來構建請求,使用Nokogiri解析響應。我還使用SoapUI來幫助開發/調試請求。

爲什麼我風對Java和Ruby會...

  1. 簡單的基礎設施。如果你不需要它,爲什麼在你的架構中有兩種不同的範例。如果您的站點是Ruby on Rails,那麼除非您需要,否則爲什麼要將Java引入它。
  2. Java有一些很好的庫,比如Axis將SOAP請求轉換爲對象。但這真的不是一個大問題,但是當我的大部分邏輯都在Ruby中時,這真的不是什麼大勝。通過Nokogiri來處理DOM比使用中間Java對象更容易。
  3. 我所有的邏輯(ActiveRecord模型對象,驗證等)都是用Java編寫的。我最終需要複製邏輯,如數據庫持久性,以在Java代碼和Rails代碼之間進行通信...... boo
  4. 性能問題似乎是一個紅鯡魚。如果您正在進行SOAP請求,網絡開銷可能會成爲您的瓶頸,而不是語言解析/執行。
+1

非常感謝。請問爲什麼你在Ruby中不使用Savon或handSOAP? – 2011-05-04 21:49:16

+0

當然。簡短的版本是我沒有看到使用它們的勝利。 Builder使構建XML請求文檔變得非常簡單,然後我可以完全控制格式。這在使用SoapUI進行開發/調試時非常有用,因爲我可以使命名空間縮寫完美匹配,所以我可以輕鬆地剪切和粘貼請求。我真的不覺得這些庫增加了任何價值。我對Nokogiri/XPath感到滿意,以瞭解我的結果,爲什麼會使任何事情複雜化。如果你想了解更多的細節,我很樂意做一個Skype的電話,並談論更多關於這個決定。 – 2011-05-05 01:10:31

+0

非常感謝所有的信息。我通過您的網站與您聯繫。謝謝! – 2011-05-05 23:32:20