Hessian其實很像web service,只不過它的協議不是SOAP,而是它自己規定的binary協議。Hessian的server端提供一個servlet基類,client端獲得一
個service接口(也就是stub)之後調用上面的方法,stub將方法調用marshal之後通過HTTP傳到server,server藉助reflection調用service方法。
實戰開始,先到www.caucho.com上去下載一個Resin,在寶寶的網上也有(itbaby.jss.cn)
然後在itbaby.jss.cn上下載一個HessianCSharp的DLL文件,供C#使用
1.開始,在Resin解壓後,我在WEB-INF中建立一個目錄itbaby,然後按Resin的幫助在itbaby目錄下寫了兩個類
PlusAPI和PlusService
PlusAPI的CODE如下:
package itbaby;
public interface PlusAPI
{
public String Plus2Str(int A,int B);
}
-------------------------------------------
PlusService的CODE如下:
package itbaby;
public class PlusService implements PlusAPI
{
public String Plus2Str(int A,int B)
{
int iSum = A + B;
String sSum = Integer.toString(iSum);
return sSum;
}
}
2.在WEB-INF目錄下建了個web.xml文件(注意原來的Resin帶的我都刪除了)
內容如下:
3.寫一個JSP的測試文件(test.jsp),看看兩個類是否運行正常
HessianProxyFactory factory = new HessianProxyFactory();
// http://localhost:8080/itbabywebsvc/plus
String url = ("http://" +
request.getServerName() + ":" + request.getServerPort() +
request.getContextPath() + "/itbabywebsvc/plus");
PlusAPI plus = (PlusAPI) factory.create(PlusAPI.class, url);
out.println("100 + 50 = " + plus.Plus2Str(100,50)+"
");
out.println("150 + 200 = " + plus.Plus2Str(150,200)+"
");
%>
運行結果輸出:
100 + 50 = 150
150 + 200 = 350
表示兩個類運行正常
4.開始寫C#的客戶端調用,啟動VS.Net2003,新建一個Windows應用程序,當然你也可以使用ASP.NET,在默認的Form1上添加一個Button1的按鈕.
然後添加一個引用HessianCSharp.DLL,(就是讓你下載的那個DLL)
5.添加一個類文件,命名為:PlusAPI.cs,CODE如下:
using System;
namespace HsnTest
{
public interface PlusAPI
{
string Plus2Str(int A,int B);
}
}
在Button1的Click中添加如下CODE:
private void button1_Click(object sender, System.EventArgs e)
{
CHessianProxyFactory factory = new CHessianProxyFactory();
string url="http://localhost:8080/itbabywebsvc/plus";
PlusAPI test = (PlusAPI)factory.Create(typeof(PlusAPI), url);
string sValue = "5 + 10 =" + test.Plus2Str(5,10);
MessageBox.Show(sValue );
}
別忘了應用命名空間
using hessiancsharp.client;
好了,運行,看到如下結果
總結:我們可以考慮這樣來使用JAVA的方法,Hessian還有 For PHP,Python,C++的類庫,有興趣的朋友可以在Caucho.com上多看看,多一句話,寶寶的網站就是用Resin,我使用Resin好多年了,小巧實用,大型的項目我也使用過,非常穩定