hessian

dubbo-go 的开发、设计与功能介绍

拜拜、爱过 提交于 2019-12-05 00:01:15
dubbo-go 的前世今生 dubbo-go 是目前 Dubbo 多语言生态最火热的项目。dubbo-go 最早的版本应该要追溯到 2016 年,由社区于雨同学编写 dubbo-go 的初版。当时很多东西没有现成的轮子,如 Go 语言没有像 netty 一样的基于事件的网络处理引擎、 hessian2 协议没有 Go 语言版本实现,加上当时 Dubbo 也没有开始重新维护。所以从协议库到网络引擎,再到上层 dubbo-go ,其实都是从零开始写的。 在 2018 年,携程开始做 Go 语言的一些中间件以搭建内部的 Go 语言生态,需要有一个 Go 的服务框架可以与携程的现有 dubbo soa 生态互通。所以由我负责重构了 dubbo-go 并开源出这个版本。当时调研了很多开源的 Go 语言服务框架,当时能够支持 hessian2 协议的并跟 Dubbo 可以打通的仅找到了当时于雨写的 dubbo-go 早期版本。由于携程对社区版本的 Dubbo 做了挺多的扩展,源于对扩展性的需求我们 Go 语言版本需要一个更易于扩展的版本,加上当时这个版本本身的功能也比较简单,所以我们找到了作者合作重构了一个更好的版本。经过了大半年时间,在上图第三阶段 19 年 6 月的时候,基本上已经把 dubbo-go 重构了一遍,总体的思路是参考的 Dubbo 整体的代码架构

基于Spring Boot的全注解版Hessian服务

谁都会走 提交于 2019-12-04 23:45:13
首先你得先了解常见的Hessian的spring配置方式,即XML配置方式,不知道的可参考一下网上的博客,如: 1. Spring4整合Hessian4(MavenWeb实例) 2. hessian系列之三:与Spring集成 现在我们将基于spring boot 来全注解配置Hessian。 一、将Hessian服务Bean转换为注解方式 A. xml版本hessian-server.xml: <bean id="sayHelloServiceImpl" class="com.etak.services.SayHelloServiceImpl"></bean> <bean name="/sayHello" class="org.springframework.remoting.caucho.HessianServiceExporter"> <property name="service" ref="sayHelloServiceImpl" /> <property name="serviceInterface" value="com.etak.services.SayHelloService" /> </bean> B. 注解版则如下: @Service("sayHelloService") public class SayHelloServiceImpl implements

SpringMVC集成Hessian

