java rpc 反序列化 泛型 接口

json 目前只能静态反序列化 泛型参数,不能动态.

不能动态的化就无法做成框架,框架技术.


现主流的序列化框架以及他的优缺点

框架名称 性能排序 优点 缺点 是否推荐
Protocal Buffers 1 序列化快;开源 代码侵入性性强,需要相关的配置文件,无法直接使用Java等面向对象编程语言中的对象
Json/fastJson/JackSon 2 序列化快,小巧,传输数据格式使用范围广,开源夸平台,夸语言

对泛型的支持不是很好。需要传入一个有泛型具化类。 可以是单独的TypeReference,或者是RequestClass object。

T result request(Request params);

极力推荐
Hessian 4 夸平台,夸语言,序列化的使用流程与java内置序列化类似,容易上手 性能略低 推荐
Java内置序列化 5 使用简单 由于是该语言的特殊序列化方式,其他语言没有办法进行解析,夸平台不支持,且性能较低 不支持
Xstream 3 把对象转化成xml最好用的专业工具 使用不是很广泛,因为现在大多数的数据传输都通过json居多 xml数据传输序列化则强烈推荐

看代码,看看各个框架在代码中的具体实现


http://m.blog.csdn.net/ydwyyy/article/details/74452383



  • Hessian 对象的序列化简单实用

    public static void main(String[] args) throws IOException {
        Person person = new Person();
        person.setAge(18);
        person.setName("ydw");
        person.setId(1L);
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        HessianOutput hessianOutput = new HessianOutput(byteArrayOutputStream);
        //序列化
        hessianOutput.writeObject(person);
        byte[] bytes = byteArrayOutputStream.toByteArray();
        //反序列化
        ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
        HessianInput hessianInput = new HessianInput(byteArrayInputStream);
        Person ydw = (Person) hessianInput.readObject();
        System.out.println(ydw);
    }



你可能感兴趣的:(服务化中间件)