Je veux utiliser gRPC avec .NET core 3 dans une application web asp.net core. Comment générer le fichier .proto nécessaire à partir d'une classe C # existante et d'objets de modèle? Je ne veux pas réécrire un fichier .proto qui reflète le code existant, je veux que le fichier .proto soit généré automatiquement à partir des objets de classe et de modèle.
J'appelle cette méthode pour enregistrer ma classe de service.
builder.MapGrpcService<MyGrpcService>();
public class MyGrpcService
{
public Task<string> ServiceMethod(ModelObject model, ServerCallContext context)
{
return Task.FromResult("It Worked");
}
}
ModelObject
a [DataContract]
et [DataMember]
avec des attributs de commande.
Est-ce possible? Chaque exemple que je vois en ligne commence par un .proto
fichier. J'ai déjà défini mes méthodes de service souhaitées dans la MyGrpcService
classe. Mais c'est peut-être juste en arrière par rapport à la façon standard de faire les choses ...
Quelque chose comme l'ancien accès distant .NET serait idéal où vous pouvez simplement demander une interface à partir d'un point d'extrémité distant et qu'il utilise comme par magie gRPC
pour communiquer d'avant en arrière, mais c'est peut-être une vue trop simpliste.
la source
Réponses:
Vous pouvez utiliser celui de Marc Gravell
protobuf-net.Grpc
pour cela. Avoir une expérience de code-premier lors de la création de services gRPC est le cas d'utilisation exact pourquoi il a commencé à travailler dessus. Il s'appuie surprotobuf-net
ce qui ajoute déjà des capacités de sérialisation entre les types C # et protobuf.Consultez la documentation pour voir comment commencer à utiliser la bibliothèque, ou même regardez Marc présenter ce sujet dans l'un des enregistrements suivants de son discours «Parler entre les services avec gRPC et d'autres astuces»:
Je pense qu'il a en fait mis à jour celui de septembre pour les bits de sortie de .NET Core 3.0, donc ce serait probablement la version la plus mise à jour.
Il y a aussi quelques exemples de code pour voir à quoi cela ressemble lorsque vous le configurez.
la source