What is OGRE?

Bernie Sumption edited this page Feb 11, 2015 · 3 revisions

This page is about what OGRE is now. For a look at what OGRE could be, check out this blog post.

The most important parts of OGRE are:

1. The OGRE protocol

The OGRE protocol is a platform-neutral specification that defines the correct behaviour for an OGRE client or server. The protocol defines a data representation format called EDR (Entity Data Representation) that is flexible enough to store any kind of regular structured information. It also defines a binary serialisation format called OGRE Wire Format that is used to efficiently transmit EDR over the network. OWF is built with Google Protocol Buffers.

2. A suite of client and server implementations

Right now, there's a client and server for Java only, which isn't very impressive for something described as "a platform neutral technology".

For my own purposes I'd like to make clients in ActionScript, JavaScript and .NET, and a .NET server. Writing a new client or server is only about a week's worth of work, so if OGRE becomes popular I hope that people will contribute clients and servers in other languages.

3. A suite of data sources

Right now, the OGRE server takes its data from Java objects in memory.

OGRE's architecture allows you to write plugins that expose any kind of data over OGRE, and I'd like to build a suite of commonly required data sources so that most users don't have to write a new one. It would be pretty cool to support:

  • Any SQL database via JDBC or ADO.NET
  • Common ORM systems like Hibernate, and LINQ-to-SQL
  • Graph databases like Neo4J

4. A suite of transport mechanisms

A transport is a pair of plugins, one server-side and one client-side, that enable communication over pretty much any networked communication mechanism.

Right now, OGRE has one transport mechanism that sends binary packages over TCP. It is very fast and lightweight, making it a good choice for applications that run over an office network. However, it likely won't work through firewalls.

OGRE's architecture allows you to write new transport mechanism plugins, to integrate OGRE into your applications current networked communication platform. It would be good to support a few more transports out of the box, including:

  • HTTP, through Java Servlets or ASP.NET controllers
  • Common messaging systems like ActiveMQ and RabbitMQ
  • Email attachments - just to prove the point that you really can use any transport mechanism :o)