Tutorial: Membuat klien dan server gRPC di ASP.NET Core

Tutorial ini menunjukkan cara membuat klien .NET Core gRPC dan ASP.NET Core gRPC Server. Pada akhirnya, Anda akan memiliki klien gRPC yang berkomunikasi dengan layanan Greeter gRPC.

Di tutorial ini, Anda akan:

  • Membuat Server gRPC.
  • Buat klien gRPC.
  • Uji klien gRPC dengan layanan Greeter gRPC.

Prasyarat

Membuat layanan gRPC

  • Mulai Visual Studio 2022 dan pilih Proyek Baru.
  • Dalam dialog Buat proyek baru, cari gRPC. Pilih ASP.NET Core gRPC Service dan pilih Berikutnya.
  • Dalam dialog Konfigurasikan proyek baru Anda, masukkan GrpcGreeter untuk Nama proyek. Penting untuk memberi nama proyek GrpcGreeter sehingga namespace cocok saat Anda menyalin dan menempelkan kode.
  • Pilih Selanjutnya.
  • Dalam dialog Informasi tambahan, pilih .NET 8.0 (Dukungan Jangka Panjang) lalu pilih Buat.

Jalankan layanan

  • Tekan Ctrl+F5 untuk menjalankan tanpa debugger.

    Visual Studio menampilkan dialog berikut saat proyek belum dikonfigurasi untuk menggunakan SSL:

    Proyek ini dikonfigurasi untuk menggunakan SSL. Untuk menghindari peringatan SSL di browser, Anda dapat memilih untuk mempercayai sertifikat yang ditandatangani sendiri yang telah dihasilkan IIS Express. Apakah Anda ingin mempercayai sertifikat IIS Express SSL?

    Pilih Ya jika Anda mempercayai sertifikat IIS Express SSL.

    Dialog berikut ditampilkan:

    Dialog peringatan keamanan

    Pilih Ya jika Anda setuju untuk mempercayai sertifikat pengembangan tersebut.

    Untuk informasi tentang mempercayai browser Firefox, lihat Kesalahan sertifikat Firefox SEC_ERROR_INADEQUATE_KEY_USAGE.

    Visual Studio:

    • Kestrel Memulai server.
    • Meluncurkan browser.
    • Navigasi ke http://localhost:port, seperti http://localhost:7042.
      • port: Nomor port yang ditetapkan secara acak untuk aplikasi.
      • localhost: Nama host standar untuk komputer lokal. Localhost hanya melayani permintaan web dari komputer lokal.

Log menunjukkan layanan yang mendengarkan di , di https://localhost:<port>mana <port> adalah nomor port localhost yang ditetapkan secara acak saat proyek dibuat dan diatur dalam Properties/launchSettings.json.

info: Microsoft.Hosting.Lifetime[0]
      Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Development

Catatan

Templat gRPC dikonfigurasi untuk menggunakan Keamanan Lapisan Transportasi (TLS). Klien gRPC perlu menggunakan HTTPS untuk memanggil server. Nomor port localhost layanan gRPC ditetapkan secara acak ketika proyek dibuat dan diatur dalam file Properties\launch Pengaturan.json dari proyek layanan gRPC.

Memeriksa file proyek

File proyek GrpcGreeter :

  • Protos/greet.proto: mendefinisikan Greeter gRPC dan digunakan untuk menghasilkan aset server gRPC. Untuk informasi selengkapnya, lihat Pengenalan gRPC.
  • Services folder: Berisi implementasi Greeter layanan.
  • appSettings.json: Berisi data konfigurasi seperti protokol yang digunakan oleh Kestrel. Untuk informasi lebih lanjut, lihat Konfigurasi di ASP.NET Core.
  • Program.cs, yang berisi:

Membuat klien gRPC di aplikasi konsol .NET

  • Buka instans kedua Visual Studio dan pilih Proyek Baru.
  • Dalam dialog Buat proyek baru, pilih Aplikasi Konsol, dan pilih Berikutnya.
  • Dalam kotak teks Nama proyek, masukkan GrpcGreeterClient dan pilih Berikutnya.
  • Dalam dialog Informasi tambahan, pilih .NET 8.0 (Dukungan Jangka Panjang) lalu pilih Buat.

Menambahkan paket NuGet yang diperlukan

Proyek klien gRPC memerlukan paket NuGet berikut:

  • Grpc.Net.Client, yang berisi klien .NET Core.
  • Google.Protobuf, yang berisi API pesan protobuf untuk C#.
  • Grpc.Tools, yang berisi dukungan alat C# untuk file protobuf. Paket alat tidak diperlukan saat runtime, sehingga dependensi ditandai dengan PrivateAssets="All".

Instal paket menggunakan Package Manager Console (PMC) atau Kelola Paket NuGet.

Opsi PMC untuk menginstal paket

  • Dari Visual Studio, pilih Alat>NuGet Package Manager>Package Manager Console

  • Dari jendela Package Manager Console , jalankan cd GrpcGreeterClient untuk mengubah direktori ke folder yang GrpcGreeterClient.csproj berisi file.

  • Jalankan perintah berikut:

    Install-Package Grpc.Net.Client
    Install-Package Google.Protobuf
    Install-Package Grpc.Tools
    

Mengelola opsi Paket NuGet untuk menginstal paket

  • Klik kanan proyek di Penjelajah Solusi> Kelola Paket NuGet.
  • Pilih tab Telusuri.
  • Masukkan Grpc.Net.Client di kotak pencarian.
  • Pilih paket Grpc.Net.Client dari tab Telusuri dan pilih Instal.
  • Ulangi untuk Google.Protobuf dan Grpc.Tools.

Menambahkan greet.proto

  • Buat folder Protos di proyek klien gRPC.

  • Salin file Protos\greet.proto dari layanan Greeter gRPC ke folder Protos di proyek klien gRPC.

  • Perbarui namespace di dalam greet.proto file ke namespace proyek:

    option csharp_namespace = "GrpcGreeterClient";
    
  • GrpcGreeterClient.csproj Edit file proyek:

Klik kanan proyek dan pilih Edit File Proyek.

  • Tambahkan grup item dengan <Protobuf> elemen yang mengacu pada file greet.proto :

    <ItemGroup>
      <Protobuf Include="Protos\greet.proto" GrpcServices="Client" />
    </ItemGroup>
    

Membuat klien Greeter

  • Buat proyek klien untuk membuat jenis di GrpcGreeterClient namespace layanan.

Catatan