两盒软妹~` 提交于 2019-12-04 23:44:56
SpringMVC集成Hessian 首先强调这里是SpringMVC,不是 spring ,这两者在集成Hessian的时候还是有差别的。Spring集成相对简单,网上随便 搜一个 就行。 SpringMVC有点麻烦。 注: 如果你还不了解Hessian,可以看 Hessian简单示例 前提条件 假设你的SpringMVC环境已经配置了好了。 主要是在web.xml中有了如下的配置: <servlet> <!-- 名字随便,和你springmvc的配置xml一致即可 --> <servlet-name>sys</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <!-- 你自己的映射配置 --> </servlet-mapping> 另外你已经配置了相应的 sys-servlet.xml 文件( sys 名字和你自己的保持一致即可)。 集成Hessian 为了针对Hessian的请求,在 web.xml 中增加了如下映射: <servlet-mapping> <!-- 名字要保持一致 --> <servlet

hessian 在PHP中的使用

谁说胖子不能爱 提交于 2019-12-04 21:27:01
今天听同事说hessian也可以以http的方式和其他的语言交换数据,一直用soap,看来是孤陋寡闻了。 一、hessian是什么? 看到这个单词我还不知道怎么读,音标是[ hes ]读黑森。 Hessian是一个轻量级的远程的数据交换工具,使用简单的方法提供了RMI(远程方法调用)的功能. 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据 hessian是独立于语言的。 二、在PHP中怎么用的呢? 你是不是认为这个和soap一样在php.ini中开启一个就可以使用了,我也这么认为的。可 是我要告诉你的是这样的想法是错误的。 需要去下载一个HessianPHP的库来使用。下载地址 http://hessianphp.sourceforge.net/ 三、看看怎么使用。 1、服务器端。 <?php include_once('HessianPHP/dist/HessianService.php'); class HelloWorldService { public function __construct() { } public function add($a, $b) { return $a+$b; } } $wrapper = new HessianService(); $wrapper-

SPRING注解发布RMI/HTTPInvoker/Hessian/Burlap服务

老子叫甜甜 提交于 2019-12-04 08:30:30
最近做系统重构,计划将多个系统的公共部分抽取出来作为一项公共服务,为以后项目维护和横向扩展奠定基础。 常用的服务发布方式有RMI / HTTPInvoker / Hessian / Burlap,关于这几类java远程服务的性能比较和优缺点大家可参考:http://www.cnblogs.com/jifeng/archive/2011/07/20/2111183.html ,本文着重讲解怎样使用自定的注解标签,结合SPRING将服务方便的发布出去。 一、 Maven配置 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.7</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>3.1.1.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version

几种序列化协议(protobuf,xstream,jackjson,jdk,hessian)相关数据

亡梦爱人 提交于 2019-12-04 08:28:50
别人的相关测试数据: http://code.google.com/p/thrift-protobuf-compare/wiki/Benchmarking 测试纬度 序列化时间 反序列化时间 bytes大小 测试代码 准备protobuf文件 Message.proto文件代码 import "InnerMessage.proto"; package demo; option java_package = "com.agapple.protobuf.data"; option java_outer_classname = "MessageProtos"; option optimize_for = SPEED ; //CODE_SIZE,LITE_RUNTIME option java_generic_services = false; message Message { required string strObj = 1 [default="hello"]; optional int32 int32Obj = 2; optional int64 int64Obj = 3; optional uint32 uint32Obj = 4; optional uint64 uint64Obj = 5; optional sint32 sint32Obj = 6; optional

Java远程通讯可选技术及原理

家住魔仙堡 提交于 2019-12-03 22:38:28
原文网址链接http://www.blogjava.net/BlueDavy/archive/2008/03/04/182077.html 在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,这些名词之间到底是些什么关系呢,它们背后到底是基于什么原理实现的呢,了解这些是实现分布式服务框架的基础知识,而如果在性能上有高的要求的话,那深入了解这些技术背后的机制就是必须的了,在这篇blog中我们将来一探究竟,抛砖引玉,欢迎大家提供更多的实现远程通讯的技术和原理的介绍。 基本原理 要实现网络机器间的通讯,首先得来看看计算机系统网络通信的基本原理,在底层层面去看,网络通信需要做的就是将流从一台计算机传输到另外一台计算机,基于传输协议和网络IO来实现,其中传输协议比较出名的有http、tcp、udp等等,http、tcp、udp都是在为某类应用场景而定义出的传输协议,网络IO,主要有bio、nio、aio三种方式,所有的分布式应用通讯都基于这个原理而实现,只是为了应用的易用,各种语言通常都会提供一些更为贴近应用易用的应用层协议。 应用级协议 远程服务通讯,需要达到的目标是在一台计算机发起请求,另外一台机器在接收到请求后进行相应的处理并将结果返回给请求端

将 Hessian 集成到 Smart 中

烂漫一生 提交于 2019-12-03 21:42:56
Hessian,啥东西? 第一次见到这个单词的时候,我真不知道它是什么意思,虽然我的英语功底已经相当牛逼了。最后查了一下有道词典才知道,原来 Hessian 就是“麻布袋子”啊! 我真搞不懂,为什么一个麻布袋子就能通过 HTTP 发送二进制数据?可能麻布袋子不是一般的袋子,因为它密密麻麻,不是一般的数据可以穿透它,除了二进制数据 0 和 1。 如果您不想使用笨重的 SOAP WebService,也不想使用流行的 REST WebService,或许当您看到 Hessian 的功能后,它一定会让您惊呆! 一般我们是这样玩的,在服务端发布 Hessian 服务,让客户端调用已发布的 Hessian 服务。 请不要把 Hessian 想象得过于复杂与神秘,其实它不过是一个麻布袋子而已。 在服务端我们可以这样来发布 Hessian 服务: @WebServlet("/hessian/user_service") public class UserServiceImpl extends HessianServlet implements UserService { @Override public User login(String username, String password) { return DataSet.select(User.class, "username = ?

spring远程调用

允我心安 提交于 2019-12-03 19:34:02
Spring 远程调用 远程调用是客户端应用和服务端之间的会话。在客户端上所需要的一些功能并不包括在该应用的职能范围内。所以应用向能提供这些功能的其他系统寻求帮助。远程的应用通过远程服务把这些功能公开出来。 一、Spring远程调用概览 Spring为各种远程访问技术的集成提供了工具类。Spring远程支持是由普通(Spring)POJO实现的,这使得开发具有远程访问功能的服务变得相当容易。 Spring远程调用支持6种不同的RPC模式:远程方法调用(RMI)、Caucho的Hessian和Burlap、Spring自己的HTTP invoker、EJB和使用JAX-RPC 的Web Services。 RPC模式 在何种情况下有用 远程方法调用(RMI) 不考虑网络限制(如防火墙)时,访问/公开基于Java的服务 Hessian或 Burlap 考虑网络限制时,通过HTTP访问/公开基于Java的服务 HTTP invoker 考虑网络限制时,访问/公开基于Spring的服务 EJB 访问用EJB实现的遗留的J2EE系统 JAX-RPC 访问Web Services 其中(来自Spring2.0参考手册): l 远程方法调用(RMI)。通过使用 RmiProxyFactoryBean和 RmiServiceExporter,Spring同时支持传统的RMI(使用java.rmi

WebService另一种轻量级实现—Hessian 学习笔记

£可爱£侵袭症+ 提交于 2019-12-03 19:33:44
最近研究,得知他们在使用一种叫做Hessian的WebService实现方式实现远程方法调用,是轻量级的,不依赖JavaEE容器,同时也是二进制数据格式传输,效率比SOAP的XML方式要高。感觉像是RESTFUL方式类似,好奇之下到网上查阅相关资料,总结如下: 简介 Hessian是由caucho提供的一个基于binary-RPC实现的远程通讯library。   1、是基于什么协议实现的?    基于Binary-RPC协议实现。   2、怎么发起请求?    需通过Hessian本身提供的API来发起请求。   3、怎么将请求转化为符合协议的格式的?    Hessian通过其自定义的串行化机制将请求信息进行序列化,产生二进制流。   4、使用什么传输协议传输?    Hessian基于Http协议进行传输。   5、响应端基于什么机制来接收请求?    响应端根据Hessian提供的API来接收请求。   6、怎么将流还原为传输格式的?    Hessian根据其私有的串行化机制来将请求信息进行反序列化,传递给使用者时已是相应的请求信息对象了。   7、处理完毕后怎么回应?    处理完毕后直接返回,hessian将结果对象进行序列化,传输至调用端。 Hessian 调用实例 a) 编写服务端代码 写一个接口: [java] view plain copy public