您应该使用 protobuf 作为用于处理还是仅用于传输的数据类型?
Should you use protobuf as the datatype you use for processing or only for transmission?
我有一个用 Go 编写的矩阵结构。该矩阵结构有很多方法。我希望能够高效地计算矩阵运算,但我也希望能够通过网络发送它以分发计算。
我目前将矩阵及其方法与 protobuf 定义分开。当我需要通过网络发送它时,我必须从现有的 Matrix{}
结构创建一个新的 pb.Matrix{}
,然后进行 grpc 调用。那似乎是一种浪费。那么,这是一种浪费吗?我是否应该将矩阵结构定义为 protobuf 定义,然后使用嵌入来定义其上的操作?还是让它们彼此分开更好?
在体系结构方面,我会将它们分开。这符合单一职责原则。在我的一个项目中,我们使用这种形式:
type Foo struct { ... }
func NewFooFromProto(f *myproto.Foo) *Foo { ... }
func (f *Foo) ToProto() *myproto.Foo { ... }
我有一个用 Go 编写的矩阵结构。该矩阵结构有很多方法。我希望能够高效地计算矩阵运算,但我也希望能够通过网络发送它以分发计算。
我目前将矩阵及其方法与 protobuf 定义分开。当我需要通过网络发送它时,我必须从现有的 Matrix{}
结构创建一个新的 pb.Matrix{}
,然后进行 grpc 调用。那似乎是一种浪费。那么,这是一种浪费吗?我是否应该将矩阵结构定义为 protobuf 定义,然后使用嵌入来定义其上的操作?还是让它们彼此分开更好?
在体系结构方面,我会将它们分开。这符合单一职责原则。在我的一个项目中,我们使用这种形式:
type Foo struct { ... }
func NewFooFromProto(f *myproto.Foo) *Foo { ... }
func (f *Foo) ToProto() *myproto.Foo { ... }