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
Visual Studio 2022 dengan beban kerja ASP.NET serta pengembangan web.
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:
Pilih Ya jika Anda mempercayai sertifikat IIS Express SSL.
Dialog berikut ditampilkan:
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
, sepertihttp://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\launchSettings.json dari proyek layanan gRPC.
Memeriksa file proyek
File proyek GrpcGreeter :
Protos/greet.proto
: mendefinisikanGreeter
gRPC dan digunakan untuk menghasilkan aset server gRPC. Untuk informasi selengkapnya, lihat Pengenalan gRPC.Services
folder: Berisi implementasiGreeter
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:- Titik masuk untuk layanan gRPC. Untuk informasi lebih lanjut, lihat .NET Generic Host di ASP.NET Core.
- 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 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 yangGrpcGreeterClient.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
danGrpc.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 denganHTTPS
nomor port yang ditentukan dalamProperties/launchSettings.json
dalamGrpcGreeter
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, tekanCtrl+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
Visual Studio 2022 dengan beban kerja ASP.NET serta pengembangan web.
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:
Pilih Ya jika Anda mempercayai sertifikat IIS Express SSL.
Dialog berikut ditampilkan:
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
, sepertihttp://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\launchSettings.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
: mendefinisikanGreeter
gRPC dan digunakan untuk menghasilkan aset server gRPC. Untuk informasi selengkapnya, lihat Pengenalan gRPC.Services
folder: Berisi implementasiGreeter
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:- Titik masuk untuk layanan gRPC. Untuk informasi lebih lanjut, lihat .NET Generic Host di ASP.NET Core.
- 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, 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 yangGrpcGreeterClient.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
danGrpc.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 denganHTTPS
nomor port yang ditentukan dalamProperties/launchSettings.json
dalamGrpcGreeter
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, tekanCtrl+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
- Visual Studio 2022 dengan beban kerja ASP.NET serta pengembangan web.
- .NET 6.0 SDK
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:
Pilih Ya jika Anda mempercayai sertifikat IIS Express SSL.
Dialog berikut ditampilkan:
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
, sepertihttp://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\launchSettings.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
: mendefinisikanGreeter
gRPC dan digunakan untuk menghasilkan aset server gRPC. Untuk informasi selengkapnya, lihat Pengenalan gRPC.Services
folder: Berisi implementasiGreeter
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:- Titik masuk untuk layanan gRPC. Untuk informasi lebih lanjut, lihat .NET Generic Host di ASP.NET Core.
- 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, 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 yangGrpcGreeterClient.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
danGrpc.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 denganHTTPS
nomor port yang ditentukan dalamProperties/launchSettings.json
dalamGrpcGreeter
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, tekanCtrl+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
- Visual Studio 2019 16.8 atau versi terbaru dengan beban kerja ASP.NET dan pengembangan web
- .NET 5.0 SDK
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:
Pilih Ya jika Anda mempercayai sertifikat IIS Express SSL.
Dialog berikut ditampilkan:
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 sepertiexample.com
. Itu karenalocalhost
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 yangGrpcGreeterClient.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
danGrpc.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, tekanCtrl+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
- Visual Studio 2019 16.4 atau yang lebih baru dengan beban kerja ASP.NET dan pengembangan web
- .NET Core 3.1 SDK
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:
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:
Pilih Ya jika Anda mempercayai sertifikat IIS Express SSL.
Dialog berikut ditampilkan:
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 sepertiexample.com
. Itu karenalocalhost
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 yangGrpcGreeterClient.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
danGrpc.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, tekanCtrl+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
ASP.NET Core