Öğretici: ASP.NET Core bir gRPC istemcisi ve sunucusu oluşturma
bu öğreticide, bir .net Core grpc istemcisinin ve bir ASP.NET Core grpc sunucusunun nasıl oluşturulacağı gösterilmektedir. Sonda, gRPC Greeter hizmeti ile iletişim kuran bir gRPC istemcisine sahip olacaksınız.
Bu öğreticide şunları yaptınız:
- GRPC sunucusu oluşturun.
- GRPC istemcisi oluşturun.
- GRPC istemci hizmetini gRPC Greeter hizmeti ile test edin.
Önkoşullar
- ASP.NET ve web geliştirme iş yüküyle Visual Studio 2022 .
GRPC hizmeti oluşturma
- Visual Studio 2022 ' u başlatın ve yeni proje oluştur' u seçin.
- Yeni proje oluştur iletişim kutusunda için arama yapın
gRPC. ASP.NET Core grpc hizmetini seçip ileri ' yi seçin. - yeni projenizi yapılandırın iletişim kutusunda
GrpcGreeterProject adı girin. Kodu kopyaladığınızda ve yapıştırdığınızda ad alanlarının eşleşmesi için, proje Grpcgreeter adında bir ad vermek önemlidir. - İleri’yi seçin.
- Ek bilgi iletişim kutusunda .net 6,0 (Önizleme) öğesini seçin ve ardından Oluştur' u seçin.
Hizmeti çalıştırma
Hata ayıklayıcı olmadan çalıştırmak için CTRL + F5 tuşlarına basın.
Visual Studio bir proje SSL kullanmak için henüz yapılandırılmadığında aşağıdaki iletişim kutusunu görüntüler:

IIS Express SSL sertifikasına güveniyorsanız evet ' i seçin.
Aşağıdaki iletişim kutusu görüntülenir:

