簡體   English   中英

在實現Web服務(SOA / REST)時,使用RMI實現EJB仍然有用嗎?

[英]Is still useful to implement EJB with RMI when you can implement Web Services (SOA/REST)?

這可能聽起來與類似,但事實並非如此。

我有點理解EJB和RMI,而且我已經在SOA下使用Web服務了一段時間。 我想知道為什么使用EJB暴露RMI下的遠程接口而不是發布Web服務(SOA / REST,但主要是SOA)是有用的。 我不是在問哪一個更好,只是我想知道為什么我更喜歡通過Web服務實現帶有遠程接口的EJB的一個很好的理由。

我查看了很多網頁,但似乎都過時了。 到目前為止,我所擁有的是,在與Java遺留系統集成時,暴露遠程接口的EJB僅比WS更好。 如果我想管理事務,我可以使用本地接口實現EJB。 另外,我不認為選擇EJB over RMI比Web Service接口更有效。

我對嗎? 有什么我想念的嗎?

非常感謝提前。

如果是,EJB更好

  • 你需要執行一些應該在一個事務中完成的調用(理論上我們有事務Web服務,但不是每個實現都提供它們),(有狀態的)EJB在事務管理方面都很閃耀。 幾乎任何時候你需要有狀態EJB比Web服務更好;
  • 你需要表現 - Web服務很慢 - 他們使用通過HTTP推送的XML / JSON,而EJB使用的IIOP協議上的RMI更有效率;
  • 你需要連接到一些遺留系統,它使用過時的Java Web Services規范(丑陋的Axis 1.0的東西,與JAX-WS不兼容),將所有內容與Web服務連接,處理不兼容的WSDL定義,奇怪的SOAP可能是一場噩夢信封。 EJB是向后兼容的,舊的EJB 2可以在沒有EJB 3.1的任何問題的情況下連接;
  • 現代EJB(EJB 3.X)可以通過添加兩個或三個簡單注釋將其接口公開為JAX-WS SOAP / WSDL服務或JAX-RS REST服務

為什么(REST)Web服務如此受歡迎? EJB只能連接到另一個Java應用程序。 大多數現代富Internet應用程序都是用JavaScript編寫的,因此將它們與任何后端連接的唯一方法是使用某種Web服務(通常是REST + JSON)。 對於這樣的應用程序,EJB很沒用。

如果使用RMI作為有線協議,則必須使用Java編寫客戶端和服務。

SOAP使用XML over HTTP,而REST使用純HTTP進行客戶端和服務之間的通信。 對話的任何一端都可以用任何可以通過HTTP發送適當請求的語言編寫,這種限制要少得多。

我認為這是HTTP上的Web服務勝過RMI的一個原因。 每次都是簡單而開放的勝利。

它們是用於不同目的的不同東西。

EJB用於緊密耦合的N層系統,您可以控制所有元素。 它們使用看似普通的方法調用,以及IIOP上的LAN類型性能或EE供應商已部署的任何其他協議,提供語言的直接編碼。

SOAP / REST最適合在Internet上使用,或者在B2B或其他無法控制兩端且需要松散耦合的情況下使用。 由於所有XML,您的性能會慢得多,但您也可以在中間獲得行業標准協議,從而為單一來源問題提供雙端保護。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM