Thursday, January 10, 2008

Win32 Object Persistence Frameworks

Persistence of Win32 Objects, specifically in trivial desktop applications, has been a bit of a pet project for me. As the question does come up from time to time in the News Groups, I thought I'd put together a page where anyone interested can find links to the ones that are out there. There is another reason ... I'm hoping to get through at least a couple of them and try them out. The results of those trials, I expect I'll post here.

The OPF, with a bit of content from their respective sites [in no particular order], that I know about:

InstantObjects™
is an integrated framework for developing object-oriented business solutions in Borland Delphi™. The framework provides the foundation for the development process as well as the engine that powers the final application. InstantObjects™ offers: Model realization in the Delphi IDE via integrated two-way tool. Object persistence in the most common relational databases. Object presentation via standard data-aware controls.
Originally from seleqt.com

tiOPF
The tiOPF is an Open Source framework for Delphi & Free Pascal that simplifies the mapping of an object oriented business model into a relational database. The framework is mature and robust having been in use on production sites since 1999. It is free, open source, and available for immediate download with full source code.

Infra - Integrated Framework
A set of frameworks, written initially in Delphi, able to facilitate the application development purely oriented to objects. These frameworks supply a solid base for the development of applications in Delphi, taking in consideration characteristics found in applications developed in Java and .Net platforms. Infra also will have a code generation tool, called InfraGen. This tool will allow analysts to draw UML models, to define business rules, they will can also setting screen and report templates, setting a language and/or platform. Setting this configurations, Infra take care of what else. 'Its a Dream? I do not believe, future is in our hands'

jazz-sdk
Set of Frameworks for OOP development in Object Pascal - Delphi and Free Pascal
VTF - Value Type Framework
OPF - Object Persistent Framework
MVP - Model View Presenter Framework

Snap Object Dataset
Want you conciliate pure object oriented programming and Delphi data aware controls? Through Snap Object Dataset components you will be able to join your business logic with the true RAD powerful Delphi data aware controls; in this way your GUI will continue to completely being detached from the persistence layer. The package contain two components TSnapVirtualDataset and TSnapObjectDataset and one editor for use of this components in a true RAD way. These components are completely free with source and demos, and with the editor you can create automatically for every properties of your business classes the associated TField descendent.

PressObjects
is a software development kit (SDK) composed of several frameworks that assist the construction of object oriented applications.
The core frameworks are:
PressSubject, a Data Type used to build business objects
PressOPF used to perform O-R mapping and persist/instantiate objects against relational databases
PressMVP used to present business objects to the user through the Model-View-Presenter pattern
PressNotifier used to create notifications through the Publish-Subscriber pattern
Code was built for Delphi-Win32 and Free Pascal compilers. It is 100% portable, 100% object oriented, 100% Object Pascal.

Macrobject DObject suite [Commercial]
is an O/R Mapping (Object-Relation Mapping) component package to be used in Borland Delphi. DObject O/R Mapping suite supports a variety of databases and transparent to users and needn't to alter code when switching to different database. At the same time, DObject O/R Mapping provides XObject XML, a database engine with high performance. DObject O/R Mapping suite allows you to access database completely in the way of object-oriented. It includes OQL.Delphi, which is a strong-typed OQL (Object Query Language) based on native Delphi language, even you needn't to write a single line of SQL statement based on string.

ObjectSight [Commercial ... last release July 29, 2003]
provides Object Oriented Programming (OOP) tools including an advanced set of libraries to create intelligent business objects for development in the Borland Delphi environment. Developers can generate all the pre-requisite code and object definitions to read, modify, insert and delete records within a relational database - in minutes! ObjectSight objects provide all the features associated with true object oriented development - encapsulation to hide complex operations relevant to the object, and inheritance to re-use existing definitions and code.

A couple I missed that have been added thanks to Andrey [in the comments section below]:

Delphi Persistent Object [Open Source ... latest release Oct 24, 2003]
Delphi Persistent Object (DePO) is a Object Persistent Framework. The implementation follows strictly the Scott Ambler implementation, adapting itself into the Borland VCL.

Easy MVC [Open Source ... latest release Sept 03, 2006]
or eMVC is a lightweight MVC frame work, design for Delphi developers. eMVC based on two design patterns, Chain of Responsibility and Observer. An application with eMVC would be flexible and easy to be extended. Source code reuse also maximized.

 

OPF Tools MIA

Spider OO Database from Interval Software
Data-Aware Business Components from Raize Software.

 

For The Web

g-framework
G is a model driven web application development framework providing: Native Win32 web application development on Delphi 2006 (including Turbos). Completed applications in minutes instead of days, weeks or months. Declarative business rules (most "coding" appears in the Interface section). Automatic database persistence (no SQL required). Automatic user interface generation (modifiable, of course)

 

Miscellaneous

