Grpc for C#

8 篇文章 0 订阅

Protobuf : https://developers.google.com/protocol-buffers/docs/csharptutorial​​​​​​​g

grpc : gRPC 官方文档中文版_V1.0

      C# | gRPC

protobuf笔记:
  
syntax = "proto3";
package tutorial;

import "google/protobuf/timestamp.proto";

  option csharp_namespace = "Google.Protobuf.WellKnownTypes";
  #csharp_namespace已指定该选项以覆盖默认值,因此生成的代码使用命名空间 Google.Protobuf.Examples.AddressBook而不是 Tutorial.


1.每个元素上的“= 1”、“= 2”标记标识该字段在二进制编码中使用的唯一“标签”。标签编号 1-15 比更高的编号需要少一个字节来编码,因此作为一种优化,您可以决定将这些标签用于常用或重复的元素,而将标签 16 和更高的标签用于不太常用的可选元素。重复字段中的每个元素都需要重新编码标签号,因此重复字段特别适合这种优化

2.字段是repeated,则该字段可以重复任意次数(包括零次)。重复值的顺序将保存在协议缓冲区中。将重复字段视为动态大小的数组

3. 简单的message编译成C#类,使用protoc编译工具在您的.proto:上运行协议缓冲区编译器
   protoc -I=. --csharp_out=. ./unity3D.proto
   
   
4. 每一个产生的类都有一个静态的Parser属性,用于解序列化本地的二进制文件
   每个生成的类都有一个静态Descriptor属性
   
5.如果想将多条消息写入单个文件或流,需要我们自己跟踪一条消息的结束和下一条的开
  最简单方法是在编写消息本身之前写入每条消息的大小。当您读回消息时,您读取大小,然后将字节读入单独的缓冲区,然后从该缓冲区解析
  
6.Protobuf不是为处理大的消息而设计的,如果大于1M,考虑另外的策略

7.
bytes类型: 可以包含不超过2^32个字节的任意序列 , 对应(Google.ProtoBuf中)C#的类型ByteString, 对应C++中的string

8.带有rpc服务的编译:
  protoc --plugin=protoc-gen-grpc=grpc_csharp_plugin --csharp_out=OUT_DIR \
    --grpc_out=OUT_DIR --grpc_opt=lite_client,no_server \
    -I INCLUDE_DIR foo.proto

服务器流式 RPC : 与我们的简单示例类似,不同之处在于服务器在收到客户端的请求消息后发回响应流。在发回所有响应后,服务器的状态详细信息(状态代码和可选状态消息)和可选的尾随元数据被发回以在服务器端完成。客户端在获得服务器的所有响应后完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值