首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >服务器上的GRPC服务可以使用不同的语言实现吗?

服务器上的GRPC服务可以使用不同的语言实现吗?
EN

Stack Overflow用户
提问于 2021-08-06 04:30:04
回答 1查看 672关注 0票数 2

如我所知,可以为任何支持GRPC的语言生成GRPC客户机。但是,对于同一个proto文件,服务器上的服务可以使用不同的语言实现吗?

例如,我有一个proto文件:

代码语言:javascript
复制
service Greeter {
  rpc SayHello (Request) returns (Reply) {}
}

service Goodbye {
  rpc SayGoodBye(Request) returns (Reply) {}
}

message Request {
  string name = 1;
}

message Reply {
  string message = 1;
}

是否可以用不同的语言实现2种服务Greeter和告别,例如:

Golang

  • Goodbye:

当我将这两个服务分成两个不同的proto文件时,情况如何?

如果可以用不同的语言来做,这是一个好的做法吗?我能想到的用法是团队的所有成员都不能用同一种语言工作,比如很难招募新的Golang开发人员,而团队需要招募一些Java开发人员来继续这个项目。

EN

回答 1

Stack Overflow用户

发布于 2021-08-06 05:01:20

Proto文件是泛型合同,可供共享相同契约的许多不同应用程序/服务使用。通常的做法是为不同语言构建同一组proto文件,并由使用这些语言的应用程序使用,而不会失去通用性。

所以是的,Greeter可以用Golang实现,再见可以用Java实现,只要它们正确地实现了必要的gRPC接口。

您可以将服务分离到不同的proto文件中,但这将取决于它们之间的相关性。如果您正在提供一组特定的功能,这些功能可以很好地结合在一起,那么最好在同一个proto文件中使用。在这种情况下使用最好的判断,就像您决定在同一个模块中放置一组Python类时使用的方式一样。

关于在不同语言上使用服务是否是好/坏实践的最后一个问题,请记住,gRPC允许基于同一原始协议的许多语言精确地允许协议满足不同的需求。例如,您可以有一个Python,它是一个非常用户友好的Python,它通过gRPC与C++服务器进行通信,目的是利用C++性能。只要从proto契约中正确地实现服务,考虑到应用程序的需求,您就可以自由地使用您想要的语言。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68676145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档