Geliştirme sertifikasına güvenmeyi kabul ediyorsanız Evet ' i seçin.
Firefox tarayıcısına güvenme hakkında bilgi için bkz. Firefox SEC_ERROR_INADEQUATE_KEY_USAGE hatası.
Visual Studio:
- KestrelSunucuyu başlatır.
- Bir tarayıcı başlatır.
- , Gibi öğesine gider
http://localhost:porthttp://localhost:7042.- bağlantı noktası: uygulama için rastgele atanan bir bağlantı noktası numarası.
localhost: Yerel bilgisayar için Standart ana bilgisayar adı. Localhost yalnızca yerel bilgisayardan Web isteklerine hizmet verir.
Günlükler hizmeti dinlediği hizmetini gösterir https://localhost:7042 .
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:7042
info: Microsoft.Hosting.Lifetime[0]
Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
Hosting environment: Development
Not
GRPC şablonu, Aktarım Katmanı Güvenliği (TLS)kullanmak üzere yapılandırılmıştır. gRPC istemcilerinin, sunucuyu çağırmak için HTTPS kullanması gerekir. GRPC hizmeti localhost bağlantı noktası numarası, proje oluşturulduğunda ve gRPC hizmeti projesinin Properties\launchSettings.JSON dosyasında ayarlandığında rastgele atanır.
macos, TLS ile ASP.NET Core grpc 'yi desteklemez. MacOS 'ta gRPC hizmetlerini başarıyla çalıştırmak için ek yapılandırma gerekir. daha fazla bilgi için bkz. macos üzerinde grpc uygulaması ASP.NET Core başlatılamıyor.
Proje dosyalarını inceleyin
Grpcgreeter proje dosyaları:
- Prototips/Greet. proto:
GreeterGRPC 'Yi tanımlar ve GRPC sunucu varlıklarını oluşturmak için kullanılır. Daha fazla bilgi için bkz. gRPC 'ye giriş. - Hizmetler klasörü: hizmetin uygulamasını içerir
Greeter. - appSettings. JSON: tarafından kullanılan protokol gibi yapılandırma verilerini içerir Kestrel . Daha fazla bilgi için bkz. ASP.NET Core'de yapılandırma.
- Şunu içeren program. cs:
- GRPC hizmeti için giriş noktası. Daha fazla bilgi için bkz. ASP.NET Core .NET genel ana bilgisayarı.
- Uygulama davranışını yapılandıran kod. Daha fazla bilgi için bkz. uygulama başlatma.
Bir .NET konsol uygulamasında gRPC istemcisini oluşturma
- ikinci bir Visual Studio örneğini açın ve yeni proje oluştur' u seçin.
- Yeni proje oluştur Iletişim kutusunda konsol uygulaması' nı seçin ve İleri' yi seçin.
- Project ad metin kutusuna grpcgreeterclient girin ve ileri' yi seçin.
- Ek bilgi iletişim kutusunda .net 6,0 (Önizleme) öğesini seçin ve ardından Oluştur' u seçin.
gerekli NuGet paketlerini ekle
grpc istemci projesi aşağıdaki NuGet paketlerini gerektirir:
- .NET Core istemcisini içeren GRPC .net. Client.
- C# için prototipsiz ileti API 'Leri içeren Google. Protoarabellek.
- Prototipleme dosyaları için C# araçları desteği içeren GRPC. Tools. Araç çalışma zamanında gerekli değildir, bu nedenle bağımlılık ile işaretlenir
PrivateAssets="All".
Paket Yöneticisi konsolunu (PMC) kullanarak veya NuGet paketlerini yönetmek için paketleri yükler.
Paket yüklemek için PMC seçeneği
Visual Studio, araçlar > NuGet Paket Yöneticisi > Paket Yöneticisi konsolunu seçin
Paket Yöneticisi konsol penceresinde,
cd GrpcGreeterClientdizini grpcgreeterclient. csproj dosyalarını içeren klasöre değiştirmek için komutunu çalıştırın.Aşağıdaki komutları çalıştırın:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
paketleri yüklemek için NuGet paketlerini yönet seçeneği
- Çözüm Gezgini > NuGet paketlerini yönetmek için projeye sağ tıklayın.
- Gözat sekmesini seçin.
- Arama kutusuna GRPC .net. Client girin.
- Araştır sekmesinden GRPC .net. Client paketini seçin ve ardından Install' ı seçin.
- Ve için
Google.ProtobuftekrarlayınGrpc.Tools.
Greet. proto Ekle
GRPC istemci projesinde bir Prototips klasörü oluşturun.
Protos\bilgisem. proto dosyasını GRPC Greeter hizmetinden GRPC Istemci projesindeki prototips klasörüne kopyalayın.
Dosyanın içindeki ad alanını
greet.protoprojenin ad alanına güncelleştirin:option csharp_namespace = "GrpcGreeterClient";Grpcgreeterclient. csproj proje dosyasını düzenleyin:
projeye sağ tıklayın ve Project dosyayı düzenle' yi seçin.
<Protobuf>Greet. proto dosyasına başvuran bir öğesi olan bir öğe grubu ekleyin:<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Greeter istemcisini oluşturma
Ad alanındaki türleri oluşturmak için istemci projesi oluşturun
GrpcGreeter.GrpcGreeterTürler yapı işlemi tarafından otomatik olarak oluşturulur.GRPC istemci programı. cs dosyasını aşağıdaki kodla güncelleştirin:
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();
Program. cs , GRPC istemcisinin giriş noktasını ve mantığını içerir.
Greeter istemcisi şu şekilde oluşturulur:
GrpcChannelGRPC hizmetine bağlantı oluşturmak için bilgileri içeren bir örneği oluşturma.GrpcChannelGreeter istemcisini oluşturmak için kullanarak:
// 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();
Greeter istemcisi zaman uyumsuz yöntemi çağırır SayHello . SayHelloÇağrının sonucu görüntülenir:
// 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();
GRPC istemcisini gRPC Greeter hizmeti ile test etme
- Greeter hizmetinde,
Ctrl+F5hata ayıklayıcı olmadan sunucuyu başlatmak için tuşuna basın. GrpcGreeterClientProjede,Ctrl+F5hata ayıklayıcı olmadan istemcisini başlatmak için tuşuna basın.
İstemci, adı Greeterclient olan bir iletiyle hizmete bir tebrik gönderir. Hizmet, "Hello GreeterClient" iletisini yanıt olarak gönderir. Komut isteminde "Hello GreeterClient" yanıtı görüntülenir:
Greeting: Hello GreeterClient
Press any key to exit...
GRPC hizmeti, komut istemine yazılan günlüklerde başarılı çağrının ayrıntılarını kaydeder:
info: Microsoft.Hosting.Lifetime[0]
Now listening on: https://localhost:7042
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:7042/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
Not
bu makaledeki kod, grpc hizmetini güvenli hale getirmek için ASP.NET Core HTTPS geliştirme sertifikası gerektirir. .NET gRPC istemcisi iletiyle başarısız olursa The remote certificate is invalid according to the validation procedure. veya The SSL connection could not be established. geliştirme sertifikası güvenilir olmaz. Bu sorunu onarmak için bkz. Güvenilmeyen/geçersiz sertifikayla gRPC hizmeti çağırma.
Uyarı
ASP.NET Core GRPC'nin, Azure App Service IIS ile birlikte Azure App Service gerekir. gRPC'nin nerede kullanılabı hakkında daha fazla bilgi için .NET'de desteklenen platformlarda gRPC bkz. .
Sonraki adımlar
bu öğreticide, bir .net Core grpc istemcisinin ve bir ASP.NET Core grpc sunucusunun nasıl oluşturulacağı gösterilmektedir.
Sonda, gRPC Greeter hizmeti ile iletişim kuran bir gRPC istemcisine sahip olacaksınız.
Örnek kodu görüntüleyin veya indirin (nasıl indirilir).
Bu öğreticide şunları yaptınız:
- GRPC sunucusu oluşturun.
- GRPC istemcisi oluşturun.
- GRPC istemci hizmetini gRPC Greeter hizmeti ile test edin.
Önkoşullar
- Visual Studio ve web geliştirme iş yüküyle 2019 16.8 ASP.NET sonraki bir 2019
- .NET 5.0 SDK
GRPC hizmeti oluşturma
- Visual Studio başlatın ve yeni proje oluştur' u seçin.
- Yeni proje oluştur Iletişim kutusunda GRPC hizmeti ' ni seçin ve İleri' yi seçin.
- yeni projenizi yapılandırın iletişim kutusunda
GrpcGreeterProject adı girin. Kodu kopyaladığınızda ve yapıştırdığınızda ad alanlarının eşleşmesi için, proje Grpcgreeter adında bir ad vermek önemlidir. - İleri’yi seçin.
- Ek bilgi Iletişim kutusunda hedef çerçeve açılan menüsünde .NET 5,0 ' i seçin.
- Oluştur’u seçin.
Hizmeti çalıştırma
Hata ayıklayıcı olmadan çalıştırmak için Ctrl+F5 tuşlarına basın.
Visual Studio bir proje SSL kullanmak için henüz yapılandırılmadığında aşağıdaki iletişim kutusunu görüntüler:

