Kami senang mengumumkan dukungan eksperimental untuk gRPC-Web dengan .NET. gRPC-Web memungkinkan Anda untuk memanggil gRPC dari aplikasi berbasis browser seperti JavaScript SPA atau aplikasi Blazor WebAssembly.gRPC-Web untuk .NET berjanji untuk membawa banyak fitur gRPC yang hebat ke aplikasi browser:- Klien Yang Menghasilkan Kode Yang Diketik Ketat
- Posting Protobuf Ringkas
- Streaming Server

Apa itu gRPC-Web
Tidak mungkin untuk mengimplementasikan spesifikasi gRPC HTTP / 2 di browser karena tidak ada API browser dengan kontrol terperinci yang cukup atas permintaan HTTP. gRPC-Web memecahkan masalah ini dengan menjadi kompatibel dengan HTTP / 1.1 dan HTTP / 2.gRPC-Web bukan teknologi baru. Ada klien gRPC-Web JavaScript yang stabil , serta proxy untuk terjemahan antara gRPC dan gRPC-Web untuk layanan. Paket eksperimental baru memungkinkan aplikasi ASP.NET Core gRPC untuk mendukung gRPC-Web tanpa server proxy dan memungkinkan klien .NET Core gRPC untuk menjalankan layanan gRPC-Web. (Bagus untuk aplikasi Blazor WebAssembly!)Fitur baru dengan gRPC-Web
- Panggil aplikasi ASP.NET Core gRPC dari browser - Browser API tidak dapat memanggil gRPC HTTP / 2. gRPC-Web menawarkan alternatif yang kompatibel.
- SPA JavaScript
- Aplikasi Perakitan Web NET Blazor
- Host aplikasi ASP.NET Core gRPC di Layanan Aplikasi IIS dan Azure. Beberapa server, seperti IIS dan Layanan Aplikasi Azure, saat ini tidak dapat meng-host layanan gRPC. Sementara mereka secara aktif mengerjakannya, gRPC-Web menawarkan alternatif menarik yang saat ini bekerja di lingkungan apa pun.
- Panggil gRPC dari platform selain .NET Core. Beberapa platform .NET
HttpClient
tidak mendukung HTTP / 2. gRPC-Web dapat digunakan untuk menjalankan layanan gRPC pada platform ini (mis. Blazor WebAssembly, Xamarin).
Perhatikan bahwa gRPC-Web memiliki kinerja rendah dan dua fitur gRPC tidak lagi didukung: streaming klien dan streaming dua arah. (streaming ke server masih didukung!)Instruksi Server GRPC-Web
Jika Anda belum mempelajari gRPC di .NET, berikut ini adalah tutorial sederhana sehingga Anda dapat memulai .gRPC-Web tidak memerlukan perubahan pada layanan Anda, satu-satunya modifikasi adalah konfigurasi awal. Untuk mengaktifkan gRPC-Web dengan layanan ASP.NET Core gRPC, tambahkan tautan ke paket Grpc.AspNetCore.Web . Konfigurasikan aplikasi untuk menggunakan gRPC-Web, menambahkan AddGrpcWeb(...)
, dan UseGrpcWeb()
file startup: Startup.cspublic void ConfigureServices(IServiceCollection services)
{
services.AddGrpc();
}
public void Configure(IApplicationBuilder app)
{
app.UseRouting();
// gRPC-Web
app.UseGrpcWeb();
app.UseEndpoints(endpoints =>
{
endpoints.MapGrpcService<GreeterService>().EnableGrpcWeb();
});
}
Memanggil gRPC-Web dari browser mungkin memerlukan konfigurasi tambahan, misalnya, mengonfigurasi aplikasi untuk mendukung CORS.Instruksi GRPC-Web Klien
Klien gRPC-Web JavaScript memiliki instruksi untuk menyiapkan klien gRPC-Web untuk digunakan dalam browser JavaScript SPA.Memanggil gRPC-Web dengan klien .NET mirip dengan gRPC biasa, satu-satunya perubahan adalah cara saluran dibuat. Untuk mengaktifkan gRPC-Web, tambahkan tautan ke paket Grpc.Net.Client.Web . Konfigurasikan saluran untuk digunakan GrpcWebHandler
:// gRPC-Web
var handler = new GrpcWebHandler(GrpcWebMode.GrpcWebText, new HttpClientHandler());
var channel = GrpcChannel.ForAddress("https://localhost:5001", new GrpcChannelOptions
{
HttpClient = new HttpClient(handler)
});
var client = Greeter.GreeterClient(channel);
var response = await client.SayHelloAsync(new GreeterRequest { Name = ".NET" });
Untuk melihat gRPC-Web dengan .NET beraksi, baca posting blog paling keren dari kolega kami yang menggunakan gRPC-Web di Blazor WebAssembly .Coba gRPC-Web dengan ASP.NET Core hari ini
Paket pratinjau di NuGet:Anda dapat menemukan dokumentasi tentang penggunaan gRPC-Web dengan .NET Core di sini .Catatan: sementara gRPC-Web untuk .NET hanyalah proyek percobaan, bukan produk yang didukung.