Delphi MVC Web Framework – “Hello World”

This is the first “Hello World” for my Delphi MVC Web Framework.

program DelphiMVCWebFramework;


  MVCEngine in 'MVCEngine.pas',
  BaseController in 'BaseController.pas';

  mvc: TWebMVCEngine;
  mvc := TWebMVCEngine.Create;
  mvc.AddRoute('/', procedure(Context: TWebContext)
      Context.Write('Hello World');

Features list (some of them are in the internal roadmap)

  • Completely MVC
  • Addressable with servername/controllername/actionname?par1&par2
  • Addressable with servername/controllername/actionname/par1/par2
  • Can also use anonymous methods as actions for very simple app (in the sample)
  • Really RESTful (Level 3 of the Richardson Maturity Model)
  • Fully integrable into WebBroker and DataSnap
  • Supports multiple resource rapresentations
  • Completely customizable routing using internal formatting or regex
  • Inspired to ASP.NET, Sinatra, Java Spring MVC, Java Restlet
  • Scriptable views support (Pascal, Razor, Lua)
  • Component based
  • Session support
  • ORM support using dorm
  • Classic TDataSet support
  • State server to support real loadbalancing using reverse proxy
  • Can be deployed as standalone (in the example), ISAPI dll and Windows Service
  • Fully support https
  • More to come…
  • This framework is still under development.

    Are you interested in? 🙂


    The project is open source and you can fint it here

#2 “dorm, the Delphi ORM” bullettin

This is the second post regarding a fast update on the last changes to the dorm project in terms of management and code.

  • Welcome to 2 new contributors: Marco Mottadelli and BraveCobra (this is the full list
  • Added 2 new PersistentStrategy for MSSQLServer based on dbExpress (the 1st use the Embarcadero dbExpress driver, while the 2nd use the DevArt dbExpress driver)
  • Added another PersistentStrategy for MSSQLServer based on ADO (so also Delphi Professional users can use dorm with MSSQLServer)
  • The new mapping strategy is under development. There will be “3 levels” of mapping: Config File, RTTI Attributes and “Conventions Over Configuration” (CoC) (do you wanna check the code in dev branch? Click here)
  • Added more unittests
  • Roadmap updated
  • Introduction to dorm, now is a PDF document
  • The config file has been splitted in “Persistence” and “Mapping” for a more flexible configuration
  • Added packages (Thank you BraveCobra)
  • Added MappingCreator. Now you can create the mapping file using an existent database.
  • IWrapperList (a duck typed list) now is used EVERYWHERE! You can use whatever list from whatever library you want to use. The list must have only a specific methods named as following: Add, Clear, GetElement/GetItem, Count
  • Added FillList methods
There are plenty of new features still to come. Stay tuned!

dorm, “The Delphi ORM”, officially published at ITDevCon

As all the attendees have seen, at the last ITDevCon, I’ve officially published dorm as an OpenSource project.

dorm, The Delphi ORM
dorm, The Delphi ORM

You can find the project on google code:

An introduction to dorm is available on google docs.

dorm begins as a my personal project more than one year ago, and now is sponsored by bitTime Software that offers custom development, consultancy, mentoring and so on.

Why dorm?

These are my personal reasons of because I’ve started to write dorm:
I WANT an ORM for Delphi… but:
I dont want (or I cant) change my database
I want persistence ignorance
I want to access to the «metal»
I want to persist PODO
I don’t hate SQL, but I know that 90% of it is boilerplate and errors prone

First example

Insert and retrieve object with dorm
Insert and retrieve object with dorm


You can persist anything you want.
bitTime actively use dorm, so it’s continuosly updated and evolved.

Repeat, you can find the project on google code and an introduction to dorm is available on google docs.

Let me know what do you think about.

Do you need an ORM like dorm in Delphi?