标签: grpc

gRPC +图片上传

我想创建一个简单的gRPC端点,用户可以上传他/她的图片.协议缓冲区声明如下:

message UploadImageRequest {
    AuthToken auth = 1;
    // An enum with either JPG or PNG
    FileType image_format = 2;
    // Image file as bytes
    bytes image = 3;
}
Run Code Online (Sandbox Code Playgroud)

无论gRPC文档中的警告如何,这种上传图片(和接收图片)的方法仍然可以吗?

如果没有,使用标准表格上传图片并存储图像文件位置是更好的方法(标准)吗?

protocol-buffers grpc

17
推荐指数
2
解决办法
2万
查看次数

如何在 C# 中生成 .proto 文件或使用“Code First gRPC”

我想在 asp.net 核心 Web 应用程序中使用带有 .NET 的 gRPC。如何从现有的 C# 类和模型对象生成必要的 .proto 文件?我不想重新编写反映现有代码的 .proto 文件,我希望从类和模型对象自动生成 .proto 文件。

我调用这个方法来注册我的服务类。

builder.MapGrpcService<MyGrpcService>();

public class MyGrpcService
{
    public Task<string> ServiceMethod(ModelObject model, ServerCallContext context)
    {
        return Task.FromResult("It Worked");
    }
}
Run Code Online (Sandbox Code Playgroud)

ModelObject[DataContract][DataMember]有订单属性。

这可能吗?我在网上看到的每个例子都以一个.proto文件开头。我已经在MyGrpcService类中定义了我想要的服务方法。但也许这只是落后于标准的做事方式......

像旧的 .NET 远程处理这样的东西是理想的,您可以从远程端点请求一个接口,它神奇地用于gRPC来回通信,但也许这太简单了。

c# protocol-buffers grpc .net-5

16
推荐指数
1
解决办法
6171
查看次数

如何将HTTP消息从另一个节点解析到gRPC服务器

我可以成功运行gRPC client,并gRPC serverc++现在我希望建立节点A和GRPC服务器即之间的通信node B的连接形象.

我可以参考下面的任何例子是我正在寻找的.

我有这个节点Ahttp消息(GET方法)我需要解析,即提取消息并在节点C上运行请求.我应该在节点A和gRPC服务器之间寻找什么.

提前致谢

http消息到gRPC服务器

c++ http grpc grpc-web

15
推荐指数
1
解决办法
362
查看次数

多个一元 rpc 调用与 grpc 中长时间运行的双向流?

我有一个用例,其中许多客户端需要不断向服务器发送大量指标(几乎是永久的)。服务器需要存储这些事件,并在以后处理它们。我不希望服务器对这些事件有任何响应。
我正在考虑为此使用grpc。最初,我认为客户端流可以做(就像 envoy 那样),但问题是客户端流不能确保在应用程序级别的可靠交付(即,如果流在两者之间关闭,则实际处理了多少发送的消息由服务器),我负担不起。
我的思考过程是,我应该使用双向流、服务器流中的 acks 或多个一元 rpc 调用(可能在重复字段中对事件进行一些批处理以提高性能)。
这些哪个会更好?

stream grpc grpc-java

15
推荐指数
2
解决办法
6844
查看次数

protobuf lite 和 protobuf java 中的重复类

我在android实现中使用带有protobuf lite的grpc。但是 protobuf lite 没有 google 时间戳,而我的 protos 导入了“google/protobuf/timestamp.proto”。所以我添加了实现 'com.google.protobuf:protobuf-java:3.7.1' 到包含谷歌时间戳的gradle。但在那之后代码编译有错误。例如 :Duplicate class com.google.protobuf.AbstractMessageLite 在模块 protobuf-java-3.7.1.jar (com.google.protobuf:protobuf-java:3.7.1) 和 protobuf-lite-3.0.1.jar ( com.google.protobuf:protobuf-lite:3.0.1)。任何解决此问题的想法将不胜感激。

apply plugin: 'com.android.application'
apply plugin: 'com.google.protobuf'

