gRPC 服务使用库中的模型
gRPC Service use models from library
我正在开发我的第一个 gRPC 服务。我一切正常。比如,我可以从客户端调用我的服务并获得响应。我的问题是我的 gRPC 服务可以使用来自另一个库的模型吗?
我的解决方案中有几个项目。
gRPC 服务器
gRPC 客户端
通用 DTO 库
还有一些
当我定义原型文件时,是否可以使用通用 DTO 库中的 类?
my.proto
syntax = "proto3";
option csharp_namespace = "myNameSpace";
package myPackageName;
// The service definition.
service MyService{
rpc MyMethodName (DtoFromAnotherLibrary) returns (byte[]);
}
谢谢,
特拉维斯
这是不可能的,因为 Proto 不知道您的 C# 项目。
不过,您可以考虑使用 code-first gRPC,在其中编写 C# 代码,然后创建您的原型。
正如@Ray 所说,您不能通过 gRPC 接口使用您的模型对象,他为 code-first 方法提供了一个 link。
我倾向于将我的原型定义视为我的外部接口,并小心地更新它们以确保在接口老化时向后兼容。因此,我将编写与 gRPC 定义分开的模型对象并编写扩展方法(ToProto
用于模型,ToModel
用于 gRPC 消息)以在两种类型之间来回切换。这看起来像是重复的工作,但能够灵活地向我的模型对象添加内容,例如 属性 更改通知,或其他便利 methods/properties 而不会影响外部接口,这对我来说是一个优势。我花很多时间在前端工作,所以它类似于model/view模型关系。
我正在开发我的第一个 gRPC 服务。我一切正常。比如,我可以从客户端调用我的服务并获得响应。我的问题是我的 gRPC 服务可以使用来自另一个库的模型吗?
我的解决方案中有几个项目。
gRPC 服务器
gRPC 客户端
通用 DTO 库
还有一些
当我定义原型文件时,是否可以使用通用 DTO 库中的 类?
my.proto
syntax = "proto3";
option csharp_namespace = "myNameSpace";
package myPackageName;
// The service definition.
service MyService{
rpc MyMethodName (DtoFromAnotherLibrary) returns (byte[]);
}
谢谢, 特拉维斯
这是不可能的,因为 Proto 不知道您的 C# 项目。
不过,您可以考虑使用 code-first gRPC,在其中编写 C# 代码,然后创建您的原型。
正如@Ray 所说,您不能通过 gRPC 接口使用您的模型对象,他为 code-first 方法提供了一个 link。
我倾向于将我的原型定义视为我的外部接口,并小心地更新它们以确保在接口老化时向后兼容。因此,我将编写与 gRPC 定义分开的模型对象并编写扩展方法(ToProto
用于模型,ToModel
用于 gRPC 消息)以在两种类型之间来回切换。这看起来像是重复的工作,但能够灵活地向我的模型对象添加内容,例如 属性 更改通知,或其他便利 methods/properties 而不会影响外部接口,这对我来说是一个优势。我花很多时间在前端工作,所以它类似于model/view模型关系。