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