Google gRPC and Dart language support

499 views
Skip to first unread message

Systems Administrator

unread,
Sep 27, 2016, 10:15:36 AM9/27/16
to Dart Server-side and Cloud Development
I was disappointed to discover that Dart is not included in the list of languages which are provided for Googles gRPC interface.  I was considering an async speech application using server-side dart and the cloud speech gRPC interface but dart is not listed as supported.  Given that Google is behind dart, why was dart omitted from the supported gRPC languages?   And when, if at all, will it be?

I would also *love* to see sample code implementing a simple speech processor (in server-side Dart and using the gRPC async interface) which listens to the microphone stream and displays corresponding text on stdout!  If anything like that exists, please post it here or let me know where.

Thanks

Günter Zöchbauer

unread,
Sep 28, 2016, 3:37:11 AM9/28/16
to Dart Server-side and Cloud Development
Some work was started about a year ago AFAIR but it seems prio was not high enough / other tasks were more important.

Joe Blue

unread,
Sep 28, 2016, 3:52:25 AM9/28/16
to Günter Zöchbauer, Dart Server-side and Cloud Development
i cant believe its not included. 
Dart / Flutter is being used by Google internally for seriosu projects, and getting serious man years of technical engineering.
Its even part of their IOT future platform. 

so why no GRPC ? it does not make any sense.
we knwo GRPC is really taking off and a great way.
Are they favouring leapfrogging and doing with flatbuffers ? maybe

JOe



--
You received this message because you are subscribed to the Google Groups "Dart Server-side and Cloud Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cloud+un...@dartlang.org.
Visit this group at https://groups.google.com/a/dartlang.org/group/cloud/.

Filipe Morgado

unread,
Sep 28, 2016, 5:24:18 AM9/28/16
to Dart Server-side and Cloud Development, gzo...@gmail.com
I kinda understand why it's not a priority.

Dart and JS don't work well with binary data. The focus within Dartlang is currently only client-side (JS and Flutter).

I wouldn't use gRPC for the following reasons.
Keep in mind that I have never used it nor any kind of automatic code generation, so these are uneducated guesses.
  • Code generation can bloat up your application size as you keep adding message types.
  • Declaring your models in .proto files can be quite restricting.
  • Writing/reading messages inside your code can be quite tedious.
  • The over-the-wire format is not debuggable, unless you use the same generated code used by your app, for any given message type.
  • The development cycle is more complex, specially when it's your models which are generated.
I know gRPC is being used at scale within Google with presumably impressive results when it comes to performance.
But we're talking about micro-services, mostly written in C++, which deal with a limited set of messages.
Using C++, we're already trading productivity for performance. Using gRPC seems a logical step.

Would be a shame to put engineering effort into gRPC-Dart and not get the expected results or barely being used.

Kévin Platel

unread,
Sep 28, 2016, 5:28:18 AM9/28/16
to Filipe Morgado, Dart Server-side and Cloud Development, gzo...@gmail.com
From far as I remember the main reason to not port gRPC for Dart was the HTTP2 which wasn't fully supported in Dart.
i don't know if it is still the case.

--
You received this message because you are subscribed to the Google Groups "Dart Server-side and Cloud Development" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cloud+un...@dartlang.org.
Visit this group at https://groups.google.com/a/dartlang.org/group/cloud/.
--
PLATEL Kévin
Android Developper at Netatmo

Joe Blue

unread,
Sep 28, 2016, 5:39:08 AM9/28/16
to Kévin Platel, Filipe Morgado, Dart Server-side and Cloud Development, gzo...@gmail.com
The blocker. is that for GRPC to work browser requires frame header support.

There are a few ways to work around this:
- The frame header support was added to chrome about 6 months ago. That woudl allow full bidirectional streams with zero code changes.

- You can simply use the gateway. This is what i use everyday and its awesome. It exposed GRPC as rest / json, with full swagger.io.

- You can simple only use the protocol buffers without the Service aspect that is GRPC. Many people do this and javascript support is very strong.

I use option 2 everyday, and its awesome because it code gens all my client stubs too.


The argument that it creates too muh code is to me a false logic. The point of GRPC is that it creates code so that at RUNTIME it does NOT have to do Reflection, can minimise GC, and lots of other things. Its code gen, and thats so that at runtime is brutally fast and efficient.
It also gives the developer on both sides string typing. Pretty sweet if you ask me.

Joe





Anders Sandholm

unread,
Oct 6, 2016, 8:38:55 AM10/6/16
to Joe Blue, Kévin Platel, Filipe Morgado, Dart Server-side and Cloud Development, Günter Zöchbauer
Just wanted to also at least point to this previous discussion linking to Martin's gRPC proof-of-concept
Anders Sandholm | Product Manager Google Ads & Commerce | Lead PM for Dart

Anders Thorhauge Sandholm,
Product Manager, Google Denmark
CVR nr. 28 86 69 84

ged...@gmail.com

unread,
Feb 12, 2018, 7:24:45 AM2/12/18
to Dart Server-side and Cloud Development, joeb...@gmail.com, platel...@gmail.com, pix...@gmail.com, gzo...@gmail.com
Need GRPC to work between Dart Web and Golang server ? 


---

Need GRPC to work between Dart Flutter and Goalng Server ?


golang :https://github.com/stevenroose/dart-btcwallet-rpc


dart: https://github.com/dart-lang/grpc-dart/issues/50

Reply all
Reply to author
Forward
0 new messages