Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
What is OGRE?
Clone this wiki locally
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".
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)