Here's my set of requirements: I'm looking for an RPC framework such as thrift, avro, protobuf (when adding services to it) which supports:
- Easy and intuitive IDL. No serial numbers, no manual versioning, simple... avro is a good example for this.
- Works with Java and Python
- Supports both fast binary prorocol, as well as HTTP based restful style. I'd like to be able to use it for both backend-to-backend communication (java-java or python-java) as well as frontend-to-backend communication (javascript to java).
- The rest support needs to include ¶m=value input as get/post requests (configurable per request) and output in three possible formats: json, jsonp, XML.
- Compact, fast, backward compatible, easy to upgrade etc...
- Provides some nice monitoring interfaces such as: JMX, web page status reports (e.g. packets in, packets out, error rate etc)
- Ops friendly... no need to take the whole site down to release new versions
- Both sync and asyc communication
... other goodies are welcome...
Is there something out there?
So far I've looked at thrift and avro and they are both nice in some ways, but don't check all my list.
Thanks