IIS Express SSL sertifikasına güveniyorsanız evet ' i seçin.
Aşağıdaki iletişim kutusu görüntülenir:

Geliştirme sertifikasına güvenmeyi kabul ediyorsanız Evet ' i seçin.
Firefox tarayıcısına güvenme hakkında bilgi için bkz. Firefox SEC_ERROR_INADEQUATE_KEY_USAGE hatası.
Visual Studio uygulamayı IIS Express ve çalıştırır. Adres çubuğu gibi
localhost:port#bir şey değil,example.comgösterir. Bunun nedeni yerellocalhostbilgisayarın standart ana bilgisayar adıdır. Localhost yalnızca yerel bilgisayardan gelen web isteklerine hizmet verir. Visual Studio bir web projesi oluşturduğunda, web sunucusu için rastgele bir bağlantı noktası kullanılır.
Günlükler hizmeti dinlediği hizmetini gösterir 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
Not
GRPC şablonu, Aktarım Katmanı Güvenliği (TLS)kullanmak üzere yapılandırılmıştır. gRPC istemcilerinin, sunucuyu çağırmak için HTTPS kullanması gerekir.
macos, TLS ile ASP.NET Core grpc 'yi desteklemez. MacOS 'ta gRPC hizmetlerini başarıyla çalıştırmak için ek yapılandırma gerekir. daha fazla bilgi için bkz. macos üzerinde grpc uygulaması ASP.NET Core başlatılamıyor.
Proje dosyalarını inceleyin
Grpcgreeter proje dosyaları:
- Greet. proto: prototips/Greet. proto dosyası
GreetergRPC 'yi tanımlar ve GRPC sunucu varlıklarını oluşturmak için kullanılır. Daha fazla bilgi için bkz. gRPC 'ye giriş. - Hizmetler klasörü: hizmetin uygulamasını içerir
Greeter. - appSettings. JSON: tarafından kullanılan protokol gibi yapılandırma verilerini içerir Kestrel . Daha fazla bilgi için bkz. ASP.NET Core'de yapılandırma.
- Program. cs: GRPC hizmeti için giriş noktasını içerir. Daha fazla bilgi için bkz. ASP.NET Core .NET genel ana bilgisayarı.
- Startup. cs: uygulama davranışını yapılandıran kodu içerir. Daha fazla bilgi için bkz. uygulama başlatma.
Bir .NET konsol uygulamasında gRPC istemcisini oluşturma
- ikinci bir Visual Studio örneğini açın ve yeni proje oluştur' u seçin.
- Yeni proje oluştur Iletişim kutusunda konsol uygulaması (.NET Core) öğesini seçin ve İleri' yi seçin.
- Project ad metin kutusuna grpcgreeterclient girin ve oluştur' u seçin.
Gerekli paketleri Ekle
GRPC istemci projesi aşağıdaki paketleri gerektirir:
- .NET Core istemcisini içeren GRPC .net. Client.
- C# için prototipsiz ileti API 'Leri içeren Google. Protoarabellek.
- Prototipleme dosyaları için C# araçları desteği içeren GRPC. Tools. Araç çalışma zamanında gerekli değildir, bu nedenle bağımlılık ile işaretlenir
PrivateAssets="All".
Paket Yöneticisi konsolunu (PMC) kullanarak veya NuGet paketlerini yönetmek için paketleri yükler.
Paket yüklemek için PMC seçeneği
Visual Studio, araçlar > NuGet Paket Yöneticisi > Paket Yöneticisi konsolunu seçin
Paket Yöneticisi konsol penceresinde,
cd GrpcGreeterClientdizini grpcgreeterclient. csproj dosyalarını içeren klasöre değiştirmek için komutunu çalıştırın.Aşağıdaki komutları çalıştırın:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
paketleri yüklemek için NuGet paketlerini yönet seçeneği
- Çözüm Gezgini > NuGet paketlerini yönetmek için projeye sağ tıklayın.
- Gözat sekmesini seçin.
- Arama kutusuna GRPC .net. Client girin.
- Araştır sekmesinden GRPC .net. Client paketini seçin ve ardından Install' ı seçin.
- Ve için
Google.ProtobuftekrarlayınGrpc.Tools.
Greet. proto Ekle
GRPC istemci projesinde bir Prototips klasörü oluşturun.
Protos\bilgisem. proto dosyasını GRPC Greeter hizmetinden GRPC Istemci projesindeki prototips klasörüne kopyalayın.
Dosyanın içindeki ad alanını
greet.protoprojenin ad alanına güncelleştirin:option csharp_namespace = "GrpcGreeterClient";Grpcgreeterclient. csproj proje dosyasını düzenleyin:
projeye sağ tıklayın ve Project dosyayı düzenle' yi seçin.
<Protobuf>Greet. proto dosyasına başvuran bir öğesi olan bir öğe grubu ekleyin:<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Greeter istemcisini oluşturma
Ad alanındaki türleri oluşturmak için istemci projesi oluşturun GrpcGreeter . GrpcGreeterTürler yapı işlemi tarafından otomatik olarak oluşturulur.
GRPC istemci programı. cs dosyasını aşağıdaki kodla güncelleştirin:
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 , GRPC istemcisinin giriş noktasını ve mantığını içerir.
Greeter istemcisi şu şekilde oluşturulur:
GrpcChannelGRPC hizmetine bağlantı oluşturmak için bilgileri içeren bir örneği oluşturma.GrpcChannelGreeter istemcisini oluşturmak için kullanarak:
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();
}
Greeter istemcisi zaman uyumsuz yöntemi çağırır SayHello . SayHelloÇağrının sonucu görüntülenir:
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();
}
GRPC istemcisini gRPC Greeter hizmeti ile test etme
- Greeter hizmetinde,
Ctrl+F5hata ayıklayıcı olmadan sunucuyu başlatmak için tuşuna basın. GrpcGreeterClientProjede,Ctrl+F5hata ayıklayıcı olmadan istemcisini başlatmak için tuşuna basın.
İstemci, adı Greeterclient olan bir iletiyle hizmete bir tebrik gönderir. Hizmet, "Hello GreeterClient" iletisini yanıt olarak gönderir. Komut isteminde "Hello GreeterClient" yanıtı görüntülenir:
Greeting: Hello GreeterClient
Press any key to exit...
GRPC hizmeti, komut istemine yazılan günlüklerde başarılı çağrının ayrıntılarını kaydeder:
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
Not
bu makaledeki kod, grpc hizmetini güvenli hale getirmek için ASP.NET Core HTTPS geliştirme sertifikası gerektirir. .NET gRPC istemcisi iletiyle başarısız olursa The remote certificate is invalid according to the validation procedure. veya The SSL connection could not be established. geliştirme sertifikası güvenilir olmaz. Bu sorunu onarmak için bkz. Güvenilmeyen/geçersiz sertifikayla gRPC hizmeti çağırma.
Uyarı
ASP.NET Core GRPC'nin, Azure App Service IIS ile birlikte Azure App Service gerekir. gRPC'nin nerede kullanılabı hakkında daha fazla bilgi için .NET'de desteklenen platformlarda gRPC bkz. .
Sonraki adımlar
bu öğreticide, bir .net Core grpc istemcisinin ve bir ASP.NET Core grpc sunucusunun nasıl oluşturulacağı gösterilmektedir.
Sonda, gRPC Greeter hizmeti ile iletişim kuran bir gRPC istemcisine sahip olacaksınız.
Örnek kodu görüntüleyin veya indirin (nasıl indirilir).
Bu öğreticide şunları yaptınız:
- GRPC sunucusu oluşturun.
- GRPC istemcisi oluşturun.
- GRPC istemci hizmetini gRPC Greeter hizmeti ile test edin.
Önkoşullar
Visual Studio ve web geliştirme iş yüküyle 2019 16.4 ASP.NET sonraki bir 2019
GRPC hizmeti oluşturma
Visual Studio başlatın ve yeni proje oluştur' u seçin. alternatif olarak, Visual Studio dosya menüsünde yeni > Project' yi seçin.
Yeni proje oluştur Iletişim kutusunda GRPC hizmeti ' ni seçin ve İleri' yi seçin:

