W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
有些服務(wù)提供了幾十個(gè)方法,而對(duì)于調(diào)用方可能只請(qǐng)求其中一兩個(gè)方法,為了避免這種大型 Service 帶來的龐大的生成代碼,Combine Service 可以讓用戶將原來一個(gè) Service 的幾十個(gè)方法拆分成多個(gè) Service。比如原來的 Service 是:
service ExampleService {
ExampleResponse Method0(3: ExampleRequest req)
ExampleResponse Method1(3: ExampleRequest req)
ExampleResponse Method2(3: ExampleRequest req)
}
用戶 IDL 定義可以拆分為三個(gè) Service:
service ExampleService0 {
ExampleResponse Method0(3: ExampleRequest req)
}
service ExampleService1 {
ExampleResponse Method1(3: ExampleRequest req)
}
service ExampleService2 {
ExampleResponse Method2(3: ExampleRequest req)
}
調(diào)用方可以只保留其中一個(gè) Service 生成代碼,方法名和參數(shù)保持一致不影響 RPC 調(diào)用。
當(dāng) root thrift 文件中存在形如下述定義時(shí):
service ExampleService0 {
ExampleResponse Method0(3: ExampleRequest req)
}
service ExampleService1 {
ExampleResponse Method1(3: ExampleRequest req)
}
service ExampleService2 {
ExampleResponse Method2(3: ExampleRequest req)
}
帶上?--combine-service
? 參數(shù)后,會(huì)生成一個(gè)名為 CombineService 的新 service 及其對(duì)應(yīng)的 client/server 代碼。 其定義為:
service CombineService {
ExampleResponse Method0(3: ExampleRequest req)
ExampleResponse Method1(3: ExampleRequest req)
ExampleResponse Method2(3: ExampleRequest req)
}
當(dāng)同時(shí)使用了?-service
? 參數(shù)時(shí),會(huì)使用 CombineService 作為 main package 中 server 對(duì)應(yīng)的 service 。 注意: CombineService 只是 method 的聚合,因此當(dāng) method 名沖突時(shí)將無法生成 CombineService 。
Tips:
配合 ?extends
?關(guān)鍵字,可以實(shí)現(xiàn)跨文件的 CombineService
如:
service ExampleService0 extends thriftA.Service0 {
}
service ExampleService1 extends thriftB.Service1 {
}
service ExampleService2 extends thriftC.Service2 {
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: