一 什麼是grpc json
google出了一款分佈式通信框架:grpc。我想這也不是新的東西了,在13年的一個項目中,用在了數據層和業務端之間的通信上,當時並無以爲怎麼樣,由於wcf很輕鬆的也能夠能夠實現哪些功能。可是想在想想,確實在某些場合,grpc比wcf要更好一點。第一就是比wcf要輕量級的多,第二,跨平臺,他出了一款協議Protocol Buffers,來定義接口,而後使用工具去生成不一樣 的語言代碼。而wcf咱們也知道,跨平臺使用soap協議,基於http,壞處就是慢。而基於tcp或者命名管道,又不跨平臺。因此grpc很是適合某些特殊的場景中使用。尤爲是他的消息交換是json,比wcf的xml輕量級不少。框架
二 配置說明 tcp
vs2017簡單的安裝幾個nuget包:分佈式
爲項目添加proto文件,查看工程文件工具
<ItemGroup> <Protobuf Include="proto\order.proto" CompileOutputs="false" /> </ItemGroup>
CompileOutputs:這個配置屬性意思就是不要編譯進程序集google
<ItemGroup> <Protobuf Include="**/*.proto" OutputDir="%(RelativePath)" CompileOutputs="false" /> </ItemGroup>
OutputDir :這個屬性意思就很明顯了,輸出目錄
<ItemGroup> <Protobuf Include="**/*.proto" OutputDir="%(RelativePath)" CompileOutputs="false" GrpcServices="None" /> <Protobuf Update="**/hello/*.proto;**/bye/*.proto" GrpcServices="Both" /> </ItemGroup>
<Protobuf Update="**/hello/*.proto;**/bye/*.proto" GrpcServices="Both" /> 告訴插件只有這個節點配置的proto才進行更新,這是針對大一點的項目,不想讓它生成整個項目的proto
GrpcServices是指生成客戶端,仍是服務端,仍是兩部分都生成。
<ItemGroup> <Protobuf Include="**/*.proto" OutputDir="%(RelativeDir)" CompileOutputs="false" GrpcServices="None" /> </ItemGroup>
GrpcServices="None" 只生成message不生成servicesspa
<ItemGroup> <Protobuf Include="../**/*.proto" ProtoRoot=".." OutputDir="%(RelativeDir)" CompileOutputs="false" /> </ItemGroup>