-
Notifications
You must be signed in to change notification settings - Fork 238
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
L57 - C# 2.x release #154
L57 - C# 2.x release #154
Conversation
CC @apolcyn |
It's "okay" for client libraries in terms of "if there's going to be a major version bump, this is a reasonable way of doing it". Obviously it's still going to cause us a certain amount of pain - we may stay on 1.22 for a while, as there are other reasons to take a new major version from the client libraries perspective. A couple of questions:
|
What APIs do the GCP client libraries use? ChannelCredentials might still be a blocker. Grpc.Auth for example has references to ChannelCredentials and SslCredentials. |
I'll have to look for details, but at least:
It may be an infeasible idea, but it would be nice to investigate, and now's the time. |
It's fine to stay on 1.22 for a while (and we can backport important backfixes into branch v1.22.x for some time), but we should set some timeline too. (we can sync up offline)
You're right, I'll add a note in the proposal.
@JamesNK and I spent a significant amount of time trying to come up with a good design for the client side and we investigated some possible approaches (e.g 1. not having a channel concept in grpc-dotnet at all and relying on LiteClientBase as base class for client stubs; 2. trying to migrate all the existing Channel API over to the shared API package, which turned out very troublesome 3. using the ChannelBase concept). The ChannelBase concept seemed to be the best option. GCP libraries could work with grpc-dotnet client assuming you're not relying on advanced channel functionality (connectivity API, reconnection spec, loadbalancing, service config etc. - these are currently impossible to implement with http client). What's missing:
|
I think running GCP client libraries on top of grpc-dotnet client is entirely feasible, at least for some APIs (described some challenges in my previous comment). See inline for the specific concepts you're mentioning
Channel concept doesn't exist int grpc-dotnet at this point, but ChannelBase will exist in the future, but the client classes are fully API compatible with Grpc.Core. So the way you create instances of client classes is different, but after that, the behavior should be 100% the same as Grpc.Core
CallOptions are fully supported (including CallCredentials), except waitForReady, callFlags and writeOptions (but I don't think you need any of those)
The channels are created and configured differently, so ChannelCredentials are not supported by grpc-dotnet. See my previous comment about how the auth integration would work.
All types of streaming are fully supported.
|
@a11r this should be now ready for review. |
CC @JamesNK @JunTaoLuo feel free to review
@jskeet can you take a look and confirm that this proposal is OK from perspective of client libraries?