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框架的一個缺點吧。










發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章