【发布时间】:2016-12-12 12:12:32
【问题描述】:
假设我们有一个包含 grpc 服务器实现的 go api。
这个 grpc 服务器方法必须执行各种任务,这些任务需要在同一个 api 中抽象为不同的服务。
有没有办法在 grpc 服务器中注入这个新服务?
示例代码:
package grpcserver
func (g *GrpcServer) GrpcServerExample(ctx context.Context, r *grpcpackage.SampleGrpcRequest) (*grpcpackage.SampleGrpcResponse, error) {
service := differentService{} //how to inject this instead of creating here
result := service.DoSomething()
return nil,nil
}
【问题讨论】:
-
如果您要使用相同的 API 抽象一些东西,为什么不传递接口呢?但是,如果 2 个组件做 2 个根本不同的事情,我认为抽象不是前进的方向。不同的事情由不同的组件处理,而不是由抽象层......
-
@EliasVanOotegem 我不想把它放在 proto 文件中
GrpcServerExample的服务定义中,因为differentService是 api 内部的。有没有其他办法?
标签: go dependency-injection grpc