在企業級分散式運算中,當服務需跨越不同伺服器、甚至不同組織進行通訊時,必須將業務邏輯暴露為遠程服務。Spring 框架提供了一套獨特且靈活的 Remoting 機制,讓開發者能專注於業務介面(POJO),而不必纏繞於底層通訊細節。
| 技術 | 優點 | 缺點 |
|---|---|---|
| RMI | 完整支援 Java 物件序列化,可傳遞複雜型別 | 僅限 Java-to-Java,需 RMI 編譯器與外部註冊表 |
| Hessian/Burlap | 跨防火牆、多語言支援 | 專有序列化機制,Burlap 僅支援 Java 客戶端 |
| HTTP Invoker | 基於 HTTP 的 Java-to-Java,設定簡單,支援複雜物件 | 雙端皆需 Spring,僅限 Java 環境 |
| EJB | 內建安全性、交易管理 | 重量級,需 J2EE 容器 |
| JMS | 非同步、鬆耦合、可靠傳訊 | 預設用 Java 序列化,需額外提供者支援其他格式 |
| Web Services (SOAP) | 平台與語言無關 | SOAP 開銷大,架構複雜,需 Web Service 引擎 |
房貸申請需同步檢查房產是否位於氾濫區,若是則需購買保險。系統採用 Spring HTTP Invoker 將 FloodCertService 暴露為 HTTP 端點,客戶端透過代理同步呼叫。
Client (FloodCertClient)
→ Controller (FloodCertController.requestFloodCheck)
→ Service (FloodCertService.processFloodCheck) — HTTP Invoker 遠程呼叫
→ DAO (FloodCertDAO) → Database
HttpInvokerServiceExporter 匯出服務 Bean。HttpInvokerProxyFactoryBean,指定 serviceUrl 與 serviceInterface。loanapp-servlet.xml 與 web.xml 設定 DispatcherServlet 與 URL 映射。Spring HTTP Invoker 結合了 HTTP 通訊的簡單性與 Java 內建序列化,是輕量級遠程服務的優選。雖然雙端皆須使用 Spring,但對於尋求易部署、靈活配置的團隊極具吸引力。若需跨語言平台,可考慮 Hessian 或 Web Services;純 Java 高效能場景則適合 RMI。