通过vs2019的.net core3.1 的项目试错,我发现的相关proto rpc的规则是
rpc 方法名称(输入消息) returns(输出消息)
上面公式全部不能省略,并且 输入输出消息 全部只能是1,为了计为方便记忆 可以表达 为下面这个样子:
rpc RemoteCallName(InputMessage<1>) returns(ReturnMessage<1>);
RemoteCallName 这是用户自己编辑的名称 InputMessage,ReturnMessage是 proto 文件中定义的message 的名称
下面这些全部是错的
rpc RemoteCallName(InputMessage<0>) returns(ReturnMessage<1>);
rpc RemoteCallName(InputMessage<0>);
rpc RemoteCallName(InputMessage<1>);
rpc RemoteCallName(InputMessage<n>);
rpc RemoteCallName(InputMessage<0>) returns(ReturnMessage<0>);
rpc RemoteCallName(InputMessage<n>) returns(ReturnMessage<1>);
这些签名在大部分语言中是常情,但proto里不能
<n> 就是 InputMessage1,InputMessage2, .. 用逗号分开的message类型,这里也不允许多个
所以grpc的形式非常固定