This website is intended as archive for old content and forums.
Please visit http://opf3.codeplex.com for the project's new website.

History

It started back in early 2002 with Martin Geier and Sarix GmbH. Sarix is a software company located in South Tyrol (Italy) and was founded in the early months of 2002 by Martin Geier, Dieter Garber and Harald Steier.

The early days

OPF for Delphi
Image1: OPF for Delphi.

Martin did not llike the default way Delphi bound database sourced data to its UI components. He started to write a framework that converted the relational data to objects and had the added advantage of separating the UI and data layer, from this OPF for Delphi (OPF 1) was born! The first version of the framework is based on the work of Scott Ambler's: "The Design of a Robust Persistence Layer".

OPF was very simple, a few thousand lines of code in a few files. You had to write a DataManager class that contained the SQL queries for insert, update, delete and load.

Each DataManager was associated with a Persistent class (you had also to inherit from a base persistent class). To connect the persistent object to the DataManager you had to register both at a central point; the ObjectBroker.

To configure the data access for the persistent class the user had to override a few methods in the DataManager class. The SQL for the queries was placed in these methods. The advantage behind the usage of a DataManager class was clear; you could register a persistent object with another DataManager instance if you switched databases with no changes in the persistent object's code.

Switching to .NET

OPF.NET
Image2: OPF.NET, first Opf for .NET.

After Microsoft released the first version of .NET, the guys at Sarix and Christian Liensberger decided to switch to .NET.

A new framework to bridge the gap between relational data and OOP was needed. We decided to write a new OPF and thus OPF.NET (OPF 2) was born. The framework is open source and may be downloaded from here.

The new framework was very similar to OPF for Delphi. You still had to create a DataManager for each persistent object and register it at a central point. One of the biggest improvement was the usage of attributes to bind the table's fields to the persistent's properties. In OPF for Delphi you had to name the properties in a special way to be recognized by the framework. The new framework supported both: naming or binding with attributes.

OPF.NET is still very popular. It has been downloaded more then 14,000 times.

Opf2 ... What?

After having finished OPF.NET, Christian Liensberger decided to write a new ORM framework. The new version would be completely different then OPF.NET and OPF for Delphi. No base persistent class, multiple identifiers, simpler relations ... The framework was designed for .NET 1.1 and named Opf2. After a few months of work the first prototype was ready.

Opf2 was never truly published: it was available for a few weeks on the OPF.NET homepage, but was removed afterwards. The reason was .NET 2.0, with Microsoft releasing first versions of .NET 2.0 on MSDN at the same time as Opf2 arrived.

The next generation

At the same time a license for OPF.NET and the OPF.NET Wizard was bought by Marco Gozzoli. He is one of the founder of Infoware SA (a software company). He and Christian had the idea to write a new OPF for .NET 2.0. The new framework would be very simple to use and leverage the new features of .NET 2.0 (generics, nullable types, ...). It was named Opf3. We used the ideas and concepts of Opf2 when starting with Opf3.

The first internal version (for Marco and Infoware) was released in December 2004.