gRPC in ASP.NET Core 3.x - gRPC 消息定义
之前寫了幾篇關于 Protoco Buffer 的文章。
gRPC in ASP.NET Core 3.x - gRPC 簡介(1)
gRPC in ASP.NET Core 3.x - gRPC 簡介(2)
當gRPC使用Protocol Buffer作為傳輸協(xié)議的時候,Protocol Buffer里所有的規(guī)則仍然都適用。但是在gRPC使用Protocol Buffer的時候,會添加一些額外的規(guī)則和語法,以便讓gRPC能和它完美配合。
?
首先就是service關鍵字,它用來定義一個gPRC service:
?
在service里面,可以定義rpc調(diào)用,也就是client想讓server做的事情。
這里面就定義了一個rpc調(diào)用,名字叫GetByName。
在調(diào)用里,我們還需要發(fā)送一個Request(請求消息),Request必須是消息類型, ? ? 不可以發(fā)送整型,bool等原始類型,更不可以是void。
同樣的,Response(響應消息)也是 ? ? 消息類型,也不可以使用整型,bool,void等等。
如果請求或響應沒有任何東西,那么就使用空的消息類型,但是必須帶有消息。
?
一旦service定義好之后,我們就使用帶有這個service的Protocol Buffer消息定義所在的文檔,調(diào)用Protoc編譯器來對它進行編譯,編譯后:
首先會生成一個client的stub(樁),也就是為client生成的用于來server交互的代碼。我們只需要調(diào)用這個生成的client即可,其它的一些諸如序列化、反序列化的細節(jié)都不用我們操心。
然后也會生成server ? ? interface,server這部分分為兩塊:
一部分是消息接口的定義,這些接口我們需要去實現(xiàn)。例如C#,就會生成IEmployeeService之類的接口。
另外一部分就是負責序列化、反序列化等工作的代碼。
?
一個service定義的例子
service Employee?{rpc GetByName (Request) returns (Response)rpc GetAll (Request) returns (stream Response)rpc UploadFile (stream Request) returns (Response)rpc Save(stream Request) returns (stream Response) }?
總結
以上是生活随笔為你收集整理的gRPC in ASP.NET Core 3.x - gRPC 消息定义的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET Core开发实战(第9课:命令
- 下一篇: asp.net ajax控件工具集 Au