Skip to content

Commit c090834

Browse files
committed
add grpc-start .NET 9 sample
1 parent 9f78c44 commit c090834

File tree

10 files changed

+180
-0
lines changed

10 files changed

+180
-0
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<Project Sdk="Microsoft.NET.Sdk.Web">
2+
3+
<PropertyGroup>
4+
<TargetFramework>net9.0</TargetFramework>
5+
<Nullable>enable</Nullable>
6+
<ImplicitUsings>enable</ImplicitUsings>
7+
</PropertyGroup>
8+
9+
<ItemGroup>
10+
<Protobuf Include="Protos\greet.proto" GrpcServices="Server" />
11+
</ItemGroup>
12+
13+
<ItemGroup>
14+
<PackageReference Include="Grpc.AspNetCore" Version="2.64.0" />
15+
</ItemGroup>
16+
17+
</Project>
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
using GrpcGreeter.Services;
2+
3+
var builder = WebApplication.CreateBuilder(args);
4+
5+
// Add services to the container.
6+
builder.Services.AddGrpc();
7+
8+
var app = builder.Build();
9+
10+
// Configure the HTTP request pipeline.
11+
app.MapGrpcService<GreeterService>();
12+
app.MapGet("/", () => "Communication with gRPC endpoints must be made through a gRPC client. To learn how to create a client, visit: https://go.microsoft.com/fwlink/?linkid=2086909");
13+
14+
app.Run();
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
syntax = "proto3";
2+
3+
option csharp_namespace = "GrpcGreeter";
4+
5+
package greet;
6+
7+
// The greeting service definition.
8+
service Greeter {
9+
// Sends a greeting
10+
rpc SayHello (HelloRequest) returns (HelloReply);
11+
}
12+
13+
// The request message containing the user's name.
14+
message HelloRequest {
15+
string name = 1;
16+
}
17+
18+
// The response message containing the greetings.
19+
message HelloReply {
20+
string message = 1;
21+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
using Grpc.Core;
2+
using GrpcGreeter;
3+
4+
namespace GrpcGreeter.Services;
5+
6+
#region snippet
7+
public class GreeterService : Greeter.GreeterBase
8+
{
9+
private readonly ILogger<GreeterService> _logger;
10+
public GreeterService(ILogger<GreeterService> logger)
11+
{
12+
_logger = logger;
13+
}
14+
15+
public override Task<HelloReply> SayHello(HelloRequest request, ServerCallContext context)
16+
{
17+
return Task.FromResult(new HelloReply
18+
{
19+
Message = "Hello " + request.Name
20+
});
21+
}
22+
}
23+
#endregion
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"Logging": {
3+
"LogLevel": {
4+
"Default": "Information",
5+
"Microsoft.AspNetCore": "Warning",
6+
"Microsoft.AspNetCore.Hosting": "Information",
7+
"Microsoft.AspNetCore.Routing.EndpointMiddleware": "Information"
8+
}
9+
}
10+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"Logging": {
3+
"LogLevel": {
4+
"Default": "Information",
5+
"Microsoft.AspNetCore": "Warning"
6+
}
7+
},
8+
"AllowedHosts": "*",
9+
"Kestrel": {
10+
"EndpointDefaults": {
11+
"Protocols": "Http2"
12+
}
13+
}
14+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<TargetFramework>net9.0</TargetFramework>
6+
<ImplicitUsings>enable</ImplicitUsings>
7+
<Nullable>enable</Nullable>
8+
</PropertyGroup>
9+
10+
<ItemGroup>
11+
<PackageReference Include="Google.Protobuf" Version="3.29.3" />
12+
<PackageReference Include="Grpc.Net.Client" Version="2.67.0" />
13+
<PackageReference Include="Grpc.Tools" Version="2.69.0">
14+
<PrivateAssets>all</PrivateAssets>
15+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
16+
</PackageReference>
17+
</ItemGroup>
18+
19+
<ItemGroup>
20+
<Protobuf Include="Protos\greet.proto" GrpcServices="Client" />
21+
</ItemGroup>
22+
</Project>
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#region snippet2
2+
using Grpc.Net.Client;
3+
using GrpcGreeterClient;
4+
5+
#region snippet
6+
// The port number must match the port of the gRPC server.
7+
using var channel = GrpcChannel.ForAddress("https://localhost:7042");
8+
var client = new Greeter.GreeterClient(channel);
9+
var reply = await client.SayHelloAsync(
10+
new HelloRequest { Name = "GreeterClient" });
11+
Console.WriteLine("Greeting: " + reply.Message);
12+
Console.WriteLine("Press any key to exit...");
13+
Console.ReadKey();
14+
#endregion
15+
#endregion
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
syntax = "proto3";
2+
3+
option csharp_namespace = "GrpcGreeterClient";
4+
5+
package greet;
6+
7+
// The greeting service definition.
8+
service Greeter {
9+
// Sends a greeting
10+
rpc SayHello (HelloRequest) returns (HelloReply);
11+
}
12+
13+
// The request message containing the user's name.
14+
message HelloRequest {
15+
string name = 1;
16+
}
17+
18+
// The response message containing the greetings.
19+
message HelloReply {
20+
string message = 1;
21+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
---
2+
page_type: sample
3+
description: "Sample projects for a gRPC Service and gRPC client on ASP.NET Core."
4+
languages:
5+
- csharp
6+
products:
7+
- dotnet-core
8+
- aspnet-core
9+
- vs
10+
urlFragment: create-grpc-client
11+
---
12+
13+
# Create a gRPC client and server in ASP.NET Core 9
14+
15+
This sample demonstrates a .NET Core [gRPC](https://grpc.io/docs/guides/) client and an ASP.NET Core gRPC Server.
16+
17+
For a tutorial on this sample see [Tutorial: Create a gRPC client and server in ASP.NET Core](https://learn.microsoft.com/aspnet/core/tutorials/grpc/grpc-start?view=aspnetcore-9.0)
18+
19+
### Docs help & next steps for gRPC
20+
21+
* [Introduction to gRPC on ASP.NET Core](https://learn.microsoft.com/aspnet/core/grpc/)
22+
* [gRPC services with C#](https://learn.microsoft.com/aspnet/core/grpc/basics/)
23+
* [Migrating gRPC services from C-core to ASP.NET Core](https://learn.microsoft.com/aspnet/core/grpc/migration/)

0 commit comments

Comments
 (0)