In a recent NG thread someone mentioned using RemObjects or kbmMW [from Components4Developers] in an OPF discussion - I suspect they were serious, I haven't looked into either of them. If you do ponder having a look at kbmMW remember you can get the kbmMW CodeGear Edition from either myC4D.Com or TurboMiddleware - both from Components4Developers.

 

Must Read:

Scott W. Ambler articles at Agile Data

 

Not all are actually "OPF" tools, a few are more than that - others a bit less ... but they are generally tools used with the persistence/design of Objects at their core. Did I miss any? Drop me a line.

Sorry I've been negligent in my articles and ... thanks for stopping by,
Dave

15 comments:

  1. I have been using tiOPF for 5 months now with great success. I have done the overview documentation at http://tiopf.sourceforge.net/Doc/overview/index.shtml which is a good starting point.

    Of courses now I need to go and check some of the others.

    Sean

    ReplyDelete
  2. Hi Sean,

    Yea, I had the opportunity to read your document quite a bit. I was involved in the HTML version for the site :) I still go back to it [frequently] when I need to figure something out.

    If you're going to have a look at one of the others I'd recommend PressObjects. If you can, go the SVN route to getting the code - updates are fairly frequent. Communication is still by mail list ... hope they go the NG route soon.

    I've had a [very] brief squint at all of them [InstantObjects, tiOPF and PressObjects more than the others] but nothing that would cause me to go with one over another ... yet.

    Thanks for the comments,
    Dave

    ReplyDelete
  3. I will have a look at PressObjects. Also, I will be doing the occasional blog on tiOPf at http://sourceitsoftware.blogspot.com/ once I get back from holiday.

    If you find anything missing in tiOPF, let us know at news.tiopf.com .

    Sean

    ReplyDelete
  4. Sean,

    > I will be doing the occasional blog on tiOPf at
    > http://sourceitsoftware.blogspot.com/

    Looking forward to it.

    ReplyDelete
  5. Andrey V. ShtukaturovJanuary 31, 2008 at 6:26 AM

    thx for the post

    also can be added:

    Delphi Persistent Object
    http://sourceforge.net/projects/depo/

    Delphi Persistent Object (DePO) is a Object Persistent Framework. The implementation follows strictly the Scott Ambler implementation, adapting itself into the borland VCL.

    eMVC
    http://sourceforge.net/projects/emvc

    Easy MVC or eMVC is a lightweight MVC frame work, design for Delphi developers. eMVC based on two design patterns,Chain of Responsibility and Observer.An application with eMVC would be flexible and easy to be extended. Source code reuse also maximized.

    ReplyDelete
  6. Andrey,

    Many thanks for pointing these two out and sorry it has taken me so long to acknowledge your comment. I have been away and unable to.
    DPO, I was aware of but forgot to include. I expect the reason I forgot about is that I've never really looked at - primarily due to the fact that it is so long since there has been an update.
    eMVC, I have never seem before. I have had a brief look and am very excited about it. I'll be giving it a try over the next few days.
    Thanks for the additions, I will add them to the list very soon.

    ReplyDelete
  7. I am truly impressed by this article.

    But I have still not found any framework where in I can add/remove controls in UI and the chnages to the UI gets updated to the database without any regeneration and/or recompilation of the application code.

    I have seen one such implementation but it is in VC++ and I do not have access to its code.

    If you can find such a framework please do review it here....

    Thank you,

    Regards,

    Yogi Yang

    ReplyDelete
  8. Is none using Bold for Delphi anymore ? Maybe not so strange after all as it cannot be bought or downloaded. Shame to Borlands lawyers that hold this excellent framework. For those who can think of using dot.net we have ECO that share many ideas from Bold. See http://www.capableobjects.com/.

    ReplyDelete
  9. Hi,

    In addition to the above frameworks..
    You could also try this one..
    sqlite3 Framework

    Regards
    Onin

    ReplyDelete
  10. Hi,

    I just wanted to say that I really enjoyed your blog and this post. You make some very informative points. Keep up the great work!

    -
    Delphi development

    ReplyDelete
  11. Hi friends,

    Really amazing blog post. I saw and read your blog,This site is useful to Delphi Developers. I know that it will help me in my own stuffs. I think it may be relevant.

    ReplyDelete
  12. Hello, I do not agree with the previous commentator - not so simple

    ReplyDelete
  13. I've spotted on google code.

    Really uptodate (using rtti, attributes, nullable types among other things).

    thanx.

    ReplyDelete
  14. TMS Software also has an ORM framework that uses new Delphi 2010 RTTI and generics:
    http://www.tmssoftware.com/site/aurelius.asp

    ReplyDelete
  15. Why not mention the most mature of them all.
    Bold for Delphi http://en.wikipedia.org/wiki/Bold_for_Delphi

    There is a petition about release it as opensource
    http://www.change.org/petitions/embarcadero-technologies-release-the-intellectual-property-of-bold-for-delphi

    ReplyDelete