Jenis GrpcGreeterClient dihasilkan secara otomatis oleh proses build. Paket alat Grpc.Tools menghasilkan file berikut berdasarkan file greet.proto :

  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs: Kode buffer protokol yang mengisi, menserialisasikan, dan mengambil jenis pesan permintaan dan respons.
  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs: Berisi kelas klien yang dihasilkan.

Untuk informasi selengkapnya tentang aset C# yang dibuat secara otomatis oleh Grpc.Tools, lihat layanan gRPC dengan Aset C#: Generated C#.

  • Perbarui file klien Program.cs gRPC dengan kode berikut.

    using System.Threading.Tasks;
    using Grpc.Net.Client;
    using GrpcGreeterClient;
    
    // The port number must match the port of the gRPC server.
    using var channel = GrpcChannel.ForAddress("https://localhost:7042");
    var client = new Greeter.GreeterClient(channel);
    var reply = await client.SayHelloAsync(
                      new HelloRequest { Name = "GreeterClient" });
    Console.WriteLine("Greeting: " + reply.Message);
    Console.WriteLine("Press any key to exit...");
    Console.ReadKey();
    
  • Dalam kode yang disorot sebelumnya, ganti nomor 7042 port localhost dengan HTTPS nomor port yang ditentukan dalam Properties/launchSettings.json dalam GrpcGreeter proyek layanan.

Program.cs berisi titik masuk dan logika untuk klien gRPC.

Klien Greeter dibuat oleh:

  • Membuat instans yang GrpcChannel berisi informasi untuk membuat koneksi ke layanan gRPC.
  • GrpcChannel Menggunakan untuk membangun klien Greeter:
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
                  new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();

Klien Greeter memanggil metode asinkron SayHello . Hasil SayHello panggilan ditampilkan:

// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
                  new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();

Uji klien gRPC dengan layanan Greeter gRPC

appsettings.Development.json Perbarui file dengan menambahkan baris yang disorot berikut:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
      ,"Microsoft.AspNetCore.Hosting": "Information",
      "Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
    }
  }
}
  • Di layanan Greeter, tekan Ctrl+F5 untuk memulai server tanpa debugger.
  • GrpcGreeterClient Dalam proyek, tekan Ctrl+F5 untuk memulai klien tanpa debugger.

Klien mengirim salam ke layanan dengan pesan yang berisi namanya, GreeterClient. Layanan mengirimkan pesan "Hello GreeterClient" sebagai respons. Respons "Hello GreeterClient" ditampilkan di prompt perintah:

Greeting: Hello GreeterClient
Press any key to exit...

Layanan gRPC merekam detail panggilan yang berhasil dalam log yang ditulis ke prompt perintah:

info: Microsoft.Hosting.Lifetime[0]
      Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
      Content root path: C:\GH\aspnet\docs\4\Docs\aspnetcore\tutorials\grpc\grpc-start\sample\GrpcGreeter
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
      Request starting HTTP/2 POST https://localhost:<port>/Greet.Greeter/SayHello application/grpc
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
      Executing endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
      Executed endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
      Request finished in 78.32260000000001ms 200 application/grpc

Catatan

Kode dalam artikel ini memerlukan sertifikat pengembangan ASP.NET Core HTTPS untuk mengamankan layanan gRPC. Jika klien .NET gRPC gagal dengan pesan The remote certificate is invalid according to the validation procedure. atau The SSL connection could not be established., sertifikat pengembangan tidak tepercaya. Untuk memperbaiki masalah ini, lihat Memanggil layanan gRPC dengan sertifikat yang tidak tepercaya/tidak valid.

Langkah berikutnya

Tutorial ini menunjukkan cara membuat klien .NET Core gRPC dan ASP.NET Core gRPC Server. Pada akhirnya, Anda akan memiliki klien gRPC yang berkomunikasi dengan layanan Greeter gRPC.

Di tutorial ini, Anda akan:

  • Membuat Server gRPC.
  • Buat klien gRPC.
  • Uji klien gRPC dengan layanan Greeter gRPC.

Prasyarat

Membuat layanan gRPC

  • Mulai Visual Studio 2022 dan pilih Buat proyek baru.
  • Dalam dialog Buat proyek baru, cari gRPC. Pilih ASP.NET Core gRPC Service dan pilih Berikutnya.
  • Dalam dialog Konfigurasikan proyek baru Anda, masukkan GrpcGreeter untuk Nama proyek. Penting untuk memberi nama proyek GrpcGreeter sehingga namespace cocok saat Anda menyalin dan menempelkan kode.
  • Pilih Selanjutnya.
  • Dalam dialog Informasi tambahan, pilih .NET 6.0 (Dukungan jangka panjang) lalu pilih Buat.

Jalankan layanan

  • Tekan Ctrl+F5 untuk menjalankan tanpa debugger.

    Visual Studio menampilkan dialog berikut saat proyek belum dikonfigurasi untuk menggunakan SSL:

    Proyek ini dikonfigurasi untuk menggunakan SSL. Untuk menghindari peringatan SSL di browser, Anda dapat memilih untuk mempercayai sertifikat yang ditandatangani sendiri yang telah dihasilkan IIS Express. Apakah Anda ingin mempercayai sertifikat IIS Express SSL?

    Pilih Ya jika Anda mempercayai sertifikat IIS Express SSL.

    Dialog berikut ditampilkan:

    Dialog peringatan keamanan

    Pilih Ya jika Anda setuju untuk mempercayai sertifikat pengembangan tersebut.

    Untuk informasi tentang mempercayai browser Firefox, lihat Kesalahan sertifikat Firefox SEC_ERROR_INADEQUATE_KEY_USAGE.

    Visual Studio:

    • Kestrel Memulai server.
    • Meluncurkan browser.
    • Navigasi ke http://localhost:port, seperti http://localhost:7042.
      • port: Nomor port yang ditetapkan secara acak untuk aplikasi.
      • localhost: Nama host standar untuk komputer lokal. Localhost hanya melayani permintaan web dari komputer lokal.

Log menunjukkan layanan yang mendengarkan di , di https://localhost:<port>mana <port> adalah nomor port localhost yang ditetapkan secara acak saat proyek dibuat dan diatur dalam Properties/launchSettings.json.

info: Microsoft.Hosting.Lifetime[0]
      Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Development

Catatan

Templat gRPC dikonfigurasi untuk menggunakan Keamanan Lapisan Transportasi (TLS). Klien gRPC perlu menggunakan HTTPS untuk memanggil server. Nomor port localhost layanan gRPC ditetapkan secara acak ketika proyek dibuat dan diatur dalam file Properties\launch Pengaturan.json dari proyek layanan gRPC.

