codinghyde.synapse develop
Flexible protocol schema for message-passing distributed systems.
Introduction ========== Flexible protocol schema for message-passing distributed systems. As part of a fairly large distributed system, I needed a way to format messages I would be sending through an AMQP bus with the following requirements: * Client support for at least PHP, Python, Java, and Erlang. * Small and reasonably fast (meaning, no XML). * Message versioning (add/remove/rename fields) with seamless fallback (older client can ignore new fields). * Easily installable (from the cheeseshop, for instance). * Allows me to write a schema, and checks messages to be valid both when sending and receiving. * Messages are tagged with their type (so I can decode a message into an object/struct without knowing what type the message should be). * If possible, field names should be sent in the message so that even if I don't have the schema, messages can be processed (say, from an unsupported language). * Should handle binary data without exagerated overhead (think base64 encoding in JSON messages). * Well documented and actively developed. I looked into projects such as Google's Protocol Buffers, Apache's Thrift and Avro, MessagePack-RPC, ZeroC's Ice, and probably some others but I could not find a system that had most/all my requirements, so I decided to write my own. In a nutshell, codinghyde.synapse is/has: * An IDL to describe message formatting. * A compiler/code-generator to produce easy-to-work-with code. * A generic message encoder/decoder framework targetting JSON, BSON, MsgPack, and YAML (after all, why invent yet another serialization format...). * Designed so that messages are processable without language support (decode the raw JSON message and it's contents should require little/no post processing to be useful). Contact ========== You can reach me via e-Mail at: ehyde at codinghyde com Documentation ========== Documentation will be a bit scarse for the time being, but everything public should have at least a docstring by the time I make the first stable release. License ========== Released under the MIT/X11 license. See LICENSE for the full text. Install ========== % python setup.py install Develop ========== See DEVELOP for details.
- Downloads (All Versions):
- 0 downloads in the last day
- 0 downloads in the last week
- 0 downloads in the last month
- Author: MartÃn Raúl Villalba
- Home Page: http://www.codinghyde.org/projects/synapse/
- License: MIT
-
Categories
- Development Status :: 2 - Pre-Alpha
- Intended Audience :: Developers
- License :: OSI Approved :: MIT License
- Operating System :: OS Independent
- Programming Language :: Python
- Programming Language :: Python :: 2.6
- Programming Language :: Python :: 2.7
- Topic :: Communications
- Topic :: Internet
- Topic :: Software Development :: Libraries :: Python Modules
- Package Index Owner: codinghyde
- DOAP record: codinghyde.synapse-develop.xml