grpc: как вернуть ссылку на другой сервис - PullRequest
0 голосов
/ 19 сентября 2019

Я пишу сервис, который создает другой сервис.Как вернуть созданный сервис?

syntax = "proto3";

message AddRequest {
  int32 a = 1;
  int32 b = 2;
}
message AddResponse { int32 sum = 1; }

service Calculator {
  rpc Add(AddRequest) returns (AddResponse) {}
}

message CreateRequest {}
message CreateResponse { Calculator calc = 1; }

service Creator {
  rpc Create(CreateRequest) returns (CreateResponse) {}
}

Разрешает ли это grpc?возврат Calculator в Creator.Create?

1 Ответ

1 голос
/ 19 сентября 2019

gRPC (с буферами протокола) не является объектно-ориентированным.Вы передаете сообщения , а не объекты;данные, а не ссылки.В тот момент, когда вы передаете объекты, вы открываете ящик Пандоры, потому что тогда вам нужно знать, когда освобождать эти объекты.

Большинство "современных" сетевых систем связи больше не являются объектно-ориентированными.Раньше это было общим с такими вещами, как CORBA и JNI.Однако при разработке системы с ними становится трудно управлять.Ориентация объекта все еще распространена для локальных механизмов IPC, таких как D-Bus и Binder.

...