macOS tidak mendukung ASP.NET Core gRPC dengan TLS. Konfigurasi tambahan diperlukan untuk berhasil menjalankan layanan gRPC di macOS. Untuk informasi selengkapnya, lihat Tidak dapat memulai aplikasi gRPC ASP.NET Core di macOS.

Memeriksa file proyek

File proyek GrpcGreeter :

  • Protos/greet.proto: mendefinisikan Greeter gRPC dan digunakan untuk menghasilkan aset server gRPC. Untuk informasi selengkapnya, lihat Pengenalan gRPC.
  • Services folder: Berisi implementasi Greeter layanan.
  • appSettings.json: Berisi data konfigurasi seperti protokol yang digunakan oleh Kestrel. Untuk informasi lebih lanjut, lihat Konfigurasi di ASP.NET Core.
  • Program.cs, yang berisi:

Membuat klien gRPC di aplikasi konsol .NET

  • Buka instans kedua Visual Studio dan pilih Buat proyek baru.
  • Dalam dialog Buat proyek baru, pilih Aplikasi Konsol, dan pilih Berikutnya.
  • Dalam kotak teks Nama proyek, masukkan GrpcGreeterClient dan pilih Berikutnya.
  • Dalam dialog Informasi tambahan, pilih .NET 6.0 (Dukungan jangka panjang) lalu pilih Buat.

Menambahkan paket NuGet yang diperlukan

Proyek klien gRPC memerlukan paket NuGet berikut:

  • Grpc.Net.Client, yang berisi klien .NET Core.
  • Google.Protobuf, yang berisi API pesan protobuf untuk C#.
  • Grpc.Tools, yang berisi dukungan alat C# untuk file protobuf. Paket alat tidak diperlukan saat runtime, sehingga dependensi ditandai dengan PrivateAssets="All".

Instal paket menggunakan Package Manager Console (PMC) atau Kelola Paket NuGet.

Opsi PMC untuk menginstal paket

  • Dari Visual Studio, pilih Alat>NuGet Package Manager>Package Manager Console

  • Dari jendela Package Manager Console , jalankan cd GrpcGreeterClient untuk mengubah direktori ke folder yang GrpcGreeterClient.csproj berisi file.

  • Jalankan perintah berikut:

    Install-Package Grpc.Net.Client
    Install-Package Google.Protobuf
    Install-Package Grpc.Tools
    

Mengelola opsi Paket NuGet untuk menginstal paket

  • Klik kanan proyek di Penjelajah Solusi> Kelola Paket NuGet.
  • Pilih tab Telusuri.
  • Masukkan Grpc.Net.Client di kotak pencarian.
  • Pilih paket Grpc.Net.Client dari tab Telusuri dan pilih Instal.
  • Ulangi untuk Google.Protobuf dan Grpc.Tools.

Menambahkan greet.proto

  • Buat folder Protos di proyek klien gRPC.

  • Salin file Protos\greet.proto dari layanan Greeter gRPC ke folder Protos di proyek klien gRPC.

  • Perbarui namespace di dalam greet.proto file ke namespace proyek:

    option csharp_namespace = "GrpcGreeterClient";
    
  • GrpcGreeterClient.csproj Edit file proyek:

Klik kanan proyek dan pilih Edit File Proyek.

  • Tambahkan grup item dengan <Protobuf> elemen yang mengacu pada file greet.proto :

    <ItemGroup>
      <Protobuf Include="Protos\greet.proto" GrpcServices="Client" />
    </ItemGroup>
    

Membuat klien Greeter

  • Buat proyek klien untuk membuat jenis di GrpcGreeterClient namespace layanan.

Catatan

Jenis GrpcGreeterClient dihasilkan secara otomatis oleh proses build. Paket alat Grpc.Tools menghasilkan file berikut berdasarkan file greet.proto :

  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs: Kode buffer protokol yang mengisi, menserialisasikan, dan mengambil jenis pesan permintaan dan respons.
  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs: Berisi kelas klien yang dihasilkan.

Untuk informasi selengkapnya tentang aset C# yang dibuat secara otomatis oleh Grpc.Tools, lihat layanan gRPC dengan Aset C#: Generated C#.

  • Perbarui file klien Program.cs gRPC dengan kode berikut.

    using System.Threading.Tasks;
    using Grpc.Net.Client;
    using GrpcGreeterClient;
    
    // The port number must match the port of the gRPC server.
    using var channel = GrpcChannel.ForAddress("https://localhost:7042");
    var client = new Greeter.GreeterClient(channel);
    var reply = await client.SayHelloAsync(
                      new HelloRequest { Name = "GreeterClient" });
    Console.WriteLine("Greeting: " + reply.Message);
    Console.WriteLine("Press any key to exit...");
    Console.ReadKey();
    
  • Dalam kode yang disorot sebelumnya, ganti nomor 7042 port localhost dengan HTTPS nomor port yang ditentukan dalam Properties/launchSettings.json dalam GrpcGreeter proyek layanan.

Program.cs berisi titik masuk dan logika untuk klien gRPC.

Klien Greeter dibuat oleh:

  • Membuat instans yang GrpcChannel berisi informasi untuk membuat koneksi ke layanan gRPC.
  • GrpcChannel Menggunakan untuk membangun klien Greeter:
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
                  new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();

Klien Greeter memanggil metode asinkron SayHello . Hasil SayHello panggilan ditampilkan:

// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
                  new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();

Uji klien gRPC dengan layanan Greeter gRPC

appsettings.Development.json Perbarui file dengan menambahkan baris yang disorot berikut:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
      ,"Microsoft.AspNetCore.Hosting": "Information",
      "Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
    }
  }
}
  • Di layanan Greeter, tekan Ctrl+F5 untuk memulai server tanpa debugger.
  • GrpcGreeterClient Dalam proyek, tekan Ctrl+F5 untuk memulai klien tanpa debugger.

Klien mengirim salam ke layanan dengan pesan yang berisi namanya, GreeterClient. Layanan mengirimkan pesan "Hello GreeterClient" sebagai respons. Respons "Hello GreeterClient" ditampilkan di prompt perintah:

Greeting: Hello GreeterClient
Press any key to exit...

Layanan gRPC merekam detail panggilan yang berhasil dalam log yang ditulis ke prompt perintah:

info: Microsoft.Hosting.Lifetime[0]
      Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
      Content root path: C:\GH\aspnet\docs\4\Docs\aspnetcore\tutorials\grpc\grpc-start\sample\GrpcGreeter
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
      Request starting HTTP/2 POST https://localhost:<port>/Greet.Greeter/SayHello application/grpc
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
      Executing endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
      Executed endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
      Request finished in 78.32260000000001ms 200 application/grpc

Catatan

