Menghosting layanan gRPC di Aplikasi Windows Forms

Saya ingin membuat layanan gRPC tetapi saya perlu menghostingnya di aplikasi winform .net. ada contoh luar biasa tentang bagaimana Hosting ASP.NET Core API dalam Aplikasi Windows Forms Saya ingin seseorang menjelaskan kepada saya, apa yang perlu saya instal dan apa yang harus saya ubah dalam contoh itu, untuk meng-host layanan grpc dalam bentuk Windows ...


person Fabian Wesling    schedule 01.11.2020    source sumber
comment
Nah, Anda akan melakukan hal yang persis sama seperti di postingan itu, tetapi cukup gunakan titik akhir grpc (endpoints.MapGrpcService) seperti di sini - docs.microsoft.com/en-us/aspnet/core/grpc/?view=aspnetcore-3.1 alih-alih titik akhir mvc . Jadi sekali lagi - sama seperti di postingan itu, tetapi ganti saja pengaturan mvc dengan pengaturan grpc seperti pada dokumentasi resmi   -  person Nikita Chayka    schedule 01.11.2020
comment
Tautannya adalah membuat klien dan server dan menghubungkan klien ke server. Bentuk jendelanya adalah klien dan pengontrolnya adalah server. Proyek formulir windows biasanya memiliki Startup.cs dengan panggilan ke formulir yang memiliki [STAThread]. Tautan memulai WebHost sebelum formulir dimulai sehingga server dimulai sebelum klien. Kode formulir normal ada di kelas Startup formulir tersebut. Jadi ketika Anda membuat proyek formulir baru, tambahkan kode pada langkah 7 ke program.cs. Kemudian langkah 6 masuk ke modul formulir utama.   -  person jdweng    schedule 01.11.2020
comment
Terimakasih telah menjawab. Saya telah mencoba mengikuti tutorial tetapi saya tidak dapat melakukannya karena gRPC menghasilkan layanan secara otomatis dan menyimpannya di folder obj, dan saya tidak dapat membuatnya, masalah lainnya adalah services.AddGrpc () menggunakan ekstensi dari perpustakaan Grpc.AspNetCore.Server yang tidak kompatibel dengan .net framework 4.X. jadi saya melihat bahwa itu tampaknya tidak didukung   -  person Fabian Wesling    schedule 01.11.2020


Jawaban (1)


Anda dapat mengikuti langkah yang sama tetapi dengan beberapa langkah tambahan:

  1. Instal paket Microsoft.AspNetCore.Grpc.HttpApi Ini akan memetakan titik akhir gRPC Anda ke HTTP klasik. Tidak otomatis Anda perlu menentukan layanan di Startup.cs sebagai berikut:
    app.UseEndpoints(endpoints =>
            {
                endpoints.MapGrpcService<MygRPCService>();
            });
  1. Ke dalam proto Anda, Anda perlu menunjukkan jalur HTTP, seperti ini:
     rpc Get(GetRequest) returns (GetReply) {
        option (google.api.http) = {
          get: '/my-endpoint'
          body: '*'
        };
      }
  1. Tambahkan ke metode ConfigureService Startup.cs Anda:
    services.AddGrpc();
    services.AddGrpcHttpApi(); 
person Jesus Santander    schedule 02.11.2020