Události
Mistrovství Světa v Power BI DataViz
14. 2. 16 - 31. 3. 16
Se 4 šance na vstup, můžete vyhrát konferenční balíček a udělat to na LIVE Grand Finale v Las Vegas
Další informaceTento prohlížeč se už nepodporuje.
Upgradujte na Microsoft Edge, abyste mohli využívat nejnovější funkce, aktualizace zabezpečení a technickou podporu.
Poznámka
Toto není nejnovější verze tohoto článku. Aktuální verzi najdete v tomto článku ve verzi .NET 9.
Upozornění
Tato verze ASP.NET Core se už nepodporuje. Další informace najdete v zásadách podpory .NET a .NET Core. Aktuální verzi najdete v tomto článku ve verzi .NET 9.
Důležité
Tyto informace se týkají předběžného vydání produktu, který může být podstatně změněn před komerčním vydáním. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Aktuální verzi najdete v tomto článku ve verzi .NET 9.
James Newton-King a Marc Gravell
GRPC v kódu používá k definování kontraktů služeb a zpráv typy .NET.
První kód je dobrou volbou, když celý systém používá .NET:
.proto
souborech a generování kódu.V polyglotových systémech s více jazyky se nedoporučuje kód. U platforem non-.NET nejde použít typy služeb a datových kontraktů .NET. Aby bylo potřeba volat službu gRPC napsanou pomocí kódu, musí jiné platformy vytvořit .proto
kontrakt, který odpovídá službě.
Důležité
Nápovědu k protobuf-net. Grpc, navštivte protobuf-net. Web Grpc nebo vytvořte problém na protobuf-net. Úložiště GitHub Grpc
protobuf-net. Grpc je komunitní projekt a Microsoft ho nepodporuje. Přidá podporu prvního kódu do Grpc.AspNetCore
a Grpc.Net.Client
. Používá typy .NET anotované s atributy k definování služeb a zpráv gRPC aplikace.
Prvním krokem k vytvoření služby gRPC prvního kódu je definování kontraktu kódu:
using ProtoBuf.Grpc;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Threading.Tasks;
namespace Shared.Contracts;
[DataContract]
public class HelloReply
{
[DataMember(Order = 1)]
public string Message { get; set; }
}
[DataContract]
public class HelloRequest
{
[DataMember(Order = 1)]
public string Name { get; set; }
}
[ServiceContract]
public interface IGreeterService
{
[OperationContract]
Task<HelloReply> SayHelloAsync(HelloRequest request,
CallContext context = default);
}
Předchozí kód:
HelloRequest
Definuje a HelloReply
zprávy.IGreeterService
s unární SayHelloAsync
metodou gRPC.Kontrakt služby se implementuje na serveru a volá se z klienta.
Metody definované v rozhraních služby musí odpovídat určitým podpisům v závislosti na tom, jestli jsou:
Další informace o definování kontraktů služeb naleznete v protobuf-net. Úvodní dokumentace k nástroji Grpc
Přidání služby gRPC code-first do aplikace ASP.NET Core:
Přidejte protobuf-net. Referenční informace k balíčku Grpc.AspNetCore
Přidejte odkaz na projekt sdíleného kontraktu kódu.
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="protobuf-net.Grpc.AspNetCore" Version="1.0.152" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Shared\Shared.Contracts.csproj" />
</ItemGroup>
</Project>
Vytvořte nový GreeterService.cs
soubor a implementujte IGreeterService
rozhraní služby:
using Shared.Contracts;
using ProtoBuf.Grpc;
public class GreeterService : IGreeterService
{
public Task<HelloReply> SayHelloAsync(HelloRequest request, CallContext context = default)
{
return Task.FromResult(
new HelloReply
{
Message = $"Hello {request.Name}"
});
}
}
Aktualizujte Program.cs
soubor:
using ProtoBuf.Grpc.Server;
var builder = WebApplication.CreateBuilder(args);
// Additional configuration is required to successfully run gRPC on macOS.
// For instructions on how to configure Kestrel and gRPC clients on macOS, visit https://go.microsoft.com/fwlink/?linkid=2099682
// Add services to the container.
builder.Services.AddCodeFirstGrpc();
var app = builder.Build();
// Configure the HTTP request pipeline.
app.MapGrpcService<GreeterService>();
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");
app.Run();
Předchozí zvýrazněný kód aktualizuje následující:
AddCodeFirstGrpc
registruje služby, které povolují kód jako první.MapGrpcService<GreeterService>
přidá koncový bod služby první kód.Služby gRPC implementované s kódem a .proto
soubory můžou existovat společně ve stejné aplikaci. Všechny služby gRPC používají konfiguraci služby gRPC.
Klient gRPC s kódem používá kontrakt služby k volání služeb gRPC.
V klientském .csproj
souboru gRPC:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Grpc.Net.Client" Version="2.52.0" />
<PackageReference Include="protobuf-net.Grpc" Version="1.0.152" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Shared\Shared.Contracts.csproj" />
</ItemGroup>
</Project>
Aktualizace klienta program.cs
// See https://aka.ms/new-console-template for more information
using Grpc.Net.Client;
using ProtoBuf.Grpc.Client;
using Shared.Contracts;
namespace GrpcGreeterClient;
internal class Program
{
private static async Task Main(string[] args)
{
using var channel = GrpcChannel.ForAddress("https://localhost:7184");
var client = channel.CreateGrpcService<IGreeterService>();
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine($"Greeting: {reply.Message}");
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
}
Předchozí kód klienta Program.cs
gRPC:
CreateGrpcService<IGreeterService>
metody rozšíření.SayHelloAsync
.Z kanálu se vytvoří klient gRPC prvního kódu. Stejně jako běžný klient používá klient první kód konfiguraci kanálu.
GRPC v kódu používá k definování kontraktů služeb a zpráv typy .NET.
První kód je dobrou volbou, když celý systém používá .NET:
.proto
souborech a generování kódu.V polyglotových systémech s více jazyky se nedoporučuje kód. U platforem non-.NET nejde použít typy služeb a datových kontraktů .NET. Aby bylo potřeba volat službu gRPC napsanou pomocí kódu, musí jiné platformy vytvořit .proto
kontrakt, který odpovídá službě.
Důležité
Nápovědu k protobuf-net. Grpc, navštivte protobuf-net. Web Grpc nebo vytvořte problém na protobuf-net. Úložiště GitHub Grpc
protobuf-net. Grpc je komunitní projekt a Microsoft ho nepodporuje. Přidá podporu prvního kódu do Grpc.AspNetCore
a Grpc.Net.Client
. Používá typy .NET anotované s atributy k definování služeb a zpráv gRPC aplikace.
Prvním krokem k vytvoření služby gRPC prvního kódu je definování kontraktu kódu:
[DataContract]
public class HelloReply
{
[DataMember(Order = 1)]
public string Message { get; set; }
}
[DataContract]
public class HelloRequest
{
[DataMember(Order = 1)]
public string Name { get; set; }
}
[ServiceContract]
public interface IGreeterService
{
[OperationContract]
Task<HelloReply> SayHelloAsync(HelloRequest request,
CallContext context = default);
}
Předchozí kód:
HelloRequest
Definuje a HelloReply
zprávy.IGreeterService
s unární SayHelloAsync
metodou gRPC.Kontrakt služby se implementuje na serveru a volá se z klienta. Metody definované v rozhraních služby se musí shodovat s určitými podpisy v závislosti na tom, jestli se jedná o unární, serverové streamování, streamování klientů nebo obousměrné streamování.
Další informace o definování kontraktů služeb naleznete v protobuf-net. Úvodní dokumentace k nástroji Grpc
Přidání služby gRPC code-first do aplikace ASP.NET Core:
Vytvořte nový GreeterService.cs
soubor a implementujte IGreeterService
rozhraní služby:
public class GreeterService : IGreeterService
{
public Task<HelloReply> SayHelloAsync(HelloRequest request, CallContext context = default)
{
return Task.FromResult(
new HelloReply
{
Message = $"Hello {request.Name}"
});
}
}
Aktualizujte Startup.cs
soubor:
public void ConfigureServices(IServiceCollection services)
{
services.AddCodeFirstGrpc();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapGrpcService<GreeterService>();
});
}
V předchozím kódu:
AddCodeFirstGrpc
registruje služby, které povolují kód jako první.MapGrpcService<GreeterService>
přidá koncový bod služby první kód.Služby gRPC implementované s kódem a .proto
soubory můžou existovat společně ve stejné aplikaci. Všechny služby gRPC používají konfiguraci služby gRPC.
Klient gRPC s kódem používá kontrakt služby k volání služeb gRPC. Volání služby gRPC pomocí klienta prvního kódu:
using var channel = GrpcChannel.ForAddress("https://localhost:5001");
var client = channel.CreateGrpcService<IGreeterService>();
var reply = await client.SayHelloAsync(
new HelloRequest { Name = "GreeterClient" });
Console.WriteLine($"Greeting: {reply.Message}");
Předchozí kód:
CreateGrpcService<IGreeterService>
metody rozšíření.SayHelloAsync
.Z kanálu se vytvoří klient gRPC prvního kódu. Stejně jako běžný klient používá klient první kód konfiguraci kanálu.
Zpětná vazba k produktu ASP.NET Core
ASP.NET Core je open source projekt. Vyberte odkaz pro poskytnutí zpětné vazby:
Události
Mistrovství Světa v Power BI DataViz
14. 2. 16 - 31. 3. 16
Se 4 šance na vstup, můžete vyhrát konferenční balíček a udělat to na LIVE Grand Finale v Las Vegas
Další informaceŠkolení
Postup výuky
Vytváření aplikací a služeb nativních pro cloud pomocí .NET a ASP.NET Core - Training
Vytvářejte nezávisle nasazovatelné, vysoce škálovatelné a odolné aplikace a služby pomocí bezplatné a opensourcové platformy .NET. S .NET můžete pro aplikace a služby .NET a ASP.NET Core používat oblíbenou technologii mikroslužeb, jako je Docker, Kubernetes, Dapr, Azure Container Registry a další.
Dokumentace
Správa odkazů Protobuf pomocí dotnet-grpc
Seznamte se s přidáním, aktualizací, odebráním a výpisem odkazů Protobuf pomocí globálního nástroje dotnet-grpc.
Migrace gRPC z C-Core na gRPC pro .NET
Zjistěte, jak přesunout existující aplikaci gRPC založenou na jazyce C, aby běžela nad gRPC pro .NET.
Seznamte se se základními koncepty při psaní služeb gRPC pomocí ASP.NET Core.