2、thrift的原理重点分析之协议规则thrift文件

  我们知道系统间的通信需要提前设定一定的规则,只有各自双方都遵守这个规则,才能相互间通信,如果每个都有自己的规则,则就无法通信。thrift框架规定了自己的协议,这个协议通过编写thrift文件进行设定,其实就是服务端提供服务的接口。

  我们首先了解一下这个thrift的协议怎样写:

案例:

namespace java cn.stq.thrift
include "../Ex.thrift" 
const i32 a=5
struct User{
  1:string realName,
  2:string loginName,
  3:string birthday
}
service  UserService {
list<User> getUser() throws (1:Ex.thriftDataException dataEx,2:Ex.thriftBusinessException businessEx,3:Ex.thriftSystemException systemEx)
}

namespace:说明命名空间,  java:说明生成java代码,如果要生成c#代码,则改成csharp,cn.stq.thrift:说明生成的程序所在的包

const:用于修饰常量的。

include "../Ex.thrift":说明引入的thrift文件。Ex.thrift:表示自定义的异常文件

struct:表示结构体,这样我们就可以引入java中的JavaBean了

service:表示向外界提供的服务。

thrift的所支持的数据类型:

1)基础数据类型:

boolean类型,值为true或false

byte类型

i16类型  java中对应char

i32类型 java中对应的int

i64类型 java中对应的long

string类型  java中对应的String

double类型 java对应的浮点型double

2) 容器

list类型 java对应的List

set类型 java对应Set

map类型 java对应的Map

3)枚举

例如:

enum Grade{
	M1,M2,M3,H1,H2,H3,MS,HS
}

4)结构体  可以定义像java的javaBean

例如:

struct User{
  1:string realName,
  2:string loginName,
  3:string birthday
}

服务:这是thrift文件的重点了,服务就是服务端对外提供的功能了,如果你想对外提供什么功能,就可以在这添加服务了,但是thrift文件时静态文件,当生成具体的代码后,就无法改变了,这也是thrift框架的一个缺点吧。










猜你喜欢

转载自blog.csdn.net/shaotianqiang/article/details/27339831