Hessian:hessian是一個輕量級的remoting onhttp工具,使用簡單的方法提供了RMI的功能,相比WebService,Hessian更簡單、快捷。
采用的是二進制RPC協議,因為采用了二進制協議,所以它很適合於發送二進制數據,Hessian主要作面向對象的消息通信。
Hessian的初衷就是支持動態類型,格式緊湊,跨語言。Hessian是使用自己的序列化機制實現的編組和反編組,其支持的數據類型是有限制的,不支持復雜的對象,可以穿透防火牆。 在這里不得不說一下RMI:RMI是一組用戶開發分布式應用程序的API。他使用的是java序列化機制實現調用及返回值的編組於反編組。它使用Java語言接口定義了遠程對象,它集合了Java序列化和Java遠程方法協議(Java Remote Method Protocol)。他可以被看做是RPC的Java版本,因為傳統的RPC並不能很好的應用於分布式對象系統。而Java RMI 則支持存儲於不同地址空間的程序級對象之間彼此進行通信,實現遠程對象之間的無縫遠程調用。他也有它的缺點,他只能通過RMI協議來進行訪問無法通過HTTP協議訪問,無法穿透防火牆。 還有一種遠程調用方法就是HttpInvoker:他也是將參數和返回值通過Java的序列化機制進行編組和反編組,它具有RMI的支持所有可序列化對象的優點。試使用Http協議傳輸二進制流的,同時又具有Hessian、Burlap(傳輸xml文本)的優點。
Hessian:寫一個Hessian需要注意的問題:
1、JAVA服務器端必須具備以下幾點:
包含Hessian的jar包
設計一個接口,用來給客戶端調用
實現該接口的動能
配置web.xml,配置相應的servlet
對象必須實現Serializable接口
對於復雜對象可以使用Map的方法傳遞
2、客戶端必須具備以下幾點:
java客戶端包含Hessian.jar包
具有和服務器端結構一樣的接口和實體類。包括命名空間都最好一樣。
Hessian的優點:
1- 整個jar很小,200多K,3.1版本的,當然,我下載的for java的版本.
2- 配置很簡單,基本上不需要花什么經歷就配置出來了
3- 功能強大,可以將soap拋開,也可以把EJB拋開,采用二進制來傳遞對象
4- 擁有多種語言支持,python c++ .net 甚至 flex 都可以做為client端
WebService簡介
(1)WebService是一個SOA(面向服務的編程)的架構,它是不依賴於語言,不依賴於平台,可以實現不同的語言間的相互調用,通過Internet進行基於Http協議的網絡應用間的交互。
(2)WebService實現不同語言間的調用,是依托於一個標准,webservice是需要遵守WSDL(web服務定義語言)/SOAP(簡單請求協議)規范的。
(3)WebService=WSDL+SOAP+UDDI(webservice的注冊),Soap是由Soap的part和0個或多個附件組成,一般只有part,在part中有Envelope和Body。
(4)Web Service是通過提供標准的協議和接口,可以讓不同的程序集成的一種SOA架構。
WebService的優點
(1) 可以讓異構的程序相互訪問(跨平台)。
(2) 松耦合。
(3) 基於標准協議(通用語言,允許其他程序訪問)。
WebService的缺點:
(1) WebService使用了XML對數據封裝,會造成大量的數據要在網絡中傳輸。
(2) WebService規范沒有規定任何與實現相關的細節,包括對象模型、編程語言,這一點,它不如CORBA。
WebService的基本原理
(1) Service Provider采用WSDL描述服務。
(2) Service Provider 采用UDDI將服務的描述文件發布到UDDI服務器(Register server)。
(3)Service Requestor在UDDI服務器上查詢並 獲取WSDL文件。
(4)Service requestor將請求綁定到SOAP,並訪問相應的服務。