On Aug 12, 2009, at 12:09 AM, Rob S. wrote:
Hi everyone,
Just recently learned of Thrift while reading about NoSQL (I can't
recall the connection either, don't ask ;) I've already made some
trivial updates to the Wiki as I come up to speed.
HBase-Thrift gateway, perhaps?
So far we've experimented with Java, C++ and Python communication
and it's been a relatively smooth ride.
What we like:
- Simple, straightforward IDL (and Mark's tutorial in IDL form was
a great idea).
- Copious amounts of generated code (e.g. skeleton C++ server,
Python-remote client).
What we're wondering about:
- Am I correct that you're permitted one service per socket? It
seems like you'd have to strike a balance between a single massive
service and having several ports open. Something about this
doesn't pass the sniff test for me. Are people really just
defining one massive service definition?
This is true - one service per socket. Typically, my services don't
get that big, and generally I'm not trying to cram more than one
service into a single interface. On occasion, I have used multiple
ports per server process to export multiple interfaces. Note that
Thrift is not meant to be something like XML-RPC where you can host
multiple services and provide discovery, etc - it's purpose built to
handle a single type of client-server communication.
- Is there a plan to transfer comments to the generated
interfaces? I have to keep peeking back at the IDL comments to see
what exactly it is I should be returning (or expecting). There's
certainly an argument here for clear method naming although I think
you get my point :)
At least in the Java and Ruby generators, if you comment an object
with /** */ (so-called javadoc comments), they will get transferred
to the generated code.
-Bryan