C#調用Hessian

來源:互聯網
上載者:User
http://www.ninedns.com/asp.net/2007417222329.html
C#使用Hessian調用JAVA的函數添加時間:2007-4-17 

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帶的我都刪除了)
內容如下:
<web-app xmlns="http://caucho.com/ns/resin
">
    <servlet servlet-name="plus" servlet-class="com.caucho.hessian.server.HessianServlet">
        <init-param service-class="itbaby.PlusService"/>
        <init-param api-class="itbaby.PlusAPI"/>
    </servlet>
    <servlet-mapping url-pattern="/itbabywebsvc/plus" servlet-name="plus"/>
</web-app>

3.寫一個JSP的測試檔案(test.jsp),看看兩個類是否運行正常
<%@ page import="com.caucho.hessian.client.HessianProxyFactory" %>
<%@ page import="itbaby.PlusAPI" %>
<%
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)+"<br>");
out.println("150 + 200 =  " + plus.Plus2Str(150,200)+"<br>");
%>

運行結果輸出:
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好多年
了,小巧實用,大型的項目我也使用過,非常穩定

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.