Kode dalam artikel ini memerlukan sertifikat pengembangan ASP.NET Core HTTPS untuk mengamankan layanan gRPC. Jika klien .NET gRPC gagal dengan pesan The remote certificate is invalid according to the validation procedure. atau The SSL connection could not be established., sertifikat pengembangan tidak tepercaya. Untuk memperbaiki masalah ini, lihat Memanggil layanan gRPC dengan sertifikat yang tidak tepercaya/tidak valid.

Langkah berikutnya

Tutorial ini menunjukkan cara membuat klien .NET Core gRPC dan ASP.NET Core gRPC Server. Pada akhirnya, Anda akan memiliki klien gRPC yang berkomunikasi dengan layanan Greeter gRPC.

Di tutorial ini, Anda akan:

  • Membuat Server gRPC.
  • Buat klien gRPC.
  • Uji klien gRPC dengan layanan Greeter gRPC.

Prasyarat

Membuat layanan gRPC

  • Mulai Visual Studio 2022 dan pilih Buat proyek baru.
  • Dalam dialog Buat proyek baru, cari gRPC. Pilih ASP.NET Core gRPC Service dan pilih Berikutnya.
  • Dalam dialog Konfigurasikan proyek baru Anda, masukkan GrpcGreeter untuk Nama proyek. Penting untuk memberi nama proyek GrpcGreeter sehingga namespace cocok saat Anda menyalin dan menempelkan kode.
  • Pilih Selanjutnya.
  • Dalam dialog Informasi tambahan, pilih .NET 6.0 (Dukungan jangka panjang) lalu pilih Buat.

Jalankan layanan

  • Tekan Ctrl+F5 untuk menjalankan tanpa debugger.

    Visual Studio menampilkan dialog berikut saat proyek belum dikonfigurasi untuk menggunakan SSL:

    Proyek ini dikonfigurasi untuk menggunakan SSL. Untuk menghindari peringatan SSL di browser, Anda dapat memilih untuk mempercayai sertifikat yang ditandatangani sendiri yang telah dihasilkan IIS Express. Apakah Anda ingin mempercayai sertifikat IIS Express SSL?

    Pilih Ya jika Anda mempercayai sertifikat IIS Express SSL.

    Dialog berikut ditampilkan:

    Dialog peringatan keamanan

    Pilih Ya jika Anda setuju untuk mempercayai sertifikat pengembangan tersebut.

    Untuk informasi tentang mempercayai browser Firefox, lihat Kesalahan sertifikat Firefox SEC_ERROR_INADEQUATE_KEY_USAGE.

    Visual Studio:

    • Kestrel Memulai server.
    • Meluncurkan browser.
    • Navigasi ke http://localhost:port, seperti http://localhost:7042.
      • port: Nomor port yang ditetapkan secara acak untuk aplikasi.
      • localhost: Nama host standar untuk komputer lokal. Localhost hanya melayani permintaan web dari komputer lokal.

Log menunjukkan layanan yang mendengarkan di , di https://localhost:<port>mana <port> adalah nomor port localhost yang ditetapkan secara acak saat proyek dibuat dan diatur dalam Properties/launchSettings.json.

info: Microsoft.Hosting.Lifetime[0]
      Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Development

Catatan

Templat gRPC dikonfigurasi untuk menggunakan Keamanan Lapisan Transportasi (TLS). Klien gRPC perlu menggunakan HTTPS untuk memanggil server. Nomor port localhost layanan gRPC ditetapkan secara acak ketika proyek dibuat dan diatur dalam file Properties\launch Pengaturan.json dari proyek layanan gRPC.

macOS tidak mendukung ASP.NET Core gRPC dengan TLS. Konfigurasi tambahan diperlukan untuk berhasil menjalankan layanan gRPC di macOS. Untuk informasi selengkapnya, lihat Tidak dapat memulai aplikasi gRPC ASP.NET Core di macOS.

Memeriksa file proyek

File proyek GrpcGreeter :

  • Protos/greet.proto: mendefinisikan Greeter gRPC dan digunakan untuk menghasilkan aset server gRPC. Untuk informasi selengkapnya, lihat Pengenalan gRPC.
  • Services folder: Berisi implementasi Greeter layanan.
  • appSettings.json: Berisi data konfigurasi seperti protokol yang digunakan oleh Kestrel. Untuk informasi lebih lanjut, lihat Konfigurasi di ASP.NET Core.
  • Program.cs, yang berisi:

Membuat klien gRPC di aplikasi konsol .NET

  • Buka instans kedua Visual Studio dan pilih Buat proyek baru.
  • Dalam dialog Buat proyek baru, pilih Aplikasi Konsol, dan pilih Berikutnya.
  • Dalam kotak teks Nama proyek, masukkan GrpcGreeterClient dan pilih Berikutnya.
  • Dalam dialog Informasi tambahan, pilih .NET 6.0 (Dukungan jangka panjang) lalu pilih Buat.

Menambahkan paket NuGet yang diperlukan

Proyek klien gRPC memerlukan paket NuGet berikut:

  • Grpc.Net.Client, yang berisi klien .NET Core.
  • Google.Protobuf, yang berisi API pesan protobuf untuk C#.
  • Grpc.Tools, yang berisi dukungan alat C# untuk file protobuf. Paket alat tidak diperlukan saat runtime, sehingga dependensi ditandai dengan PrivateAssets="All".

Instal paket menggunakan Package Manager Console (PMC) atau Kelola Paket NuGet.

Opsi PMC untuk menginstal paket

  • Dari Visual Studio, pilih Alat>NuGet Package Manager>Package Manager Console

  • Dari jendela Package Manager Console , jalankan cd GrpcGreeterClient untuk mengubah direktori ke folder yang GrpcGreeterClient.csproj berisi file.

  • Jalankan perintah berikut:

    Install-Package Grpc.Net.Client
    Install-Package Google.Protobuf
    Install-Package Grpc.Tools
    

Mengelola opsi Paket NuGet untuk menginstal paket

  • Klik kanan proyek di Penjelajah Solusi> Kelola Paket NuGet.
  • Pilih tab Telusuri.
  • Masukkan Grpc.Net.Client di kotak pencarian.
  • Pilih paket Grpc.Net.Client dari tab Telusuri dan pilih Instal.
  • Ulangi untuk Google.Protobuf dan Grpc.Tools.

Menambahkan greet.proto

  • Buat folder Protos di proyek klien gRPC.

  • Salin file Protos\greet.proto dari layanan Greeter gRPC ke folder Protos di proyek klien gRPC.

  • Perbarui namespace di dalam greet.proto file ke namespace proyek:

    option csharp_namespace = "GrpcGreeterClient";
    
  • GrpcGreeterClient.csproj Edit file proyek:

