| C# | C++ | Dart | Node |
| Go | Ruby | PHP | Python |
| Java | Kotlin | Objective-C |
| Lizenzheader | wenn erforderlich |
| Dateiübersicht | Beschreibung in Textform |
| Syntax | Version von Protocol Buffers (aktuell 3) |
| Paket | Paketname in Kleinbuchstaben |
| Importe | Sortierte Einbindung von Datenstrukturen |
| Dateioptionen | Z. T. plattformspezifische Optionen wie C# Namespace |
| Alles andere | Z. B. Dienstdefinitionen und Datenstrukturen |
import "google/protobuf/struct.proto"; import "google/protobuf/timestamp.proto"; import "google/protobuf/wrappers.proto"; import "grp-demo-apps/helpers.proto";
import "google/protobuf/struct.proto"; import "google/protobuf/timestamp.proto"; import "google/protobuf/wrappers.proto"; import "grp-demo-apps/helpers.proto";
option java_multiple_files = true;
option java_package = "my.java.example";option csharp_namespace = "MyDemoService.Contract";service DemoServices { rpc GetDemo (GetDemoRequest) returns (GetDemoResponse); rpc SetDemo (SetDemoRequest) returns (google.protobuf.Empty); }
service DemoServices { rpc GetDemo (GetDemoRequest) returns (GetDemoResponse); rpc SetDemo (SetDemoRequest) returns (google.protobuf.Empty); }
message MyDemoMessage { int32 id = 1; bool is_valid = 2; Dummy dummy = 5; }
message MyDemoMessage { string name = 1; string frist_name = 2; google.protobuf.Timestamp create_on = 3; }
enum DemoEnum { NONE = 0; OPTION1 = 1; OPTION2 = 2; }
message MyListMessage { repeated Dummy dummy = 5; }
| Intern | Extern | ||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| |
<Project Sdk="Microsoft.NET.Sdk"> <ItemGroup> <Protobuf Include="..\Proto\my-contract.proto" GrpcServices="Client" Link="Protos\my-contract.proto" /> <PackageReference Include="Google.Protobuf" Version="3.25.2" /> <PackageReference Include="Grpc.Net.Client" Version="2.60.0" /> <PackageReference Include="Grpc.Tools" Version="2.60.0" PrivateAssets="All" /> </ItemGroup> </Project>
<Project Sdk="Microsoft.NET.Sdk"> <ItemGroup> <Protobuf Include="..\Proto\my-contract.proto" GrpcServices="Server" Link="Protos\my-contract.proto" /> <PackageReference Include="Grpc.AspNetCore" Version="2.60.0" /> </ItemGroup> </Project>
var builder = WebApplication.CreateBuilder(args); builder.Services.AddGrpc(); var app = builder.Build(); app.MapGrpcService<GRPC-SERVICE-CLASS>(); app.Run();
var builder = WebApplication.CreateBuilder(args); builder.Services.AddGrpc(); var app = builder.Build(); app.MapGrpcService<GRPC-SERVICE-CLASS>(); app.Run();
var builder = WebApplication.CreateBuilder(args); builder.Services.AddGrpc(); var app = builder.Build(); app.MapGrpcService<GRPC-SERVICE-CLASS>(); app.Run();
public override Task<GetDemoResponse>GetDemo(GetDemoRequest request, ServerCallContext context) { ... context.Status = new Status(StatusCode.InvalidArgument, "something was wrong"); ... }
public override Task<GetDemoResponse>GetDemo(GetDemoRequest request, ServerCallContext context) { ... context.Status = new Status(StatusCode.InvalidArgument, "something was wrong"); ... }
AppContext.SetSwitch("System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true);var builder = WebApplication.CreateBuilder(args); builder.Services.AddGrpcClient<Demo.DemoClient>("demo", o =>{ o.Address = ...}); ...
var builder = WebApplication.CreateBuilder(args); builder.Services.AddGrpcClient<Demo.DemoClient>("demo", o =>{ o.Address = ...}); ...
public class DummyController : Controller { private Demo.DemoClient _client; public DummyController(GrpcClientFactory grpcClientFactory) { _client = grpcClientFactory.CreateClient<Demo.DemoClient>("demo"); } }
public class DummyController : Controller { private Demo.DemoClient _client; public DummyController(GrpcClientFactory grpcClientFactory) { _client = grpcClientFactory.CreateClient<Demo.DemoClient>("demo"); } }
"Kestrel": {
"Endpoints": {
"Http1": {
"Url": "http://0.0.0.0:5001",
"Protocols": "Http1"
},
"Http2": {
"Url": "http://0.0.0.0:5002",
"Protocols": "Http2"
}
}
}var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); app.UseGrpcMetrics(); app.UseEndpoints(endpoints => { ... endpoints.MapMetrics(); ... } app.Run();
var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); app.UseGrpcMetrics(); app.UseEndpoints(endpoints => { ... endpoints.MapMetrics(); ... } app.Run();
var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); app.UseGrpcMetrics(); app.UseEndpoints(endpoints => { ... endpoints.MapMetrics(); ... } app.Run();
service ClientStreamServices { rpc SendPartDemo (stream SendPartDemoRequest) returns (SendPartDemoResponse); }
service ServerStreamServices { rpc ReceivePartDemo (ReceivePartDemoRequest) returns (stream ReceivePartDemoResponse); }
service BidirectionalStreamServices { rpc MultipartDemo (stream MultipartC2SMessage) returns (stream MultipartS2CMessage); }
public override async Task<SendPartDemoResponse> SendPartDemo( IAsyncStreamReader<SendPartDemoRequest> requestStream, ServerCallContext context) { ... await foreach (var request in requestStream.ReadAllAsync()) { ... } return new SendPartDemoResponse(); }
public override async Task<SendPartDemoResponse> SendPartDemo( IAsyncStreamReader<SendPartDemoRequest> requestStream, ServerCallContext context) { ... await foreach (var request in requestStream.ReadAllAsync()) { ... } return new SendPartDemoResponse(); }
public override async Task<SendPartDemoResponse> SendPartDemo( IAsyncStreamReader<SendPartDemoRequest> requestStream, ServerCallContext context) { ... await foreach (var request in requestStream.ReadAllAsync()) { ... } return new SendPartDemoResponse(); }
using (var streamingCall = client.SendPartDemo()) { ... await streamingCall.RequestStream.WriteAsync(new SendPartDemoRequest { ... }) ... await streamingCall.RequestStream.CompleteAsync(); var result = await streamingCall.ResponseAsync; }
using (var streamingCall = client.SendPartDemo()) { ... await streamingCall.RequestStream.WriteAsync(new SendPartDemoRequest { ... }) ... await streamingCall.RequestStream.CompleteAsync(); var result = await streamingCall.ResponseAsync; }
using (var streamingCall = client.SendPartDemo()) { ... await streamingCall.RequestStream.WriteAsync(new SendPartDemoRequest { ... }) ... await streamingCall.RequestStream.CompleteAsync(); var result = await streamingCall.ResponseAsync; }
using (var streamingCall = client.SendPartDemo()) { ... await streamingCall.RequestStream.WriteAsync(new SendPartDemoRequest { ... }) ... await streamingCall.RequestStream.CompleteAsync(); var result = await streamingCall.ResponseAsync; }
public override async Task ReceivePartDemo( ReceivePartDemoRequest request, IServerStreamWriter<ReceivePartDemoResponse> responseStream, ServerCallContext context) { ... await responseStream.WriteAsync(new ReceivePartDemoResponse { ... }); ... }
public override async Task ReceivePartDemo( ReceivePartDemoRequest request, IServerStreamWriter<ReceivePartDemoResponse> responseStream, ServerCallContext context) { ... await responseStream.WriteAsync(new ReceivePartDemoResponse { ... }); ... }
using (var streamingCall = client.ReceivePartDemo()) { ... await foreach (var response in streamingCall.ResponseStream.ReadAllAsync()) { ... } }
using (var streamingCall = client.ReceivePartDemo()) { ... await foreach (var response in streamingCall.ResponseStream.ReadAllAsync()) { ... } }
public override async Task MultipartDemo( IAsyncStreamReader<MultipartC2SMessage> requestStream, IServerStreamWriter<MultipartS2CMessage> responseStream, ServerCallContext context) { var taskRead = readAsync(requestStream, context); var taskWrite = WriteAsync(responseStream, context); await Task.WhenAll(taskRead,taskWrite); }
public override async Task MultipartDemo( IAsyncStreamReader<MultipartC2SMessage> requestStream, IServerStreamWriter<MultipartS2CMessage> responseStream, ServerCallContext context) { var taskRead = readAsync(requestStream, context); var taskWrite = WriteAsync(responseStream, context); await Task.WhenAll(taskRead,taskWrite); }
public override async Task MultipartDemo( IAsyncStreamReader<MultipartC2SMessage> requestStream, IServerStreamWriter<MultipartS2CMessage> responseStream, ServerCallContext context) { var taskRead = readAsync(requestStream, context); var taskWrite = WriteAsync(responseStream, context); await Task.WhenAll(taskRead,taskWrite); }
public override async Task MultipartDemo( IAsyncStreamReader<MultipartC2SMessage> requestStream, IServerStreamWriter<MultipartS2CMessage> responseStream, ServerCallContext context) { var taskRead = readAsync(requestStream, context); var taskWrite = WriteAsync(responseStream, context); await Task.WhenAll(taskRead,taskWrite); }
using (var streamingCall = client.MultipartDemo()) { var sendTask = SendMessage(streamingCall); var receiveTask = ReceiveMessage(streamingCall); await Task.WhenAll(sendTask, receiveTask); }
using (var streamingCall = client.MultipartDemo()) { var sendTask = SendMessage(streamingCall); var receiveTask = ReceiveMessage(streamingCall); await Task.WhenAll(sendTask, receiveTask); }
using (var streamingCall = client.MultipartDemo()) { var sendTask = SendMessage(streamingCall); var receiveTask = ReceiveMessage(streamingCall); await Task.WhenAll(sendTask, receiveTask); }
using (var streamingCall = client.MultipartDemo()) { var sendTask = SendMessage(streamingCall); var receiveTask = ReceiveMessage(streamingCall); await Task.WhenAll(sendTask, receiveTask); }
X509Certificate2 certificate = LoadClientCertificate(...) var httpClienthandler = new HttpClientHandler(); httpClienthandler.ClientCertificates.Add(certificate); var httpClient = new HttpClient(handler); var options = new GrpcChannelOptions { HttpClient = httpClient }; var channel = GrpcChannel.ForAddress(serviceUrl, opt); var client = new AuthDemoServices.AuthDemoServicesClient(channel);
X509Certificate2 certificate = LoadClientCertificate(...) var httpClienthandler = new HttpClientHandler(); httpClienthandler.ClientCertificates.Add(certificate); var httpClient = new HttpClient(handler); var options = new GrpcChannelOptions { HttpClient = httpClient }; var channel = GrpcChannel.ForAddress(serviceUrl, opt); var client = new AuthDemoServices.AuthDemoServicesClient(channel);
X509Certificate2 certificate = LoadClientCertificate(...) var httpClienthandler = new HttpClientHandler(); httpClienthandler.ClientCertificates.Add(certificate); var httpClient = new HttpClient(handler); var options = new GrpcChannelOptions { HttpClient = httpClient }; var channel = GrpcChannel.ForAddress(serviceUrl, opt); var client = new AuthDemoServices.AuthDemoServicesClient(channel);
X509Certificate2 certificate = LoadClientCertificate(...) var httpClienthandler = new HttpClientHandler(); httpClienthandler.ClientCertificates.Add(certificate); var httpClient = new HttpClient(handler); var options = new GrpcChannelOptions { HttpClient = httpClient }; var channel = GrpcChannel.ForAddress(serviceUrl, opt); var client = new AuthDemoServices.AuthDemoServicesClient(channel);
[Authorize(AuthenticationSchemes = CertificateAuthenticationDefaults.AuthenticationScheme)] public class AuthDemoServices : AuthDemoServices.AuthDemoServicesBase { ... }
var builder = WebApplication.CreateBuilder(args); builder.WebHost.ConfigureKestrel(opt => { X509Certificate2 certificate = LoadServerCertificate(...); opt.ConfigureHttpsDefaults(d => { d.ClientCertificateMode = ClientCertificateMode.RequireCertificate; d.CheckCertificateRevocation = false; d.ServerCertificate = certificate; }); });
var builder = WebApplication.CreateBuilder(args); builder.WebHost.ConfigureKestrel(opt => { X509Certificate2 certificate = LoadServerCertificate(...); opt.ConfigureHttpsDefaults(d => { d.ClientCertificateMode = ClientCertificateMode.RequireCertificate; d.CheckCertificateRevocation = false; d.ServerCertificate = certificate; }); });
var builder = WebApplication.CreateBuilder(args); builder.WebHost.ConfigureKestrel(opt => { X509Certificate2 certificate = LoadServerCertificate(...); opt.ConfigureHttpsDefaults(d => { d.ClientCertificateMode = ClientCertificateMode.RequireCertificate; d.CheckCertificateRevocation = false; d.ServerCertificate = certificate; }); });
var builder = WebApplication.CreateBuilder(args); builder.WebHost.ConfigureKestrel(opt => { X509Certificate2 certificate = LoadServerCertificate(...); opt.ConfigureHttpsDefaults(d => { d.ClientCertificateMode = ClientCertificateMode.RequireCertificate; d.CheckCertificateRevocation = false; d.ServerCertificate = certificate; }); });
var builder = WebApplication.CreateBuilder(args); builder.WebHost.ConfigureKestrel(opt => { X509Certificate2 certificate = LoadServerCertificate(...); opt.ConfigureHttpsDefaults(d => { d.ClientCertificateMode = ClientCertificateMode.RequireCertificate; d.CheckCertificateRevocation = false; d.ServerCertificate = certificate; }); });
... var app = builder.Build(); app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); app.MapGrpcService<GRPC-SERVICE-CLASS>(); ...
... var app = builder.Build(); app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); app.MapGrpcService<GRPC-SERVICE-CLASS>(); ...
... var app = builder.Build(); app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); app.MapGrpcService<GRPC-SERVICE-CLASS>(); ...
... var app = builder.Build(); app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); app.MapGrpcService<GRPC-SERVICE-CLASS>(); ...
... var app = builder.Build(); app.UseRouting(); app.UseAuthentication(); app.UseAuthorization(); app.MapGrpcService<GRPC-SERVICE-CLASS>(); ...
WebApplicationBuilder builder = ... builder.Services.AddGrpc(); builder.Service.AddGrpcReflection(); IEndpointRouteBuilder app = builder.Build(); app.MapGrpcService<...> app.MapGrpcReflectionService();
WebApplicationBuilder builder = ... builder.Services.AddGrpc(); builder.Service.AddGrpcReflection(); IEndpointRouteBuilder app = builder.Build(); app.MapGrpcService<...> app.MapGrpcReflectionService();
WebApplicationBuilder builder = ... builder.Services.AddGrpc(); builder.Service.AddGrpcReflection(); IEndpointRouteBuilder app = builder.Build(); app.MapGrpcService<...> app.MapGrpcReflectionService();
WebApplicationBuilder builder = ... builder.Services.AddGrpc(); builder.Service.AddGrpcReflection(); IEndpointRouteBuilder app = builder.Build(); app.MapGrpcService<...> app.MapGrpcReflectionService();
WebApplicationBuilder builder = ... builder.Services.AddGrpc(); builder.Service.AddGrpcReflection(); IEndpointRouteBuilder app = builder.Build(); app.MapGrpcService<...> app.MapGrpcReflectionService();
WebApplicationBuilder builder = ... builder.Services.AddGrpc().AddJsonTranscoding(); ...
WebApplicationBuilder builder = ... builder.Services.AddGrpc().AddJsonTranscoding(); ...
...
import "google/api/annotations.proto";
service OrderService {
rpc GetOrderById (GetOrderByIdRequest) returns (GetOrderResponse){
option (google.api.http) = {
get: "/v1/orders/{id}"
};
};
}
message GetOrderByIdRequest { string id = 1; }
message GetOrderResponse { string id = 1; ...}"Kestrel": {
"Endpoints": {
"Http1": {
"Url": "http://0.0.0.0:5001",
"Protocols": "Http1"
},
"Http2": {
"Url": "http://0.0.0.0:5002",
"Protocols": "Http2"
}
}
}"Kestrel": {
"EndpointDefaults": {
"Protocols": "Http1AndHttp2"
}
}var channel = GrpcChannel.ForAddress("dns:///grpc.service.fqdn", new GrpcChannelOptions { Credentials = ChannelCredentials.Insecure, ServiceConfig = new ServiceConfig { LoadBalancingConfigs = { new RoundRobinConfig() } } }); var client = new MyDemo.DemoClient(channel);
var channel = GrpcChannel.ForAddress("dns:///grpc.service.fqdn", new GrpcChannelOptions { Credentials = ChannelCredentials.Insecure, ServiceConfig = new ServiceConfig { LoadBalancingConfigs = { new RoundRobinConfig() } } }); var client = new MyDemo.DemoClient(channel);
var channel = GrpcChannel.ForAddress("dns:///grpc.service.fqdn", new GrpcChannelOptions { Credentials = ChannelCredentials.Insecure, ServiceConfig = new ServiceConfig { LoadBalancingConfigs = { new RoundRobinConfig() } } }); var client = new MyDemo.DemoClient(channel);
var channel = GrpcChannel.ForAddress("dns:///grpc.service.fqdn", new GrpcChannelOptions { Credentials = ChannelCredentials.Insecure, ServiceConfig = new ServiceConfig { LoadBalancingConfigs = { new RoundRobinConfig() } } }); var client = new MyDemo.DemoClient(channel);
var mCfg = new MethodConfig{ Names = { MethodName.Default }, RetryPolicy = new RetryPolicy { MaxAttempts = 5, InitialBackoff = TimeSpan.FromSeconds(1), MaxBackoff = TimeSpan.FromSeconds(5), BackoffMultiplier = 1.5, RetryableStatusCodes = { StatusCode.Unavailable } } }; var channel = GrpcChannel.ForAddress( "https://grpc.service.fqdn:5001", new GrpcChannelOptions { ServiceConfig = new ServiceConfig { MethodConfigs = { mCfg } } });
var mCfg = new MethodConfig{ Names = { MethodName.Default }, RetryPolicy = new RetryPolicy { MaxAttempts = 5, InitialBackoff = TimeSpan.FromSeconds(1), MaxBackoff = TimeSpan.FromSeconds(5), BackoffMultiplier = 1.5, RetryableStatusCodes = { StatusCode.Unavailable } } }; var channel = GrpcChannel.ForAddress( "https://grpc.service.fqdn:5001", new GrpcChannelOptions { ServiceConfig = new ServiceConfig { MethodConfigs = { mCfg } } });
var mCfg = new MethodConfig{ Names = { MethodName.Default }, RetryPolicy = new RetryPolicy { MaxAttempts = 5, InitialBackoff = TimeSpan.FromSeconds(1), MaxBackoff = TimeSpan.FromSeconds(5), BackoffMultiplier = 1.5, RetryableStatusCodes = { StatusCode.Unavailable } } }; var channel = GrpcChannel.ForAddress( "https://grpc.service.fqdn:5001", new GrpcChannelOptions { ServiceConfig = new ServiceConfig { MethodConfigs = { mCfg } } });
var mCfg = new MethodConfig{ Names = { MethodName.Default }, RetryPolicy = new RetryPolicy { MaxAttempts = 5, InitialBackoff = TimeSpan.FromSeconds(1), MaxBackoff = TimeSpan.FromSeconds(5), BackoffMultiplier = 1.5, RetryableStatusCodes = { StatusCode.Unavailable } } }; var channel = GrpcChannel.ForAddress( "https://grpc.service.fqdn:5001", new GrpcChannelOptions { ServiceConfig = new ServiceConfig { MethodConfigs = { mCfg } } });
var mCfg = new MethodConfig{ Names = { MethodName.Default }, RetryPolicy = new RetryPolicy { MaxAttempts = 5, InitialBackoff = TimeSpan.FromSeconds(1), MaxBackoff = TimeSpan.FromSeconds(5), BackoffMultiplier = 1.5, RetryableStatusCodes = { StatusCode.Unavailable } } }; var channel = GrpcChannel.ForAddress( "https://grpc.service.fqdn:5001", new GrpcChannelOptions { ServiceConfig = new ServiceConfig { MethodConfigs = { mCfg } } });
var mCfg = new MethodConfig{ Names = { MethodName.Default }, RetryPolicy = new RetryPolicy { MaxAttempts = 5, InitialBackoff = TimeSpan.FromSeconds(1), MaxBackoff = TimeSpan.FromSeconds(5), BackoffMultiplier = 1.5, RetryableStatusCodes = { StatusCode.Unavailable } } }; var channel = GrpcChannel.ForAddress( "https://grpc.service.fqdn:5001", new GrpcChannelOptions { ServiceConfig = new ServiceConfig { MethodConfigs = { mCfg } } });
var mCfg = new MethodConfig{ Names = { MethodName.Default }, RetryPolicy = new RetryPolicy { MaxAttempts = 5, InitialBackoff = TimeSpan.FromSeconds(1), MaxBackoff = TimeSpan.FromSeconds(5), BackoffMultiplier = 1.5, RetryableStatusCodes = { StatusCode.Unavailable } } }; var channel = GrpcChannel.ForAddress( "https://grpc.service.fqdn:5001", new GrpcChannelOptions { ServiceConfig = new ServiceConfig { MethodConfigs = { mCfg } } });