android {
    compileSdkVersion 28
    buildToolsVersion "29.0.0"
    defaultConfig {
        minSdkVersion 21
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        debug {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }

    sourceSets {
        main {
            proto {
                srcDir 'src/main'
            }
            java {
                srcDir 'src/main'
            }
        } …
Run Code Online (Sandbox Code Playgroud)

android timestamp protocol-buffers grpc

15
推荐指数
2
解决办法
9610
查看次数

如何在 .NET Framework 中创建 gRPC 客户端?

我按照以下说明操作:

https://docs.microsoft.com/en-us/aspnet/core/tutorials/grpc/grpc-start?view=aspnetcore-3.1&tabs=visual-studio

在 .NET Core 中创建 gRPC 服务和客户端,一切都很好。

接下来,我需要一个旧的 .NET 框架应用程序访问该服务。我找到了一些安装的 NuGet 包,但没有找到任何告诉您如何使用它们来制作 gRPC 客户端的内容。我确定它在某个地方,但目前被 .NET Core 版本的文档淹没了。

我尝试创建一个 .NET Standard 项目来弥补差距,但 .Net Core 包需要 .Net Standard 2.1,它没有使用任何版本的 .Net Framework 来引用它。

谁能告诉我如何做到这一点或为我指明正确的方向?

编辑:所以我找到了一些 .Net Framework 与 gRPC 一起使用的代码。.Net Framework 示例默认为不安全连接,而 .Net Core 示例默认为安全连接。关于如何改变任何一个都没有明确的路径。我试过生成一个证书来让客户端连接,但这没有用。

所以我的新问题是:有谁知道如何说服 .Net Core gRPC 服务接受不安全的 (http:) 连接?

.net c# grpc

15
推荐指数
2
解决办法
1万
查看次数

与 gRPC 客户端重新连接的正确方法

我有一个 Go gRPC 客户端连接到在 k8s 集群中的不同 pod 中运行的 gRPC 服务器。

它运行良好,可以接收和处理请求。

我现在想知道在 gRPC 服务器 Pod 被回收的情况下如何最好地实现弹性。

据我所知,clientconn.go 代码应该自动处理重新连接,但我就是无法让它工作,我担心我的实现在第一个实例中是不正确的。

从 main 调用代码:

go func() {     
        if err := gRPCClient.ProcessRequests(); err != nil {
            log.Error("Error while processing Requests")
            //do something here??
        }
    }()
Run Code Online (Sandbox Code Playgroud)

我在 gRPCClient 包装器模块中的代码:

func (grpcclient *gRPCClient) ProcessRequests() error {
    defer grpcclient.Close()    

    for {
        request, err := reqclient.stream.Recv()
        log.Info("Request received")
        if err == io.EOF {          
            break
        }
        if err != nil {
            //when pod is recycled, this is what's hit …
Run Code Online (Sandbox Code Playgroud)

network-programming go kubernetes grpc

15
推荐指数
1
解决办法
2万
查看次数

gRPC/Protobuf 3语法:以分号和'{}'结尾的rpc行之间有什么区别?

我已经看到了使用Protobuf v3声明gRPC服务的两种不同方式.有些代码的rpc行末尾带有分号(例如当前的proto3文档):

service SearchService {
  rpc Search (SearchRequest) returns (SearchResponse);
}
Run Code Online (Sandbox Code Playgroud)

其他代码的rpc行结尾为 {}:

service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}
Run Code Online (Sandbox Code Playgroud)

这两个都使用protoc v3.0.0-alpha-2编译器编译并生成相同的(go)代码.

这两种语法有什么区别?

protocol-buffers grpc

14
推荐指数
1
解决办法
1327
查看次数

我们如何将gRPC与Flatbuffers一起使用?

我一直在研究Apache Thrift,ProtoBuf和Flatbuffers.我发现教程在链接中使用带有protobuf的gRPC,但我没有找到任何使用gRPC和Flatbuffers的文档.有人可以指点我的相关文件吗?我在谷歌和Stackoverflow上查了一下.任何帮助,将不胜感激.

flatbuffers grpc

14
推荐指数
2
解决办法
3249
查看次数

golang protobuf从生成的json标签中删除omitempty标签

我正在使用谷歌grpc与json代理.由于某种原因,我需要omitempty从*.pb.go文件中生成的结构中删除标记.

如果我有这样的原型消息

message Status {
  int32 code = 1;
  string message = 2;
}
Run Code Online (Sandbox Code Playgroud)

生成的结构看起来像这样

type Status struct {
  Code int32 `protobuf:"varint,1,opt,name=code" json:"code,omitempty"`
  Message string `protobuf:"bytes,2,opt,name=message" json:"message,omitempty"`
}
Run Code Online (Sandbox Code Playgroud)

但我需要omitempty从生成的结构中删除标记.我怎样才能做到这一点?

go protocol-buffers grpc proto3

14
推荐指数
5
解决办法
7941
查看次数