Klik kanan proyek dan pilih Edit File Proyek.

  • Tambahkan grup item dengan <Protobuf> elemen yang mengacu pada file greet.proto :

    <ItemGroup>
      <Protobuf Include="Protos\greet.proto" GrpcServices="Client" />
    </ItemGroup>
    

Membuat klien Greeter

  • Buat proyek klien untuk membuat jenis di GrpcGreeterClient namespace layanan.

Catatan

Jenis GrpcGreeterClient dihasilkan secara otomatis oleh proses build. Paket alat Grpc.Tools menghasilkan file berikut berdasarkan file greet.proto :

  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs: Kode buffer protokol yang mengisi, menserialisasikan, dan mengambil jenis pesan permintaan dan respons.
  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs: Berisi kelas klien yang dihasilkan.

Untuk informasi selengkapnya tentang aset C# yang dibuat secara otomatis oleh Grpc.Tools, lihat layanan gRPC dengan Aset C#: Generated C#.

  • Perbarui file klien Program.cs gRPC dengan kode berikut.

    using System.Threading.Tasks;
    using Grpc.Net.Client;
    using GrpcGreeterClient;
    
    // The port number must match the port of the gRPC server.
    using var channel = GrpcChannel.ForAddress("https://localhost:7042");
    var client = new Greeter.GreeterClient(channel);
    var reply = await client.SayHelloAsync(
                      new HelloRequest { Name = "GreeterClient" });
    Console.WriteLine("Greeting: " + reply.Message);
    Console.WriteLine("Press any key to exit...");
    Console.ReadKey();
    
  • Dalam kode yang disorot sebelumnya, ganti nomor 7042 port localhost dengan HTTPS nomor port yang ditentukan dalam Properties/launchSettings.json dalam GrpcGreeter proyek layanan.

Program.cs berisi titik masuk dan logika untuk klien gRPC.

Klien Greeter dibuat oleh:

  • Membuat instans yang GrpcChannel berisi informasi untuk membuat koneksi ke layanan gRPC.
  • GrpcChannel Menggunakan untuk membangun klien Greeter:
// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
                  new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();

Klien Greeter memanggil metode asinkron SayHello . Hasil SayHello panggilan ditampilkan:

// The port number must match the port of the gRPC server.
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
var client = new Greeter.GreeterClient(channel);
var reply = await client.SayHelloAsync(
                  new HelloRequest { Name = "GreeterClient" });
Console.WriteLine("Greeting: " + reply.Message);
Console.WriteLine("Press any key to exit...");
Console.ReadKey();

Uji klien gRPC dengan layanan Greeter gRPC

  • Di layanan Greeter, tekan Ctrl+F5 untuk memulai server tanpa debugger.
  • GrpcGreeterClient Dalam proyek, tekan Ctrl+F5 untuk memulai klien tanpa debugger.

Klien mengirim salam ke layanan dengan pesan yang berisi namanya, GreeterClient. Layanan mengirimkan pesan "Hello GreeterClient" sebagai respons. Respons "Hello GreeterClient" ditampilkan di prompt perintah:

Greeting: Hello GreeterClient
Press any key to exit...

Layanan gRPC merekam detail panggilan yang berhasil dalam log yang ditulis ke prompt perintah:

info: Microsoft.Hosting.Lifetime[0]
      Now listening on: https://localhost:<port>
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
      Content root path: C:\GH\aspnet\docs\4\Docs\aspnetcore\tutorials\grpc\grpc-start\sample\GrpcGreeter
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
      Request starting HTTP/2 POST https://localhost:<port>/Greet.Greeter/SayHello application/grpc
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
      Executing endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
      Executed endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
      Request finished in 78.32260000000001ms 200 application/grpc

appsettings.Development.json Perbarui file dengan menambahkan baris berikut:

"Microsoft.AspNetCore.Hosting": "Information",
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"

Catatan

Kode dalam artikel ini memerlukan sertifikat pengembangan ASP.NET Core HTTPS untuk mengamankan layanan gRPC. Jika klien .NET gRPC gagal dengan pesan The remote certificate is invalid according to the validation procedure. atau The SSL connection could not be established., sertifikat pengembangan tidak tepercaya. Untuk memperbaiki masalah ini, lihat Memanggil layanan gRPC dengan sertifikat yang tidak tepercaya/tidak valid.

Langkah berikutnya

Tutorial ini menunjukkan cara membuat klien .NET Core gRPC dan ASP.NET Core gRPC Server.

Pada akhirnya, Anda akan memiliki klien gRPC yang berkomunikasi dengan layanan Greeter gRPC.

Lihat atau unduh sampel kode (cara mengunduh).

Di tutorial ini, Anda akan:

  • Membuat Server gRPC.
  • Buat klien gRPC.
  • Uji klien gRPC dengan layanan Greeter gRPC.

Prasyarat

Membuat layanan gRPC

  • Mulai Visual Studio dan pilih Buat proyek baru.
  • Dalam dialog Buat proyek baru, pilih Layanan gRPC dan pilih Berikutnya.
  • Dalam dialog Konfigurasikan proyek baru Anda, masukkan GrpcGreeter untuk Nama proyek. Penting untuk memberi nama proyek GrpcGreeter sehingga namespace cocok saat Anda menyalin dan menempelkan kode.
  • Pilih Selanjutnya.
  • Dalam dialog Informasi tambahan, pilih .NET 5.0 di menu dropdown Kerangka Kerja Target.
  • Pilih Buat.

Jalankan layanan

  • Tekan Ctrl+F5 untuk menjalankan tanpa debugger.

    Visual Studio menampilkan dialog berikut saat proyek belum dikonfigurasi untuk menggunakan SSL:

    Proyek ini dikonfigurasi untuk menggunakan SSL. Untuk menghindari peringatan SSL di browser, Anda dapat memilih untuk mempercayai sertifikat yang ditandatangani sendiri yang telah dihasilkan IIS Express. Apakah Anda ingin mempercayai sertifikat IIS Express SSL?

    Pilih Ya jika Anda mempercayai sertifikat IIS Express SSL.

    Dialog berikut ditampilkan:

    Dialog peringatan keamanan

    Pilih Ya jika Anda setuju untuk mempercayai sertifikat pengembangan tersebut.

    Untuk informasi tentang mempercayai browser Firefox, lihat Kesalahan sertifikat Firefox SEC_ERROR_INADEQUATE_KEY_USAGE.

    Visual Studio memulai IIS Express dan menjalankan aplikasi. Bilah alamat menunjukkan localhost:port# dan bukan sesuatu seperti example.com. Itu karena localhost adalah nama host standar untuk komputer lokal. Localhost hanya melayani permintaan web dari komputer lokal. Saat Visual Studio membuat proyek web, port acak digunakan untuk server web.

