当前位置: 首页 > news >正文

突唯阿网站seo电子商务网站建设与管理期末考试题

突唯阿网站seo,电子商务网站建设与管理期末考试题,网络推广营销软件,西安网站优化指导rpc全称远程过程控制,说白了是一种对信息发送和接收的规则编写方法,来自google,这些规则会以protobuf代码存到proto文件里。我以autoGen中agent_worker.proto为例,大概长这样 syntax "proto3";package agents;option …

rpc全称远程过程控制,说白了是一种对信息发送和接收的规则编写方法,来自google,这些规则会以protobuf代码存到proto文件里。我以autoGen中agent_worker.proto为例,大概长这样

syntax = "proto3";package agents;option csharp_namespace = "Microsoft.AutoGen.Protobuf";import "cloudevent.proto";
import "google/protobuf/any.proto";message AgentId {string type = 1;string key = 2;
}message Payload {string data_type = 1;string data_content_type = 2;bytes data = 3;
}message RpcRequest {string request_id = 1;optional AgentId source = 2;AgentId target = 3;string method = 4;Payload payload = 5;map<string, string> metadata = 6;
}message RpcResponse {string request_id = 1;Payload payload = 2;string error = 3;map<string, string> metadata = 4;
}message RegisterAgentTypeRequest {string type = 1;
}message RegisterAgentTypeResponse {
}message TypeSubscription {string topic_type = 1;string agent_type = 2;
}message TypePrefixSubscription {string topic_type_prefix = 1;string agent_type = 2;
}message Subscription {string id = 1;oneof subscription {TypeSubscription typeSubscription = 2;TypePrefixSubscription typePrefixSubscription = 3;}
}message AddSubscriptionRequest {Subscription subscription = 1;
}message AddSubscriptionResponse {
}message RemoveSubscriptionRequest {string id = 1;
}message RemoveSubscriptionResponse {
}message GetSubscriptionsRequest {}
message GetSubscriptionsResponse {repeated Subscription subscriptions = 1;
}message Message {oneof message {RpcRequest request = 1;RpcResponse response = 2;io.cloudevents.v1.CloudEvent cloudEvent = 3;}
}message SaveStateRequest {AgentId agentId = 1;
}message SaveStateResponse {string state = 1;optional string error = 2;
}message LoadStateRequest {AgentId agentId = 1;string state = 2;
}
message LoadStateResponse {optional string error = 1;
}message ControlMessage {// A response message should have the same id as the request messagestring rpc_id = 1;// This is either:// agentid=AGENT_ID// clientid=CLIENT_IDstring destination = 2;// This is either:// agentid=AGENT_ID// clientid=CLIENT_ID// Empty string means the message is a responseoptional string respond_to = 3;// One of://     SaveStateRequest saveStateRequest = 2;//     SaveStateResponse saveStateResponse = 3;//     LoadStateRequest loadStateRequest = 4;//     LoadStateResponse loadStateResponse = 5;google.protobuf.Any rpcMessage = 4;
}service AgentRpc {rpc OpenChannel (stream Message) returns (stream Message);rpc OpenControlChannel (stream ControlMessage) returns (stream ControlMessage);rpc RegisterAgent(RegisterAgentTypeRequest) returns (RegisterAgentTypeResponse);rpc AddSubscription(AddSubscriptionRequest) returns (AddSubscriptionResponse);rpc RemoveSubscription(RemoveSubscriptionRequest) returns (RemoveSubscriptionResponse);rpc GetSubscriptions(GetSubscriptionsRequest) returns (GetSubscriptionsResponse);
}

为什么要用protobuf定义rpc呢?首先,rpc是一种比http和restapi更轻量的协议,应该都知道http要有http头,header,rpc采用更紧凑的编码方式,具体我也不懂,反正它的协议叫做gRPC。然后,为了让rpc流行起来,需要一个在各种语言中都能被使用的方法,protobuf作为一种中间语言,在编写后可以被编译成各种语言的版本,然后供各语言的代码调用,这个编译器叫protoc,c是complier。

你可以简单地把proto代码看作是对数据结构的定义,就像python的dataclass一样。有几个字段需要解释:
oneof:它里面会包含多个变量名,在你实例化对应数据类时,只能出现其中一个变量,其他的不可用。
map:看作dict。
repeat:看作list。
packed:是跟在某些数据类型的变量后面的定义,用于注明这些值是否需要精简地序列化,proto3里默认开启。
enum Status:定义一个枚举数据类型Status。像python一样,Status会定义一个名字并附上具体的值,之后可以用Status定义其他变量的类型。
message:定义发送的信息的数据结构。
数据类型:在变量名前面注明,可以是某个定义完的数据结构,和python一样。
变量 = 数字:数字是编号,用于数据在序列化和反序列化时作标记和识别。因此,它可以不是顺序的,可以随便定义(但是最好别这样做)。
service:与message平级,用于定义一个服务所提供的所有rpc服务。
rpc:注明这是一个rpc服务,将注明发送和接收的message样式。
stream:注明这是一个流式传输。如果不是流式传输,rpc服务只会做到“客户端发送message,服务端返回对应的message”,就像一个request一样。
nest message:它只是一种嵌套形式,在message里定义一个message,毕竟message也是一个变量类型。
reserved:可以用来预留编号和变量名。
DynamicMessage:它用来支持动态解析,在不知道来犯的message类型时,对方可能同时传过来一个proto文件的descriptor文件,用它来动态解析message。

protobuf已经到protobuf3了,之前所有参数都可以注明可选or必选,现在都是可选。

http://www.yayakq.cn/news/854820/

相关文章:

  • 宠物寄养网站毕业设计利用百度搜索自己的网站
  • 手机设计培训网站建设seo网站建设微
  • 济南网站优化公司电话wordpress做注册登陆界面
  • 建立自己的购物网站世界军事新闻最新消息
  • 深圳京圳建设监理有限公司网站网站开发后端框架什么意思
  • 外贸网站好做吗wordpress上不去
  • 企业如何做好网站的seo优化html网页模板网站
  • 广州市筑正工程建设有限公司网站福州网站建设liedns
  • 如何设计网站的首页专门做画册封面的网站
  • 建设部网站公示公告站长工具介绍
  • 浙江省国有建设用地出让网站优设网页设计网站
  • 国美在线网站建设费用做一家视频网站
  • 陕西省城乡和住房建设厅网站wordpress 主题文件夹
  • 沭阳做网站的公司公司推广做哪个网站吗
  • wordpress网站搭建网站开发的实验报告
  • 网站ico图标怎么用五家渠网站建设
  • 建设专业网站哪家技术好做网站点击软件
  • 十堰网站建设十堰做网站需要找人优化吗
  • 网站的特征包括h5游戏在线玩
  • 爱站工具官网网站功能模块介绍
  • 珠海专业做网站的公司制作相册影集软件
  • 重庆做网站熊掌号dedecms模板站
  • 企业为什么要做手机网站浙江城乡建设厅官网
  • 国内免费视频素材网站有哪些爱美眉网站源码
  • 网站制作手机模板开发一款软件的流程
  • 上海网站建设网站开发如何做网站规范
  • 免费网站建设哪个好代理网页浏览器
  • 网站怎么放404页面黑wordpress网站
  • 鹤壁市住房和城乡建设局网站毕业设计论文网站开发需要多少钱
  • asp.net网站管理系统手机手机网站建设