我需要使用java將一些文件從一臺服務器轉移到另一臺服務器,而我的性能是我的首要任務,這三個選項中的哪一個應該是我的正確選擇。Java文件傳輸,EJB,SOAP或REST,性能比較
1
A
回答
3
我的2美分:
- EJB;假設您不打算通過Web Service來封裝您的EJB,這將最終發生在RMI調用中,這意味着您的客戶端必須瞭解RMI。這可能會成爲一個問題,如果你在公共互聯網上,因爲協議和端口可能被某些中間件(防火牆等)阻止。您可能遇到可伸縮性問題。如果涉及SOAP或REST等Web協議,則負載均衡器和Web服務器會理解這些協議,所以向外擴展(集羣)要容易得多。
- SOAP;明確的選項,因爲文件大小可以高達10MB,你應該考慮MTOM傳輸文件本身。將文件嵌入SOAP消息中可能需要基於64位編碼,這取決於文件內容本身(例如二進制文件)。平均基數爲64的enc導致係數爲1.3的開銷(10mb> 13.33mb)。
- 對於REST,您最終會遇到與SOAP有關的文件編碼相同的問題。
總結:這取決於,我先看看SOAP + MTOM並做一些測試。您也可以考慮FTP,SFTP,FTPS等「不太流行」的協議。如果你需要保證交付,你可能想看看託管文件傳輸(MFT)的概念:http://en.wikipedia.org/wiki/Managed_file_transfer
0
當你談論EJB時,我假設你實際上指的是RMI(遠程方法調用)。它使用對象序列化。如果它是您的應用程序的選項,這是最好的方法。
使用SOAP,您有XML創建/解析(計算方面)的開銷。您也有頭痛的XML轉換/從您的對象。
在REST中,它最終成爲與SOAP相同的問題。然而,這似乎是大家公開API的方向。
2
我認爲,使用SOAP將涉及base64編碼數據,這將大大增加它的33%!
我不認爲RMI base64編碼,所以和一個二進制體的REST傳輸將大致相同的效率。
REST使用HTTP,這是一種協議,它的實現經過了嚴格的調整,並且經過了大量文件傳輸的測試。 JRMP和IIOP,用於RMI的協議通常用於較小的請求,因此沒有進行調整。因此,我傾向於使用HTTP而不是JRMP或IIOP來實現這一點,因此朝向使用REST PUT而不是RMI。
但我猜測RMI和HTTP之間的差異很小。
然而,最重要的是,沒有什麼能夠勝出一個基準。我敦促你做一個快速的測試,用三種選項傳輸一個大文件,並測量速度。
相關問題
- 1. SOAP與XML-RPC或REST的性能
- 2. Java List.SubList()性能比較
- 3. Java比較器的性能?
- 4. 的Java getPeerCertificates()性能比較
- 5. WCF SOAP與WCF REST性能
- 6. PHP SOAP傳輸文件
- 7. 多線程文件比較性能
- 8. 性能比較excel文件代
- 9. 性能比較
- 10. 比較用戶輸入到屬性文件中的Java
- 11. EJB vs Rmi比較
- 12. Java:輸入比較
- 13. Apache Camel文件輸出組件性能較慢 - Java
- 14. REST或SOAP
- 15. 比較遺傳程序設計性能
- 16. 比較輸入與文件
- 17. 比較和對比REST和SOAP Web服務?
- 18. Thrift,協議緩衝區,JSON,EJB和其他的性能比較?
- 19. Scala XML性能與Java XML的比較
- 20. Java XML文件比較
- 21. 音頻文件比較(JAVA)
- 22. 在Java中比較文件?
- 23. 對XML文件比較Java
- 24. JMH:性能比較
- 25. Rest API或Soap webservice
- 26. 基準的API /性能測試 - REST/SOAP
- 27. php或java比較數據
- 28. Java文件傳輸
- 29. sftp與SOAP調用文件傳輸
- 30. Groovy或Java來解析文本文件並比較
你的檔案有多大?什麼是Java文件傳輸? – home
你只需要傳輸文件,或者是否有任何額外的信息需要發送? – powerMicha
文件大小可以高達10mb,並且請求將包含參數,但是響應只具有文件數據。 – Ali