Log menunjukkan layanan yang mendengarkan di https://localhost:5001.

info: Microsoft.Hosting.Lifetime[0]
      Now listening on: https://localhost:5001
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Development

Catatan

Templat gRPC dikonfigurasi untuk menggunakan Keamanan Lapisan Transportasi (TLS). Klien gRPC perlu menggunakan HTTPS untuk memanggil server.

macOS tidak mendukung ASP.NET Core gRPC dengan TLS. Konfigurasi tambahan diperlukan untuk berhasil menjalankan layanan gRPC di macOS. Untuk informasi selengkapnya, lihat Tidak dapat memulai aplikasi gRPC ASP.NET Core di macOS.

Memeriksa file proyek

File proyek GrpcGreeter :

  • greet.proto: File Protos/greet.proto mendefinisikan Greeter gRPC dan digunakan untuk menghasilkan aset server gRPC. Untuk informasi selengkapnya, lihat Pengenalan gRPC.
  • Folder layanan : Berisi implementasi Greeter layanan.
  • appsettings.json: Berisi data konfigurasi, seperti protokol yang digunakan oleh Kestrel. Untuk informasi lebih lanjut, lihat Konfigurasi di ASP.NET Core.
  • Program.cs: Berisi titik masuk untuk layanan gRPC. Untuk informasi lebih lanjut, lihat .NET Generic Host di ASP.NET Core.
  • Startup.cs: Berisi kode yang mengonfigurasi perilaku aplikasi. Untuk informasi selengkapnya, lihat Pengaktifan aplikasi.

Membuat klien gRPC di aplikasi konsol .NET

  • Buka instans kedua Visual Studio dan pilih Buat proyek baru.
  • Dalam dialog Buat proyek baru, pilih Aplikasi Konsol (.NET Core) dan pilih Berikutnya.
  • Dalam kotak teks Nama proyek, masukkan GrpcGreeterClient dan pilih Buat.

Menambahkan paket yang diperlukan

Proyek klien gRPC memerlukan paket berikut:

  • Grpc.Net.Client, yang berisi klien .NET Core.
  • Google.Protobuf, yang berisi API pesan protobuf untuk C#.
  • Grpc.Tools, yang berisi dukungan alat C# untuk file protobuf. Paket alat tidak diperlukan saat runtime, sehingga dependensi ditandai dengan PrivateAssets="All".

Instal paket menggunakan Package Manager Console (PMC) atau Kelola Paket NuGet.

Opsi PMC untuk menginstal paket

  • Dari Visual Studio, pilih Alat>NuGet Package Manager>Package Manager Console

  • Dari jendela Package Manager Console , jalankan cd GrpcGreeterClient untuk mengubah direktori ke folder yang GrpcGreeterClient.csproj berisi file.

  • Jalankan perintah berikut:

    Install-Package Grpc.Net.Client
    Install-Package Google.Protobuf
    Install-Package Grpc.Tools
    

Mengelola opsi Paket NuGet untuk menginstal paket

  • Klik kanan proyek di Penjelajah Solusi> Kelola Paket NuGet.
  • Pilih tab Telusuri.
  • Masukkan Grpc.Net.Client di kotak pencarian.
  • Pilih paket Grpc.Net.Client dari tab Telusuri dan pilih Instal.
  • Ulangi untuk Google.Protobuf dan Grpc.Tools.

Menambahkan greet.proto

  • Buat folder Protos di proyek klien gRPC.

  • Salin file Protos\greet.proto dari layanan Greeter gRPC ke folder Protos di proyek klien gRPC.

  • Perbarui namespace di dalam greet.proto file ke namespace proyek:

    option csharp_namespace = "GrpcGreeterClient";
    
  • GrpcGreeterClient.csproj Edit file proyek:

    Klik kanan proyek dan pilih Edit File Proyek.


  • Tambahkan grup item dengan <Protobuf> elemen yang mengacu pada file greet.proto :

    <ItemGroup>
      <Protobuf Include="Protos\greet.proto" GrpcServices="Client" />
    </ItemGroup>
    

Membuat klien Greeter

  • Buat proyek klien untuk membuat jenis di GrpcGreeterClient namespace layanan.

Catatan

Jenis GrpcGreeterClient dihasilkan secara otomatis oleh proses build. Paket alat Grpc.Tools menghasilkan file berikut berdasarkan file greet.proto :

  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs: Kode buffer protokol yang mengisi, menserialisasikan, dan mengambil jenis pesan permintaan dan respons.
  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs: Berisi kelas klien yang dihasilkan.

Untuk informasi selengkapnya tentang aset C# yang dibuat secara otomatis oleh Grpc.Tools, lihat layanan gRPC dengan Aset C#: Generated C#.

  • Perbarui file klien Program.cs gRPC dengan kode berikut:

    using System;
    using System.Net.Http;
    using System.Threading.Tasks;
    using Grpc.Net.Client;
    
    namespace GrpcGreeterClient
    {
        class Program
        {
            static async Task Main(string[] args)
            {
                // The port number(5001) must match the port of the gRPC server.
                using var channel = GrpcChannel.ForAddress("https://localhost:5001");
                var client = new Greeter.GreeterClient(channel);
                var reply = await client.SayHelloAsync(
                                  new HelloRequest { Name = "GreeterClient" });
                Console.WriteLine("Greeting: " + reply.Message);
                Console.WriteLine("Press any key to exit...");
                Console.ReadKey();
            }
        }
    }
    

Program.cs berisi titik masuk dan logika untuk klien gRPC.

Klien Greeter dibuat oleh:

  • Membuat instans yang GrpcChannel berisi informasi untuk membuat koneksi ke layanan gRPC.
  • GrpcChannel Menggunakan untuk membangun klien Greeter:
static async Task Main(string[] args)
{
    // The port number(5001) must match the port of the gRPC server.
    using var channel = GrpcChannel.ForAddress("https://localhost:5001");
    var client = new Greeter.GreeterClient(channel);
    var reply = await client.SayHelloAsync(
                      new HelloRequest { Name = "GreeterClient" });
    Console.WriteLine("Greeting: " + reply.Message);
    Console.WriteLine("Press any key to exit...");
    Console.ReadKey();
}

Klien Greeter memanggil metode asinkron SayHello . Hasil SayHello panggilan ditampilkan:

