zoukankan      html  css  js  c++  java
  • IDL和生成代码分析

    IDL:接口描述语言

    这里使用thrift-0.8.0-xsb这个版本来介绍IDL的定义以及简单实例分析。

    1. namespace 定义包名

    2.struct 结构体,定义服务接口的参数和返回值用到的类结构。基本类型不需要使用struct.

    3.service 定义接口:demo.thrift

    复制代码
     1 namespace java com.thrift.demo
     2 
     3 struct Parameter {
     4     1: required i32 id;
     5     2: required string name;
     6 }
     7 
     8 service DemoService {
     9     i32 demoMethod(1:string param1, 2:Parameter param2, 3:map<string,string> param3);
    10 }
    复制代码

    命令行执行 thrift -r --gen java demo.thrift,生成gen-java文件夹,在eclipse下创建名为gen-java的工程,然后将生成的gen-java放入eclipse的工作空间,即可关联成为一个gen-java工程(也可以自定义一个java工程,然后将生成的代码导入,此时只有JRE-System Library,java文件均报错。手动创建一个新的文件夹将Thrift工程需要的jar包以及libthrift-0.8.0.jar放置到文件夹下,同时在Java Build Path中添加引用。我这里直接使用eclipse自动fixed setup 导入,然后就出现了Refferenced Libraries文件夹,文件夹中包含了libthrift-0.8.0.jar等需要的jar包。如下图所示:

    可见:每个struct会单独生成一个类,每个service也会生成一个类。下面着重看下生成的Demoservice.java。

    如上图所示,Demoservice.java中主要由5部分组成:

    1.接口类型:Iface(同步调用) AsyncIface(异步调用)

    2.客户端类型:Client    AsynClient

    3.方法参数封装类类型:demoMethod_args (方法名_args)

    4.返回结果封装类类型:demoMethod_result(方法名_result)

    5.Processor

    做人第一,做学问第二。
  • 相关阅读:
    hdu5119 DP
    poj3692 最大点权独立集/最大独立集
    poj2125 最小点权覆盖集
    二分图总结
    poj2531 Network Saboteur
    poj1573 Robot Motion
    poj2632 Crashing Robots
    poj1068
    动态规划的思考(三)
    代刷题目分类(三)
  • 原文地址:https://www.cnblogs.com/xumaojun/p/8526531.html
Copyright © 2011-2022 走看看