Code-first gRPC #2751
FlibbertiGibbet-uk (flibbertigibbet-uk)
started this conversation in
General
Code-first gRPC
#2751
Replies: 2 comments
|
This feature is a pure convenience over what is there today but AFAIK code first grpc should just work with service discovery. Is that what you are asking? |
0 replies
|
You can do this by adapting the creator of the AddGrpcClient in the This would look something like this: public static IHttpClientBuilder AddCodeFirstGrpcReference<TClient>(this IServiceCollection services, string address, string? healthCheckName = null, HealthStatus failureStatus = default)
where TClient : class
{
ArgumentNullException.ThrowIfNull(services);
if (!Uri.IsWellFormedUriString(address, UriKind.Absolute))
{
throw new ArgumentException("Address must be a valid absolute URI.", nameof(address));
}
var uri = new Uri(address);
var builder = services.AddGrpcClient<TClient>(o =>
{
o.Address = uri;
o.Creator = invoker => invoker.CreateGrpcService<TClient>();
});
AddGrpcHealthChecks(services, uri, healthCheckName ?? $"{typeof(TClient).Name}-health", failureStatus);
return builder;
}The key change here is with the creator adding |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
I am considering migrating a C# Core solution to Aspire and this solution currently uses a library that implements code-first gRPC https://protobuf-net.github.io/protobuf-net.Grpc/gettingstarted and https://github.com/protobuf-net/protobuf-net.Grpc
Has anyone been down this route?
I notice James Newton-King (@JamesNK) (co-author of protobuf-net.Grpc) has been active in this repository and previously discussed support of named gRPC end-points. https://github.com/dotnet/aspire/issues/186 Is this delayed feature relevant to migrating protobuf-net.Grpc based application code to Aspire?
And before hitting the submit button I did some extra searching and found this open issue https://github.com/dotnet/aspire/issues/898 which references the eShop sample. The sample code includes application level extension methods to support gRPC service discovery. I think I can just lift the gRPC extension method from the eShop code and replace:
services.AddGrpcClient<TClient>with
services.AddCodeFirstGrpcClient<TClient>All reactions