照理说C#可以通过标准的web服务可以轻松地调用Java,但是鉴于hessian的高性能及开发效率,个人认为C#通过hessian调用java是很值得提倡的。之前完成的一个比较大型的企业应用项目就是采用C#作为winform客户端应用通过hessian调用java来实现的,事实证明hessian的响应、效率还都不错,开发效率也挺高。

总结之前的项目经验,个人觉得C#通过hessian调用java需注意下述几个问题:

1)  hessian客户端需重写

不知是何原因hessian C#客户端更新不及时,而且比较其它语言(java、Python等)不是很成熟,比如经常在网上可以看到有人在喊decimal类型的问题等等。因此,需要下载hessian C#客户端源码,进行重写,主要解决函数调用多态问题、引用问题、decimal等类型支持问题,对于有些byte读取也可以进行适当性能优化。

2)  尽量使用基本类型

尽量使用基本类型等简单类型,忌讳Map、list等多层嵌套。

3)  hessian两端的数据结构要对称

java端的包和C#的命名空间要对牢,否则在序列化反序列化时会得到你不想要的结果。

4)  最好避免多态调用

如非必要,建议避免函数多态调用。

5)  大数据量传输要进行优化处理

如之前的项目经常会出现一次传输几万张凭证数据的情况,为此需要对数据进行类型转换、压缩等处理,一个减少序列化反序列化时间,另外一个减轻网络负担。

来源:http://blog.csdn.net/chuangxin/article/details/5429528

C# 通过hessian调Java注意事项的更多相关文章

  1. [java]序列化框架性能对比(kryo、hessian、java、protostuff)

    序列化框架性能对比(kryo.hessian.java.protostuff) 简介:   优点 缺点 Kryo 速度快,序列化后体积小 跨语言支持较复杂 Hessian 默认支持跨语言 较慢 Pro ...

  2. 序列化框架性能对比(kryo、hessian、java、protostuff)

    简介:   优点 缺点 Kryo 速度快,序列化后体积小 跨语言支持较复杂 Hessian 默认支持跨语言 较慢 Protostuff 速度快,基于protobuf 需静态编译 Protostuff- ...

  3. java注意事项演示 地图产生表 演示样本 来自thinking in java 4 20代码的章

    java注意事项演示 地图产生表 演示样本  来自thinking in java 4 20代码的章 thinking in java 4免费下载:http://download.csdn.net/d ...

  4. php--php调java接口验签

    <?php namespace Fmall_cloud\Model; use Think\Model; class DealJavaModel extends Model { /** * @ti ...

  5. python 调 java(胶水就是胶水)

    java门外汉用python调java, 一.安装java环境(linux) 1.首先要去下载好JDK,Java SE 8的官方网址是http://www.oracle.com/technetwork ...

  6. JavaScript调Java

    1.映射Java对象到JavaScript对象上 MainActivity.java package com.example.jsdemo; import android.os.Bundle; imp ...

  7. 编写MR代码中,JAVA注意事项

    在编写一个job的过程中,发现代码中抛出 java.lang.UnsupportedOperationException 异常. 编写相似逻辑的测试代码: String[] userid = {&qu ...

  8. android 与html交互java调js与js调java操作

    1.首先在项目下建一个assets目录(右击app->New->Folder->Assets Flolder),直接放在项目根目录下和res目录同级别(把所html,js,图片,cs ...

  9. PI接口开发之调java WS接口

    java提供的WSDL:http://XXX.XXX.XXX.XX/XXXXXXXcrm/ws/financialStatementsService?wsdl 登陆PI,下载Enterprise Se ...

随机推荐

  1. Bitmap介绍

    转自:http://blog.csdn.net/xgdofull/article/details/5424611 简单的说就是用数组存放若有数据就标志为1或true,若不存在标志为0或false.比如 ...

  2. [LeetCode#128]Word Ladder II

    Problem: Given two words (start and end), and a dictionary, find all shortest transformation sequenc ...

  3. unity中的mesh合并

    在分析shadowgun时,无意中发现所有的环境建筑运行后,都被合并成一个叫做 "Combined Mesha (root: scene)" 的mesh了,但是没有发现任何合并的脚 ...

  4. 排序Tip

    排序算法   所有排序算法汇总:http://en.wikipedia.org/wiki/Sort_algorithm counting sort 资料 :http://www.cs.miami.ed ...

  5. 了解开源的许可证GPL、LGPL、BSD、Apache 2.0的区别 【转】

    原文来自:http://blog.sina.com.cn/s/blog_6870d1e00100lhlv.html 你对开源有多少了解呢?如果你是软件开发者,要开源软件,不单单是开放源代码就可以了,选 ...

  6. baidu

    [百度凤巢业务实习]   查看打赏情况 打赏100shb 打赏1000shb 打赏10000shb 只看此用户 大字体 楼主   百度凤巢业务--百度最核心的业务做数据挖掘,机器学习,广告算法等,主要 ...

  7. python 开发简单的聊天工具

    python 太强大了,以至于它什么都可以做,哈哈,开个玩笑.但是今天要讲的真的是一个非常神奇的应用. 使用python写一个聊天工具 其实大家平时用的QQ类似的聊天工具,也是使用socket进行聊天 ...

  8. Mybatis 控制台打出Sql-Log的设置

    首先工程中必须要有slf4j-log4j12-1.7.12.jar这个包,否则打不出来 而后工程中“log4j.properties”文件如下: log4j.appender.stdout=org.a ...

  9. 【Android - V】之SwipeRefreshLayout的使用

    SwipeRefreshLayout是Android V4.V7包中的一个控件,是Google给我们提供的一个下拉刷新的布局控件,可以轻松完成下拉刷新. SwipeRefreshLayout的特点是其 ...

  10. 通过WriteProcessMemory改写进程的内存

    http://www.cnblogs.com/feiyucq/archive/2009/10/21/1587628.html 以PROCESS_ALL_ACCESS权限打开进程以后既能够使用ReadP ...