Rejasca

Rejasca

Rejasca is a modern and extensible RPC server for RIAs, written in Python and JSON. It aims to support a large number of programming languages on the client side, with Python and Javascript bindings already available. It comes complete with its own IDL, a flexible security system, and tools for automatic service discovery and documentation.

Quick Links

[ Download Rejasca ] [ Documentation ] [ SVN Repository ] [ Bug Tracking ]

Summary of Features

  • Python on the Server Side
    Rejasca services are defined as Python functions or methods and are organized in packages and modules.
  • Anything on the client side
    We already provide bindings for Python and Javascript, with more on the way.
  • JSON in the Middle
    Compared to alternatives such as XML and YAML, JSON is more suited for RIAs for a number of reasons. Having this in mind, we designed ReDL, Rejasca’s IDL, as a dialect of JSON, and also opted to use JSON exclusively for communication between the server and its clients.
  • Automatic Service Discovery and Documentation
    The server provides several built-in service discovery facilities that provide a high degree of granularity. For each service, a great deal of information can be retrieved, including parameter data types, return value data type(s), and documentation. The information is provided in a highly structured way that can easily be used by third party software.
  • Security
    Rejasca comes complete with a security subsystem that provides full user authentication and authorization facilities. Users are organized into groups, and each group is associated with a set of permissions that specify which services, modules, or packages it can access.
  • Extensibility
    We designed the server software with extensibility in mind. Virtually all components, including those that implement the security subsystem, IDL, and transport mechanism, can be easily extended or replaced.

Limitations

  • Python on the Server Side
    Currently, Rejasca services must be coded in Python. And we don’t really have no plans to support other languages.
  • Python 2 Now, Python 3 in the Future
    The current version of Rejasca is based on Python 2.x. However, we’ll probably switch to 3.x at some point in the near future.

Rationale

Why another RPC server?

I needed a JSON-based RPC server that could be used for rich Internet applications development with Python on the server side. I also needed this server to be feature-rich, especially in the areas of service discovery (a’la SOAP/WSDL) and security. Although some nice products - such as JSON-RPC - did exist at the time, I couldn’t find one that met all of my needs. So, I decided to roll my own.