An Object Oriented Database Framework
The TechNewLogic ObjectLounge framework is an open source framework that helps you developing business applications. It is a host for object oriented domain models that manages concurrency, transactions, validation and persistence.
Doubt the Status Quo!
Today, people automatically use a relational database if they want to build a business application. But:
Databases come from a long time ago in a galaxy far, far away...
In this time,
- RAM was very small and very expensive,
- Computers were pretty slow,
- Programming was something very technnical and abstractions like OO had not been invented yet.
Thus, the database vendors optimized their products on scaling, memory sufficiency, etc. But is that really needed in a middle sized "as usual" business application? We think: No, Sir. Reasons:
- 8 GB of RAM cost only some bucks.
- Even desktop computers run at several GHz and have multiple cores.
- Software is everywhere and has to change very fast and be very flexible.
- The amount of data in a middle sized business application is usually less then the amount of memory on a well equipped machine.
Object Orientation is awesome and cool and smooth. But as soon as you hit the database, it becomes not so cool and smooth anymore. We define relational tables, but we want to have hierarchical classes. We write stored procedures, functions and triggers, but we want to encapsulate our logic in objects with methods, properties and events. The point is: Even with modern ORMs we have to go through a lot of hassle to connect our application to a database. What we get for that is a lot of features we don't need. So the question is:
Why should we use a data base at all?
The only thing we need is a store where we can persist our entities and a framework that makes this aspect as transparent as possible. But what about the "useful" features of a database which are defined by the ACID criteria, which are basically focused on concurrency? In a database, we can run transactions, we can roll them back and we have isolation between transactions. If we want to get rid of our database, we need a framework that handles transactions with rollback and isolation on our domain model - fine! With ObjectLounge, you can do all these things, too - without a database!
Features
ObjectLounge is based on the Microsoft .Net Framework 3.5. It can be used in stand-alone clients as in-memory database or in service based applications as backend.
Persistence
No database schema generation needed.
Storage "Out of the Box".
By Default, the framework uses a simple filesystem based store for your entities.
Implement your own data store.
If needed, the framework can be extended with custom data access logic, so you can work together with any type of data store you can imagine.
Domain Model Hosting
Express your business logic only in objects.
Nearly no technical aspects needed.
In-Memory Domain Model.
This needs some RAM on one hand, but on the other hand it very fast due to no need for mapping and transfering data from the store into your process for each request. This also leads to fast and comfortable querying by using Linq-To-Objects.
Modeling
High Level Abstractions
Make use of composition and aggregation to model the entity relationships.
Automatic Unit of Work Generation.
All changes to business objects and their relationships are automatically tracked and executed as a whole on commit or rolled back.
Transactions and Concurrency
Access your domain model from different threads.
Concurrent access of your domain model with the "Read-Committed" / "Serialized Write" strategy.
Commit or rollback the whole changeset - not just in the store, but in your living domain model!
ObjectLounge kicks ass if...
- You deal with complex or über-complex domain models with a lot of business logic.
- Many constraints have to be validated in the code (far more than just PK/FK or NOT-NULL).
- You develop small to middle sized applications (Standalone as well as Client/Server).
- You have volatile requirements and need flexibility.
When does ObjectLounge FAIL?
Think twice using ObjectLounge if your application is merely a bulk-data processor or the amount of data you want to manage is beyond the size of the physical memory you can supply.