static async Task Main(string[] args)
{
    // The port number(5001) must match the port of the gRPC server.
    using var channel = GrpcChannel.ForAddress("https://localhost:5001");
    var client = new Greeter.GreeterClient(channel);
    var reply = await client.SayHelloAsync(
                      new HelloRequest { Name = "GreeterClient" });
    Console.WriteLine("Greeting: " + reply.Message);
    Console.WriteLine("Press any key to exit...");
    Console.ReadKey();
}

Uji klien gRPC dengan layanan Greeter gRPC

  • Di layanan Greeter, tekan Ctrl+F5 untuk memulai server tanpa debugger.
  • GrpcGreeterClient Dalam proyek, tekan Ctrl+F5 untuk memulai klien tanpa debugger.

Klien mengirim salam ke layanan dengan pesan yang berisi namanya, GreeterClient. Layanan mengirimkan pesan "Hello GreeterClient" sebagai respons. Respons "Hello GreeterClient" ditampilkan di prompt perintah:

Greeting: Hello GreeterClient
Press any key to exit...

Layanan gRPC merekam detail panggilan yang berhasil dalam log yang ditulis ke prompt perintah:

info: Microsoft.Hosting.Lifetime[0]
      Now listening on: https://localhost:5001
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
      Content root path: C:\GH\aspnet\docs\4\Docs\aspnetcore\tutorials\grpc\grpc-start\sample\GrpcGreeter
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
      Request starting HTTP/2 POST https://localhost:5001/Greet.Greeter/SayHello application/grpc
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
      Executing endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
      Executed endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
      Request finished in 78.32260000000001ms 200 application/grpc

Catatan

Kode dalam artikel ini memerlukan sertifikat pengembangan ASP.NET Core HTTPS untuk mengamankan layanan gRPC. Jika klien .NET gRPC gagal dengan pesan The remote certificate is invalid according to the validation procedure. atau The SSL connection could not be established., sertifikat pengembangan tidak tepercaya. Untuk memperbaiki masalah ini, lihat Memanggil layanan gRPC dengan sertifikat yang tidak tepercaya/tidak valid.

Langkah berikutnya

Tutorial ini menunjukkan cara membuat klien .NET Core gRPC dan ASP.NET Core gRPC Server.

Pada akhirnya, Anda akan memiliki klien gRPC yang berkomunikasi dengan layanan Greeter gRPC.

Lihat atau unduh sampel kode (cara mengunduh).

Di tutorial ini, Anda akan:

  • Membuat Server gRPC.
  • Buat klien gRPC.
  • Uji klien gRPC dengan layanan Greeter gRPC.

Prasyarat

Membuat layanan gRPC

  • Mulai Visual Studio dan pilih Buat proyek baru. Atau, dari menu File Visual Studio, pilih Proyek Baru>.

  • Dalam dialog Buat proyek baru, pilih Layanan gRPC dan pilih Berikutnya:

    Membuat dialog proyek baru di Visual Studio

  • Beri nama proyek GrpcGreeter. Penting untuk memberi nama proyek GrpcGreeter sehingga namespace cocok saat Anda menyalin dan menempelkan kode.

  • Pilih Buat.

  • Dalam dialog Buat layanan gRPC baru:

    • Templat Layanan gRPC dipilih.
    • Pilih Buat.

Jalankan layanan

  • Tekan Ctrl+F5 untuk menjalankan tanpa debugger.

    Visual Studio menampilkan dialog berikut saat proyek belum dikonfigurasi untuk menggunakan SSL:

    Proyek ini dikonfigurasi untuk menggunakan SSL. Untuk menghindari peringatan SSL di browser, Anda dapat memilih untuk mempercayai sertifikat yang ditandatangani sendiri yang telah dihasilkan IIS Express. Apakah Anda ingin mempercayai sertifikat IIS Express SSL?

    Pilih Ya jika Anda mempercayai sertifikat IIS Express SSL.

    Dialog berikut ditampilkan:

    Dialog peringatan keamanan

    Pilih Ya jika Anda setuju untuk mempercayai sertifikat pengembangan tersebut.

    Untuk informasi tentang mempercayai browser Firefox, lihat Kesalahan sertifikat Firefox SEC_ERROR_INADEQUATE_KEY_USAGE.

    Visual Studio memulai IIS Express dan menjalankan aplikasi. Bilah alamat menunjukkan localhost:port# dan bukan sesuatu seperti example.com. Itu karena localhost adalah nama host standar untuk komputer lokal. Localhost hanya melayani permintaan web dari komputer lokal. Saat Visual Studio membuat proyek web, port acak digunakan untuk server web.

Log menunjukkan layanan yang mendengarkan di https://localhost:5001.

info: Microsoft.Hosting.Lifetime[0]
      Now listening on: https://localhost:5001
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Development

Catatan

Templat gRPC dikonfigurasi untuk menggunakan Keamanan Lapisan Transportasi (TLS). Klien gRPC perlu menggunakan HTTPS untuk memanggil server.

macOS tidak mendukung ASP.NET Core gRPC dengan TLS. Konfigurasi tambahan diperlukan untuk berhasil menjalankan layanan gRPC di macOS. Untuk informasi selengkapnya, lihat Tidak dapat memulai aplikasi gRPC ASP.NET Core di macOS.

Memeriksa file proyek

File proyek GrpcGreeter :

  • greet.proto: File Protos/greet.proto mendefinisikan Greeter gRPC dan digunakan untuk menghasilkan aset server gRPC. Untuk informasi selengkapnya, lihat Pengenalan gRPC.
  • Folder layanan : Berisi implementasi Greeter layanan.
  • appsettings.json: Berisi data konfigurasi, seperti protokol yang digunakan oleh Kestrel. Untuk informasi lebih lanjut, lihat Konfigurasi di ASP.NET Core.
  • Program.cs: Berisi titik masuk untuk layanan gRPC. Untuk informasi lebih lanjut, lihat .NET Generic Host di ASP.NET Core.
  • Startup.cs: Berisi kode yang mengonfigurasi perilaku aplikasi. Untuk informasi selengkapnya, lihat Pengaktifan aplikasi.

Membuat klien gRPC di aplikasi konsol .NET

  • Buka instans kedua Visual Studio dan pilih Buat proyek baru.
  • Dalam dialog Buat proyek baru, pilih Aplikasi Konsol (.NET Core) dan pilih Berikutnya.
  • Dalam kotak teks Nama proyek, masukkan GrpcGreeterClient dan pilih Buat.

Menambahkan paket yang diperlukan

