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