【问题标题】:Custom model/data binder for a grpc servicegrpc 服务的自定义模型/数据绑定器
【发布时间】:2020-06-04 22:08:02
【问题描述】:

我想知道是否有自定义数据绑定器(来自 Spring MVC)或自定义模型绑定器(来自 ASP.NET MVC) 在grpc框架中?

目标是能够将 protobuf 对象(即请求、传输级 DTO)转换为域实体。

例如而不是我的服务实现中的这段代码:

public void createCustomer(Protobuf.CreateCusomerRequest request) {...}

我想能够说:

public void createCustomer(Domain.CreateCusomerCommand command) {...}

如果我有一个自定义转换器 Protobuf.CreateCusomerRequest -> Domain.CreateCusomerCommand 我想将它插入 grpc 管道,以便运行时调用该转换器将请求转换为命令,然后调用传递命令的服务而不是请求。

欢迎提出任何想法。

【问题讨论】:

    标签: spring-boot grpc model-binding grpc-java


    【解决方案1】:

    我们所做的是实现了自己的 protoc 编译器插件,该插件知道如何将传输消息转换为实体消息。所以服务的实现看起来像domainService.persist(protoRequestMessage.toDomainObject() ) 总有一天它会变成开源的:-)

    【讨论】:

    • 我最终创建了一个自定义命令管道。原始的 .proto 请求被分派到管道中,其中包含与命令/protobuf 之间的验证和转换步骤作为方面附加。
    猜你喜欢
    • 1970-01-01
    • 2015-11-10
    • 2012-02-18
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    • 2018-08-22
    相关资源
    最近更新 更多