?
Dieses Dokument verwendet PHP-Handbuch für chinesische Websites Freigeben
這里提到的每種技術(shù)都有它的缺點(diǎn)。你在選擇一種技術(shù)時,應(yīng)該仔細(xì)考慮你的需要和所暴露的服務(wù)及你在遠(yuǎn)程訪問時傳送的對象。
當(dāng)使用RMI時,通過HTTP協(xié)議訪問對象是不可能的,除非你用HTTP包裹RMI流。RMI是一種重量級協(xié)議,因?yàn)樗С终麄€對象的序列化,當(dāng)要求網(wǎng)絡(luò)上傳輸復(fù)雜數(shù)據(jù)結(jié)構(gòu)時這是非常重要的。然而,RMI-JRMP只能綁定到Java客戶端:它是一種Java-to-Java的遠(yuǎn)程訪問解決方案。
如果你需要基于HTTP的遠(yuǎn)程訪問而且還要求使用Java序列化,Spring的HTTP調(diào)用器是一個很好的選擇。它和RMI調(diào)用器使用相同的基礎(chǔ)設(shè)施,僅僅使用HTTP作為傳輸方式。注意HTTP調(diào)用器不僅只能用在Java-to-Java的遠(yuǎn)程訪問,而且在客戶端和服務(wù)器端都必須使用Spring。(Spring為非RMI接口提供的RMI調(diào)用器也要求客戶端和服務(wù)器端都使用Spring)
在使用服務(wù)集群和需要JMS代理(JMS broker)來處理負(fù)載均衡及發(fā)現(xiàn)和自動-失敗恢復(fù)服務(wù)時JMS是很有用的。缺省情況下,在使用JMS遠(yuǎn)程服務(wù)時使用Java序列化,但是JMS提供者也可以使用不同的機(jī)制例如XStream來讓服務(wù)器用其他技術(shù)。
最后但不僅限于此,相對于RMI,EJB有一個優(yōu)點(diǎn)是它支持標(biāo)準(zhǔn)的基于角色的認(rèn)證和授權(quán),以及遠(yuǎn)程事務(wù)傳遞。用RMI調(diào)用器或HTTP調(diào)用器來支持安全上下文的傳遞是可能的,雖然這不由核心Spring提供:Spring提供了合適的鉤子來插入第三方或定制的解決方案。