web-dev-qa-db-ja.com

C#クラスから.protoファイルを生成したり、「Code First gRPC」を使用するにはどうすればよいですか?

Asp.netコアWebアプリケーションで.NETコア3とgRPCを使用したい。既存のC#クラスとモデルオブジェクトから必要な.protoファイルを生成するにはどうすればよいですか?既存のコードを反映する.protoファイルを書き直したくありません。protoファイルをクラスおよびモデルオブジェクトから自動生成したいのですが。

このメソッドを呼び出して、サービスクラスを登録します。

builder.MapGrpcService<MyGrpcService>();

public class MyGrpcService
{
    public Task<string> ServiceMethod(ModelObject model, ServerCallContext context)
    {
        return Task.FromResult("It Worked");
    }
}

ModelObjectには、注文属性を持つ[DataContract]および[DataMember]があります。

これは可能ですか?私がオンラインで見るすべての例は、.protoファイルで始まります。必要なサービスメソッドをMyGrpcServiceクラスで既に定義しました。しかし、多分これは物事を行う標準的な方法とはちょうど逆です...

古い.NETリモート処理のようなものは、リモートエンドポイントからインターフェイスを要求するだけで理想的であり、魔法のようにgRPCを使用して相互に通信しますが、ビューが単純すぎる可能性があります。

9
jjxtra

Marc Gravellの protobuf-net.Grpc このため。 gRPCサービスを構築するときにコードファーストの経験をすることが、彼がサービスに取り組み始めたまさにそのユースケースです。 protobuf-net C#タイプとprotobufの間にシリアル化機能がすでに追加されています。

documentation をチェックして、ライブラリの使用を開始する方法を確認するか、Marcが彼の講演「gRPCを使用したサービスとその他のトリックの会話」の次の録音の1つでこのトピックを紹介するのを見てください。

彼は実際に.NET Core 3.0のリリースビット用に9月に1つ更新したので、おそらくそれがより更新されたバージョンになるでしょう。

また、設定時に コードサンプル がどのように表示されるかを確認するためにもいくつかあります。

4
poke