C#调用Hessian

    技术2025-02-10  19

    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好多年 了,小巧实用,大型的项目我也使用过,非常稳定

    最新回复(0)