After working with a huge sitecore application & some of its popular popular modules, i got chance to draft the solution for another application using sitecore but this time situation are different.
As core developer i am fond of using layered architecture in projects where, you are having your data access layer which wrap your core data task & give you more flexibility, Same thing i learned from my previous sitecore experience where we use some popular modules available which provide a library or you may say a object layer which helps in this. But these popular module involve with some sound cost $$.
Now, question is here how exactly this achieve, as you need a mechanism which gives options to select the data templates & there respective fields, then give option to name them as a .net class & combine all such classes under a common name-space which is also configurable. Internally this mechanism maps each type data field to properties which make possible to get & set the values plus build automatic functions for most common functional-ties like save for each of object state (data template state).
In simple words this mechanism will dynamically create & compile a class library .dll file which u may reference in your project to have a complete object representation of your data templates which you may easily use under your projects.
Now some geek gonna ask that data templates are not static they keep on changing, then i say this mechanism is so simple to use that you just need to click button & it will update the library & throw *.dll file to bin directory of the solution.
I hope i make sense here, i am ready to discuss its possibilities, currently this complete mechanism is available in mode of simple package which enable you to implement such. Interested peoples are welcome.
Please found the below url to download that utility, just need to upload in "sitecore/packages/" "using sitecore interface", u will find the complete read-me & other product details.
You may found same article on http://sdn.sitecore.net/forum//ShowPost.aspx?PostID=25847
Try it & have happy coding.