Adds MapGrpcService overload for ServerServiceDefinition #2586
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a duplicate of #2535.
I made a serious operational error while tracking master, so I created a new pull request.
I apologize for the inconvenience.
Is your feature request related to a problem? Please describe.
This PR is implement for #2236.
ServerServiceDefinition
is defined in Grpc.Core.Api library, and it was a prefer way to implement gRPC server with Grpc.Core.In current grpc-dotnet, the server should be implemented on Asp.Net web application DI container via
GrpcEndpointRouteBuilderExtensions.MapGrpcService
generic method.The APIs in this proposal bridges legacy way into grpc-dotnet to enable to migrate easier.
Describe the solution you'd like
2 overloads of
GrpcEndpointRouteBuilderExtensions.MapGrpcService
are added:This change enables to map gRPC services via
Grpc.Core.ServerServiceDefinition
, therefore migration from Grpc.Core can be more easier.Changes in this PR
Grpc.Core.Api
Grpc.Core.ServerServiceDefinition.BindService(ServiceBinderBase)
method as public*Grpc.AspNetCore.Server
Microsoft.AspNetCore.Builder.GrpcEndpointRouteBuilderExtensions
classMapGrpcService(this IEndpointRouteBuilder, ServerServiceDefinition)
*MapGrpcService(this IEndpointRouteBuilder, Func<IServiceProvider, ServerServiceDefinition>)
*ServerCallHandlerFactory
andServiceRouteBuilder
(non-generic) onMicrosoft.Extensions.DependencyInjection.AddServiceOptions
method**Grpc.AspNetCore.Server.Internal.EndpointServiceBinder
to bind methods inServerServiceDefinition
into ASP.Net core web application server*Grpc.AspNetCore.Server.Internal.ServerCallHandlerFactory
class*Grpc.AspNetCore.Server.Model.Internal.ServiceRouteBuilder
class*ServerCallHandlerBase
*,UnaryServerCallhandler
*,ServerStreamingServerCallHandler
*,ClientStreamingServerCallHandler
*, andDuplexStreamingServerCallHandler
* classes inGrpc.AspNetCore.Server.Internal.CallHandlers
namespaceServerMethodInvokerBase
*,UnaryServerMethodInvoker
*,ServerStreamingServerMethodInvoker
*,ClientStreamingServerMethodInvoker
*, andDuplexStreamingServerMethodInvoker
* classes inGrpc.Shared.Server
namespaceServerCallHandlerFactory
andServerCallHandlerFactory<TService>
intoIServerCallHandlerFactory
*test
MapGrpcService
examples
Grpc.AspNetCore.Server.Tests.TestObjects.Services.WithAttribute.GreeterWithAttribute.BindService
methodDescribe alternatives you've considered
This commit contains concrete code as far as I can write, but I do not care about these implementations.
I welcome better ways to realize this suggestion.
Additional context
No response