`

hessian支不支持多种语言的调用?

 
阅读更多

其实我还根本不懂Hessian这个东西,但是我习惯用以后的经验来分析。

 

‍Hessian适合Remoting/WCF比较相似的一类东西,都是提供远程调用的框架,不过‍Hessian的最大优势在于跨平台,多语言支持和比较合理的性能,目前‍Hessian支持:

 

‍Java

Flash/Flex

Python

C++

.NET C#

D

Erlang

PHP

Ruby

Objective C

 

没听说过的就有D和Erlang,没用过的那就很多了,不过其实如果用C语言写一套,这些都是可以调用的>.<(至少是大部分)。我注意Hessian并不是一个人来完成的,很多语言的实现并不是同一个人,所以这里把‍Hessian成为一套标准更合适。

 

据我目前掌握的资料来看‍Hessian是使用二进制序列化的,同样支持Http-Invoke,目前的状况下我又几个问题:

 

‍Hessian是否支持不同语言的相互调用?‍Hessian虽然实现了多种语言,但是很可能是C++版本的只能调用C++版本的,而不能调用其他,能不能实现C++远程调用Java?Java远程调用C++?

 

这 里有个公共类型的问题,C++和Java,或者说这些语言之间并没有.net平台上的CTS(公共类型系统),也就是说A拥有的类型B就可能没有,如果类 型都不能统一,如何实现远程调用呢?我在C#下压入一个delegate类型,C++根本不能处理这个东西。这并不是个例,所以不同语言之间的互操作我认 为是不可行的,Java没法构建C++类型,反过来一样。

 

当然对于一些语言之间,可以进行类型转换,比如Java和C#,他们有很多共有的类型,但是比如C++和Java,前者根本没有interface类型。

 

(如果能实现不同语言互操作,那‍Hessian真神了,一定要膜拜下)

 

二进制序列化的问题。

二 进制序列化效率很高,C++这种语言也可以自定义序列化过程(事实上我认为必须自定义,因为C++没有类似C#反射的能力,也就无法自动的序列化)。但是 二进制序列化是不是会存在大端小端,字节对齐,不同平台的数据格式的问题,C++作为本地语言,不能像C#或者Java那样就规定了一种内存数据格式,所 以在不同架构的平台之间用二进制序列化是不可行的。

 

目前想到的就这么多,我希望继续了解一下这个东西‍Hessian,毕竟他已经很优秀了。

 

----------------------------------------------------------------------------------------------------------------------------

为什么服务器端是List对象,到了客户端就是hashmap了呢?????
原 因:我的list在上传前保存的是对象,经测试也不是map型,但到服务端从list获取的变成了map型,经分析是因为目录结构的原因,如果客户端和服 务器端package的名字不一样的话,就会造成服务端反序列化时出现问题。所以在使用List的时候一定要让bean的package的名称在客户端和 服务器端是一致的。
分享到:
评论

相关推荐

    hessian实现远程调用

    它支持Java、C++等多种语言,使得跨语言的远程调用成为可能。Hessian的核心思想是将Java对象转换成二进制流,通过网络发送,然后在接收端反序列化回原来的对象。 在Hessian的实现过程中,主要包括以下几个步骤: 1...

    Hessian Binary Web Service Protocol远程接口调用入门Demo

    此外,Hessian支持Java、C++、Python等多种编程语言,具有良好的跨平台性。对于需要频繁交互且数据量不大的Web服务,Hessian是一个理想的选择。 接下来,我们来看看Hessian的调用流程: 1. **服务端实现**:在...

    hessian-4.0.33.jar

    3. 跨语言通信:Hessian支持多种编程语言,如Java、C++、.NET,实现跨平台的通信。 总结,hessian-4.0.33.jar是Hessian框架的一个版本,提供了实现高效二进制RPC服务的工具集。通过深入理解Hessian协议和这个库的...

    hessian

    4. **跨语言支持**:虽然最初是为Java设计的,但Hessian也有其他语言的实现,比如Python、C++、C#等,因此可以在多种语言之间进行通信。 在【描述】中提到的博客链接,可能详细介绍了如何使用Hessian进行客户端和...

    hessian php与java通讯demo源码

    Hessian支持多种语言,包括Java、PHP、Python等,这使得跨平台的集成变得容易。 在提供的压缩包中,我们有三个文件:`java_client.rar`、`java_server.rar`和`php-client.rar`。这些文件分别代表了Java客户端、Java...

    用hessian c#桌面程序调用J2EE后台服务

    Hessian支持多种编程语言,包括Java、C++、Python和C#等。 2. **C#桌面程序**:这里提到的C#桌面程序通常指的是使用.NET Framework开发的Windows应用程序,如WPF(Windows Presentation Foundation)或WinForms应用...

    Hessian应用

    - **跨语言支持**:除了Java之外,Hessian还支持.NET、Python等多种编程语言,这使得开发者可以在异构系统之间轻松地实现服务交互。 #### 使用场景 Hessian适用于需要高性能远程服务调用的应用场景,尤其适合于...

    springMVC hessian

    Hessian 支持 Java、C++、Python 等多种语言,使得跨语言的服务调用成为可能。Hessian 的优点在于它能够自动序列化和反序列化对象,减少了网络传输的数据量,提高了服务调用的效率。在分布式系统中,Hessian 可以...

    hessian-example

    它支持多种类型的数据,包括基本类型、对象、数组和日期等,并且能够自动处理Java和.NET之间的类型映射。 在"Hessian-example"这个项目中,我们通常会看到一系列的示例代码,用于演示如何在实际应用中使用Hessian。...

    hessian jar包

    2. **自动类型转换**:Hessian能够自动处理不同语言和平台之间的类型转换,简化了跨语言服务调用。 3. **内置序列化**:Hessian内置了对象序列化机制,可以直接将Java对象转换为二进制流,无需额外的序列化接口实现...

    Hessian的学习笔记

    * 跨语言支持:Hessian支持多种编程语言,例如Java、Python、C#等。 * 可扩展性:Hessian具有高可扩展性,易于集成到现有的应用程序中。 五、Hessian的应用场景 Hessian可以应用于以下场景: * 远程过程调用(RPC...

    外部接口调用 使用spring4+hessian4实例(二)

    Hessian支持多种语言,包括Java、C++、Python等,这使得跨平台的通信变得简单。 在实例中,我们将创建一个服务提供者(Server)和一个服务消费者(Client)。服务提供者会暴露一个接口,这个接口通过Hessian协议...

    hessian-4.0.7jar文件与源代码.rar

    2. **自动类型转换**:Hessian支持多种数据类型的自动转换,包括基本类型、日期、集合、自定义对象等,使得跨语言的通信变得更加简单。 3. **远程方法调用(RMI)**:Hessian提供了一种轻量级的RMI实现,使得服务调用...

    Hessian学习笔记

    Hessian协议支持Java、C++、PHP等多种编程语言,使得跨平台的交互变得更加便捷。 Hessian的学习主要涉及以下几个核心知识点: 1. **二进制序列化**:Hessian使用高效的二进制格式进行序列化和反序列化,与基于文本...

    利用hessian进行系统通信实例教程

    Hessian支持Java、C++、Python等多种编程语言,能够实现不同语言间的无缝通信。 二、Spring与Hessian的结合 Spring是一个广泛应用的开源Java框架,它提供了丰富的功能来简化企业级应用的开发。在Spring中集成...

    DuBBo(rmi+Hessian).zip

    Hessian支持Java和多种其他语言,可以实现跨语言的RPC调用。它的主要特点包括:轻量级、快速、自动类型映射以及对基本数据类型和集合的优化编码。在Dubbo中,Hessian协议同样可以被用于服务的远程调用,它提供了比...

    理解RESTful架构、Hessian简介、机制、Webservice及cxf介绍

    Hessian库可以在不同平台上使用,支持多种编程语言,简化了跨语言的远程服务调用。 WebService是一种基于XML的、平台无关的标准,用于不同系统间的通信。它定义了服务的接口,允许不同语言、操作系统和网络环境下的...

    Hessian源代码

    5. **跨语言支持**:Hessian不仅在Java中使用,还提供了C++、Python等多种语言的实现,便于不同平台之间的交互。 在这个“hession_1”压缩包中,我们可以期待找到以下内容: 1. **源码文件**:包含了Hessian的核心...

Global site tag (gtag.js) - Google Analytics