Description
Problem:
MS guidance is to migrate WCF apps to gRPC where possible when moving from .NET Framework to .NET Core. Migrating multiple inter-connected apps is a big task and is difficult to do all at once. There is a transitionary period where older .NET Framework apps will hang around and need to use newer gRPC services. There needs to be a good gRPC client solution on .NET Framework.
Our new gRPC client, Grpc.Net.Client, supports .NET Core 3 and later. .NET Framework apps must use Grpc.Core on .NET Framework. Grpc.Core is functional, but its TLS stack is problematic because it doesn't integrate with Windows cert store and breaks guidance. This blocks some customers from calling gRPC from the .NET Framework, and complicates their migration from .NET Framework to .NET Core/.NET 5.
Solution:
Grpc.Net.Client could be updated to support .NET Framework by using WinHttpHandler as its HTTP stack. WinHttp doesn't have the TLS issues that Grpc.Core does and would unblock customers.
For Grpc.Net.Client to support .NET Framework, WinHttpHandler will need to be updated to support HTTP/2 trailing headers, and to verify that it supports bidirectional streaming:
- WinHttpHandler HTTP/2 trailing headers - WinHttpHandler HTTP/2 trailing headers runtime#44778
- Add .NET Standard 2.0 support to Grpc.Net.Client - Add .NET Standard 2.0 support for Grpc.Net.Client grpc/grpc-dotnet#1176
Future:
- WinHttpHandler - HTTP/2 bidirectional streaming - WinHttpHandler - HTTP/2 bidirectional streaming runtime#44784 ... 2021/1/6 status: Not supported by WinHttp yet