Projeyi Grpcgreeter olarak adlandırın. Kodu kopyaladığınızda ve yapıştırdığınızda ad alanlarının eşleşmesi için, proje Grpcgreeter adında bir ad vermek önemlidir.
Oluştur’u seçin.
Yeni bir gRPC hizmeti oluştur iletişim kutusunda:
- GRPC hizmeti şablonu seçilidir.
- Oluştur’u seçin.
Hizmeti çalıştırma
Hata ayıklayıcı olmadan çalıştırmak için Ctrl+F5 tuşlarına basın.
Visual Studio bir proje SSL kullanmak için henüz yapılandırılmadığında aşağıdaki iletişim kutusunu görüntüler:

IIS Express SSL sertifikasına güveniyorsanız evet ' i seçin.
Aşağıdaki iletişim kutusu görüntülenir:

Geliştirme sertifikasına güvenmeyi kabul ediyorsanız Evet ' i seçin.
Firefox tarayıcısına güvenme hakkında bilgi için bkz. Firefox SEC_ERROR_INADEQUATE_KEY_USAGE hatası.
Visual Studio uygulamayı IIS Express ve çalıştırır. Adres çubuğu gibi
localhost:port#bir şey değil,example.comgösterir. Bunun nedeni yerellocalhostbilgisayarın standart ana bilgisayar adıdır. Localhost yalnızca yerel bilgisayardan gelen web isteklerine hizmet verir. Visual Studio bir web projesi oluşturduğunda, web sunucusu için rastgele bir bağlantı noktası kullanılır.
Günlükler hizmeti dinlediği hizmetini gösterir 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
Not
GRPC şablonu, Aktarım Katmanı Güvenliği (TLS)kullanmak üzere yapılandırılmıştır. gRPC istemcilerinin, sunucuyu çağırmak için HTTPS kullanması gerekir.
macos, TLS ile ASP.NET Core grpc 'yi desteklemez. MacOS 'ta gRPC hizmetlerini başarıyla çalıştırmak için ek yapılandırma gerekir. daha fazla bilgi için bkz. macos üzerinde grpc uygulaması ASP.NET Core başlatılamıyor.
Proje dosyalarını inceleyin
Grpcgreeter proje dosyaları:
- Greet. proto: prototips/Greet. proto dosyası
GreetergRPC 'yi tanımlar ve GRPC sunucu varlıklarını oluşturmak için kullanılır. Daha fazla bilgi için bkz. gRPC 'ye giriş. - Hizmetler klasörü: hizmetin uygulamasını içerir
Greeter. - appSettings. JSON: tarafından kullanılan protokol gibi yapılandırma verilerini içerir Kestrel . Daha fazla bilgi için bkz. ASP.NET Core'de yapılandırma.
- Program. cs: GRPC hizmeti için giriş noktasını içerir. Daha fazla bilgi için bkz. ASP.NET Core .NET genel ana bilgisayarı.
- Startup. cs: uygulama davranışını yapılandıran kodu içerir. Daha fazla bilgi için bkz. uygulama başlatma.
Bir .NET konsol uygulamasında gRPC istemcisini oluşturma
- ikinci bir Visual Studio örneğini açın ve yeni proje oluştur' u seçin.
- Yeni proje oluştur Iletişim kutusunda konsol uygulaması (.NET Core) öğesini seçin ve İleri' yi seçin.
- Project ad metin kutusuna grpcgreeterclient girin ve oluştur' u seçin.
Gerekli paketleri Ekle
GRPC istemci projesi aşağıdaki paketleri gerektirir:
- .NET Core istemcisini içeren GRPC .net. Client.
- C# için prototipsiz ileti API 'Leri içeren Google. Protoarabellek.
- Prototipleme dosyaları için C# araçları desteği içeren GRPC. Tools. Araç çalışma zamanında gerekli değildir, bu nedenle bağımlılık ile işaretlenir
PrivateAssets="All".
Paket Yöneticisi konsolunu (PMC) kullanarak veya NuGet paketlerini yönetmek için paketleri yükler.
Paket yüklemek için PMC seçeneği
Visual Studio, araçlar > NuGet Paket Yöneticisi > Paket Yöneticisi konsolunu seçin
Paket Yöneticisi konsol penceresinde,
cd GrpcGreeterClientdizini grpcgreeterclient. csproj dosyalarını içeren klasöre değiştirmek için komutunu çalıştırın.Aşağıdaki komutları çalıştırın:
Install-Package Grpc.Net.Client Install-Package Google.Protobuf Install-Package Grpc.Tools
paketleri yüklemek için NuGet paketlerini yönet seçeneği
- Çözüm Gezgini > NuGet paketlerini yönetmek için projeye sağ tıklayın.
- Gözat sekmesini seçin.
- Arama kutusuna GRPC .net. Client girin.
- Araştır sekmesinden GRPC .net. Client paketini seçin ve ardından Install' ı seçin.
- Ve için
Google.ProtobuftekrarlayınGrpc.Tools.
Greet. proto Ekle
GRPC istemci projesinde bir Prototips klasörü oluşturun.
Protos\bilgisem. proto dosyasını GRPC Greeter hizmetinden GRPC Istemci projesindeki prototips klasörüne kopyalayın.
Dosyanın içindeki ad alanını
greet.protoprojenin ad alanına güncelleştirin:option csharp_namespace = "GrpcGreeterClient";Grpcgreeterclient. csproj proje dosyasını düzenleyin:
projeye sağ tıklayın ve Project dosyayı düzenle' yi seçin.
<Protobuf>Greet. proto dosyasına başvuran bir öğesi olan bir öğe grubu ekleyin:<ItemGroup> <Protobuf Include="Protos\greet.proto" GrpcServices="Client" /> </ItemGroup>
Greeter istemcisini oluşturma
Ad alanındaki türleri oluşturmak için istemci projesi oluşturun GrpcGreeter . GrpcGreeterTürler yapı işlemi tarafından otomatik olarak oluşturulur.
GRPC istemci programı. cs dosyasını aşağıdaki kodla güncelleştirin:
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 , GRPC istemcisinin giriş noktasını ve mantığını içerir.
Greeter istemcisi şu şekilde oluşturulur:
GrpcChannelGRPC hizmetine bağlantı oluşturmak için bilgileri içeren bir örneği oluşturma.GrpcChannelGreeter istemcisini oluşturmak için kullanarak:
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();
}
Greeter istemcisi zaman uyumsuz yöntemi çağırır SayHello . SayHelloÇağrının sonucu görüntülenir:
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();
}
GRPC istemcisini gRPC Greeter hizmeti ile test etme
- Greeter hizmetinde,
Ctrl+F5hata ayıklayıcı olmadan sunucuyu başlatmak için tuşuna basın. GrpcGreeterClientProjede,Ctrl+F5hata ayıklayıcı olmadan istemcisini başlatmak için tuşuna basın.
İstemci, adı GreeterClient olan bir iletiyle birlikte hizmete bir selamlama gönderir. Hizmet yanıt olarak "Hello GreeterClient" iletiyi gönderir. Komut isteminde "Hello GreeterClient" yanıtı görüntülenir:
Greeting: Hello GreeterClient
Press any key to exit...
gRPC hizmeti, başarılı çağrının ayrıntılarını komut istemine yazılan günlüklere kaydeder:
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
Not
Bu makaledeki kod, gRPC ASP.NET Core için https geliştirme sertifikası gerektirir. .NET gRPC istemcisi veya iletisiyle The remote certificate is invalid according to the validation procedure. başarısız The SSL connection could not be established. olursa, geliştirme sertifikasına güvenilmiyor. Bu sorunu düzeltmek için bkz. Güvenilmeyen/geçersiz sertifika ile gRPC hizmetini çağırma.
Uyarı
ASP.NET Core GRPC'nin, Azure App Service IIS ile birlikte Azure App Service gerekir. gRPC'nin nerede kullanılabı hakkında daha fazla bilgi için .NET'de desteklenen platformlarda gRPC bkz. .