Proyek klien gRPC memerlukan paket berikut:

  • Grpc.Net.Client, yang berisi klien .NET Core.
  • Google.Protobuf, yang berisi API pesan protobuf untuk C#.
  • Grpc.Tools, yang berisi dukungan alat C# untuk file protobuf. Paket alat tidak diperlukan saat runtime, sehingga dependensi ditandai dengan PrivateAssets="All".

Instal paket menggunakan Package Manager Console (PMC) atau Kelola Paket NuGet.

Opsi PMC untuk menginstal paket

  • Dari Visual Studio, pilih Alat>NuGet Package Manager>Package Manager Console

  • Dari jendela Package Manager Console , jalankan cd GrpcGreeterClient untuk mengubah direktori ke folder yang GrpcGreeterClient.csproj berisi file.

  • Jalankan perintah berikut:

    Install-Package Grpc.Net.Client
    Install-Package Google.Protobuf
    Install-Package Grpc.Tools
    

Mengelola opsi Paket NuGet untuk menginstal paket

  • Klik kanan proyek di Penjelajah Solusi> Kelola Paket NuGet.
  • Pilih tab Telusuri.
  • Masukkan Grpc.Net.Client di kotak pencarian.
  • Pilih paket Grpc.Net.Client dari tab Telusuri dan pilih Instal.
  • Ulangi untuk Google.Protobuf dan Grpc.Tools.

Menambahkan greet.proto

  • Buat folder Protos di proyek klien gRPC.

  • Salin file Protos\greet.proto dari layanan Greeter gRPC ke folder Protos di proyek klien gRPC.

  • Perbarui namespace di dalam greet.proto file ke namespace proyek:

    option csharp_namespace = "GrpcGreeterClient";
    
  • GrpcGreeterClient.csproj Edit file proyek:

    Klik kanan proyek dan pilih Edit File Proyek.


  • Tambahkan grup item dengan <Protobuf> elemen yang mengacu pada file greet.proto :

    <ItemGroup>
      <Protobuf Include="Protos\greet.proto" GrpcServices="Client" />
    </ItemGroup>
    

Membuat klien Greeter

  • Buat proyek klien untuk membuat jenis di GrpcGreeterClient namespace layanan.

Catatan

Jenis GrpcGreeterClient dihasilkan secara otomatis oleh proses build. Paket alat Grpc.Tools menghasilkan file berikut berdasarkan file greet.proto :

  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\Greet.cs: Kode buffer protokol yang mengisi, menserialisasikan, dan mengambil jenis pesan permintaan dan respons.
  • GrpcGreeterClient\obj\Debug\[TARGET_FRAMEWORK]\Protos\GreetGrpc.cs: Berisi kelas klien yang dihasilkan.

Untuk informasi selengkapnya tentang aset C# yang dibuat secara otomatis oleh Grpc.Tools, lihat layanan gRPC dengan Aset C#: Generated C#.

Perbarui file klien Program.cs gRPC dengan kode berikut:

using System;
using System.Net.Http;
using System.Threading.Tasks;
using Grpc.Net.Client;

namespace GrpcGreeterClient
{
    class Program
    {
        static async Task Main(string[] args)
        {
            // The port number(5001) must match the port of the gRPC server.
            using var channel = GrpcChannel.ForAddress("https://localhost:5001");
            var client = new Greeter.GreeterClient(channel);
            var reply = await client.SayHelloAsync(
                              new HelloRequest { Name = "GreeterClient" });
            Console.WriteLine("Greeting: " + reply.Message);
            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
        }
    }
}

Program.cs berisi titik masuk dan logika untuk klien gRPC.

Klien Greeter dibuat oleh:

  • Membuat instans yang GrpcChannel berisi informasi untuk membuat koneksi ke layanan gRPC.
  • GrpcChannel Menggunakan untuk membangun klien Greeter:
static async Task Main(string[] args)
{
    // The port number(5001) must match the port of the gRPC server.
    using var channel = GrpcChannel.ForAddress("https://localhost:5001");
    var client = new Greeter.GreeterClient(channel);
    var reply = await client.SayHelloAsync(
                      new HelloRequest { Name = "GreeterClient" });
    Console.WriteLine("Greeting: " + reply.Message);
    Console.WriteLine("Press any key to exit...");
    Console.ReadKey();
}

Klien Greeter memanggil metode asinkron SayHello . Hasil SayHello panggilan ditampilkan:

static async Task Main(string[] args)
{
    // The port number(5001) must match the port of the gRPC server.
    using var channel = GrpcChannel.ForAddress("https://localhost:5001");
    var client = new Greeter.GreeterClient(channel);
    var reply = await client.SayHelloAsync(
                      new HelloRequest { Name = "GreeterClient" });
    Console.WriteLine("Greeting: " + reply.Message);
    Console.WriteLine("Press any key to exit...");
    Console.ReadKey();
}

Uji klien gRPC dengan layanan Greeter gRPC

  • Di layanan Greeter, tekan Ctrl+F5 untuk memulai server tanpa debugger.
  • GrpcGreeterClient Dalam proyek, tekan Ctrl+F5 untuk memulai klien tanpa debugger.

Klien mengirim salam ke layanan dengan pesan yang berisi namanya, GreeterClient. Layanan mengirimkan pesan "Hello GreeterClient" sebagai respons. Respons "Hello GreeterClient" ditampilkan di prompt perintah:

Greeting: Hello GreeterClient
Press any key to exit...

Layanan gRPC merekam detail panggilan yang berhasil dalam log yang ditulis ke prompt perintah:

info: Microsoft.Hosting.Lifetime[0]
      Now listening on: https://localhost:5001
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Development
info: Microsoft.Hosting.Lifetime[0]
      Content root path: C:\GH\aspnet\docs\4\Docs\aspnetcore\tutorials\grpc\grpc-start\sample\GrpcGreeter
info: Microsoft.AspNetCore.Hosting.Diagnostics[1]
      Request starting HTTP/2 POST https://localhost:5001/Greet.Greeter/SayHello application/grpc
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[0]
      Executing endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Routing.EndpointMiddleware[1]
      Executed endpoint 'gRPC - /Greet.Greeter/SayHello'
info: Microsoft.AspNetCore.Hosting.Diagnostics[2]
      Request finished in 78.32260000000001ms 200 application/grpc

Catatan

Kode dalam artikel ini memerlukan sertifikat pengembangan ASP.NET Core HTTPS untuk mengamankan layanan gRPC. Jika klien .NET gRPC gagal dengan pesan The remote certificate is invalid according to the validation procedure. atau The SSL connection could not be established., sertifikat pengembangan tidak tepercaya. Untuk memperbaiki masalah ini, lihat Memanggil layanan gRPC dengan sertifikat yang tidak tepercaya/tidak valid.

Langkah berikutnya