4 ms·
Take a look at Twirp (https://github.com/twitchtv/twirp https://github.com/twitchtv/twirp) open sourced by TwitchTv. It's a lot lighter weight than gRPC. It doe
by agotterer 4y ago
Take a look at Twirp (https://github.com/twitchtv/twirp https://github.com/twitchtv/twirp) open sourced by TwitchTv. It's a lot lighter weight than gRPC. It does use Protobufs but addresses some of the concerns you mentioned, such as being able to test with JSON payloads, works over HTTP 1.1 and HTTP/2, good client libraries, and doesn't require a proxy.
They address your concerns in more detail in the Twirp release announcement (2018) - https://blog.twitch.tv/en/2018/01/16/twirp-a-sweet-new-rpc-framework-for-go-5f2febbf35f/ https://blog.twitch.tv/en/2018/01/16/twirp-a-sweet-new-rpc-f...
- dontlaugh 4y agoWe use it at work, it does indeed address all of the concerns. The problem is gRPC, not protobuf.
- akshayshah 4y agoTwirp is excellent. Their protocol is _very_ similar to the Connect protocol for unary RPCs. However, the semantics that Twirp exposes are different from gRPC. That means that it's impossible (or at least _very_ awkward) to have the same server-side code transparently support Twirp and gRPC clients. The Twirp ecosystem is smaller, and has more variable quality, than the gRPC ecosystem; when you choose Twirp for your server, you're betting that you'll never want a client in a language where Twirp is painfully bad. Our hope is that the Connect protocol appeals to the same folks who like Twirp, and that the server-side Connect implementations make it easier to interop with the gRPC ecosystem.
- tate_thurston 4y agoAnd if you’re interested in consuming Twirp from a browser, I wrote TwirpScript: https://github.com/tatethurston/twirpscript https://github.com/tatethurston/twirpscript
- lf-non 4y agoTwirp does not support streaming or websockets though. This is something connect-web appears to handle well.