hprose

Hprose (High Performance Remote Object Service Engine) 是一個MIT開源許可的新型輕量級跨語言跨平台的面向對象的高性能遠程動態通訊中間件。它支持眾多語言,例如nodeJs, C++, .NET, Java, Delphi, Objective-C, ActionScript, JavaScript, ASP, PHP, Python, Ruby, Perl, Golang 等語言,通過 Hprose 可以在這些語言之間實現方便且高效的互通。

Hprose 易學易用,且功能強大,您只需很短時間的學習,就可以用它方便地構建出跨語言跨平台分散式的電信級套用系統。

基本介紹

  • 中文名:高性能遠程動態通訊中間件
  • 外文名:hprose
  • 特點:易學易用,且功能強大
  • 類型:方便地構建出跨語言跨平台分散式
  • 定位:電信級套用系統
同步調用和異步調用,異常處理,多執行緒與執行緒安全,性能與穩定性,類型映射,弱類型與動態性,安全與身份認證,負載均衡,事務,
鬆散耦合的服務發布
大部分遠程調用技術所發布的服務都需要單獨編寫,常見的服務編寫方式有以下幾種:
中間語言編寫接口,然後生成伺服器端構架代碼,然後在構架代碼中填寫服務代碼。例如:Corba、Ice 都是採用這種中間語言方式。通過繼承某個遠程對象類來實現服務類。例如:.NET Remoting。通過先編寫遠程調用接口,再實現遠程調用接口來實現服務類。例如:.NET Remoting,RMI。通過語言的某種特性來標示服務方法。例如:WCF。以上這些方式都緊密耦合方式。由於這些方式都有條件限制,你不可能將一個已有的本地函式、方法、對象或類直接發布為遠程服務。 而 Hprose 所發布的服務不需要單獨編寫,一個已有的本地函式、方法、對象或類可以通過 Hprose 直接發布為遠程服務,而不需要對它們進行任何改動,甚至連某些語言內置的函式和方法都可以直接發布為服務。因此這不但方便了新的服務編寫,而且對已有系統的改造也變的非常方便。

同步調用和異步調用

Hprose 既支持同步調用,也支持異步調用。其同步調用方式與調用本地方法的形式幾乎完全一致。異步調用方式採用回調形式來處理結果,用法相當簡單直觀。其用法與其它遠程調用技術相比,既容易掌握,也容易使用。

異常處理

Hprose 不論是在伺服器端還是在客戶端都具有完善的異常處理機制。
在伺服器端,默認情況下,伺服器端發生的異常將會被包裝後傳送到客戶端,在伺服器端不做錯誤日誌記錄,這有效的提高了伺服器端的處理效率。但如果需要記錄錯誤日誌,只要在伺服器端掛載一個錯誤處理事件,即可用任何您喜歡的方式來記錄錯誤日誌,有效的提高了伺服器端處理錯誤日誌的靈活性。伺服器端還可以設定為 debug 模式,這種模式下,伺服器端發生異常後,會將詳細的錯誤信息包裝後傳送給客戶端,在服務開發階段非常有用。
在客戶端,當進行同步調用時,伺服器端發生的異常(或客戶端在調用時發生的網路異常)會在客戶端直接拋出,通過各種語言內置的異常捕獲方式就可以捕獲並處理異常。當進行異步調用時,為保證執行緒安全,默認情況下異常不會被拋出,而是被靜靜的忽略,當你希望處理它們時,只需要為客戶端掛載一個錯誤處理事件,就可以處理異步調用時發生的所有異常了。

多執行緒與執行緒安全

不論是 Hprose 伺服器端還是客戶端,都是執行緒安全的。因此你可以在多執行緒環境下安全的使用它們,而不必為每個執行緒創建一個對象副本。

性能與穩定性

Hprose 採用高效通用的序列化格式和算法,不論是序列化後的數據量還是序列化反序列化所花費的時間都遠遠小於其它遠程調用所使用的序列化方式,因此在遠程調用中與其它方式相比,完成同樣功能的調用,Hprose占用更少的頻寬和時間。另外在網路傳輸中,Hprose採用流式傳輸,避免了二次編碼帶來的效率損耗,同時有效的節省了記憶體和CPU的占用。
同樣一台伺服器在同樣的頻寬下,使用 Hprose 發布服務相對於其它方式來說,可以承載更大的用戶量,比其它方式更加高效穩定。

類型映射

Hprose 的序列化格式中帶有完備的類型信息,它與各種語言之間有著固定的完備的類型映射。各種語言之間通過這種類型映射機製得以互通。Hprose 不但支持各種語言中所有基本類型的互通,連複雜的帶有圖型結構的容器類型與自定義類型都可以完美映射。

弱類型與動態性

Hprose 序列化格式中雖然包含有完備的類型信息和到各種語言的類型映射。但它與其它遠程調用不同的是,它還支持弱類型映射機制,一種 Hprose 類型可以映射為某語言中的多個類型,多種 Hprose 類型也可以映射為某語言中的一種類型。有了這種弱類型映射機制,強類型語言弱類型語言之間的互通變得更加方便,甚至連強類型語言之間的互通都可以享受到弱類型帶來的便利。
Hprose 與其它遠程調用的另一點不同是,它具有很強的動態特徵。例如:
它支持調用期的類型綁定。它支持可變長參數的調用。它支持引用參數傳遞的調用。它支持可變類型參數的調用。它支持可變類型結果的調用。它支持對不存在的方法進行調用。這些特性不僅對於動態語言來說相當有用,即便是對於靜態語言來說,它同樣可以享受到這些動態性帶來的便利。

安全與身份認證

Hprose 支持通過使用 https 方式實現安全的服務發布與調用。而且 Hprose 還提供了專用於身份認證的事件機制,您只需要掛載自己需要的身份認證事件,就可以在服務被調用之前進行身份驗證。

負載均衡

Hprose 目前基於 HTTP 傳輸的實現支持眾多種類的 Web 伺服器。任何在 Web 上可以使用的負載均衡手段,您都可以直接用於 Hprose 的服務發布中。另外,您還可以靈活的運用 Hprose 本身來實現各種複雜情況下的負載均衡。

事務

事務是面向數據的,而 Hprose 是面向動作的。因此 Hprose 與事務之間沒有直接的聯繫。但是如果你需要在某種語言所發布的服務當中運算元據並需要事務處理時,你可以使用那種語言支持的方式來實現事務操作。

相關詞條

熱門詞條

聯絡我們