Chcę używać gRPC z .NET core 3 w aplikacji sieci web asp.net core. Jak wygenerować niezbędny plik .proto z istniejących obiektów klasy C # i modeli? Nie chcę ponownie zapisywać pliku .proto, który odzwierciedla istniejący kod, chcę, aby plik .proto był automatycznie generowany z obiektów klasy i modelu.
Wywołuję tę metodę, aby zarejestrować moją klasę usług.
builder.MapGrpcService<MyGrpcService>();
public class MyGrpcService
{
public Task<string> ServiceMethod(ModelObject model, ServerCallContext context)
{
return Task.FromResult("It Worked");
}
}
ModelObject
ma [DataContract]
iz [DataMember]
atrybutami zamówienia.
czy to możliwe? Każdy przykład, który widzę online, zaczyna się od .proto
pliku. Zdefiniowałem już pożądane metody usługi w MyGrpcService
klasie. Ale może to tylko wstecz do tego, co jest standardowym sposobem robienia rzeczy ...
Coś w stylu starego zdalnego .NET byłoby idealne, gdy można po prostu poprosić o interfejs ze zdalnego punktu końcowego i magicznie używa się gRPC
do komunikacji tam iz powrotem, ale może to zbyt uproszczony widok.
źródło
Odpowiedzi:
Możesz do tego użyć Marca Gravella
protobuf-net.Grpc
. Doświadczenie w tworzeniu kodu podczas budowania usług gRPC jest dokładnym przykładem użycia, od którego zaczął nad nim pracować. Opiera się na tym,protobuf-net
co już dodaje możliwości serializacji między typami C # i protobuf.Zapoznaj się z dokumentacją, aby dowiedzieć się, jak zacząć korzystać z biblioteki, lub nawet obejrzyj Marc'a prezentującego ten temat w jednym z następujących nagrań swojego przemówienia „Talking Between Services with gRPC and Other Tricks”:
Myślę, że faktycznie zaktualizował ten we wrześniu dla bitów wersji .NET Core 3.0, więc prawdopodobnie byłaby to bardziej zaktualizowana wersja.
Istnieje również kilka przykładów kodu, aby zobaczyć, jak to wygląda po skonfigurowaniu.
źródło