Grails, Jasper and SSIS and err Meta Data Development
I'be been looking at Grails and I have to say it rocks, just off to buy the T-shirt now. I'm not sure if there is something quite as sexy in the dot.net world yet for RAD (someone flame me if there is !).
The concepts of "Dont Repeat Yourself" is something that has been causing a huge headache for database applications for me. Both in terms of repeated meta data (hard coded or auto genenrated at design time classes) and in terms of repeated data (some styles of ORM, serialisation, bad caching techniques).
If you are in the MS world and are looking for a lightweight way to implement data access, check out the new kid on the block "Jasper". http://www.microsoft.com/downloads/details.aspx?FamilyID=B4783EFA-3CF0-4957-9461-95A15604E3B7&displaylang=en
I'm not sure how this staks up to Grails, but its certainly a breath of fresh air, as hopefully people using design time class generators realise the evil they cause the maintenance people and future co-workers.
Speaking of the evil-ness of design time rendering of classes that shouldn't be there anyway. One of favourite tools at the moment is SSIS. As a colleage once said, "There is nothing more beautiful that watching millions of rows of data flowing through a well designed pipeline". I'm just checking out SSIS 2008, but I "really" hope we can learn from the likes of Grails and Jasper and not have such rigid types defined at design time. I understand that for SSIS its to eek every ounce of performance out (type safety checking and auto casting is turned off on bulk inserts), but sureley there must be a happy medium somewhere. I mean changing an int to a small int on ANY application should NOT require six hours of updates, bug fixing, hair pulling, manually editing native xml files and god knows what else.
I've been involved as architect for a large application recently that is half SOA and half CRUD. As usual a goal of the GUI development was rapid development (time is money yada yada), smallest code base, extensibility and easy of maintenance. How did we do it? did we use some fancy framework? what tool did we use ? err actually we took a good hard look at how one the best dynamic form generator does it (Microsoft Access) and copied the techniques. Basically, When using an ADP project, Access records meta-data against objects in sql server. Things like: captions, descriptions, if its a combo box and its source, default position of controls.
In our web GUI we developed a lightweight engine that reads this meta data, combined with the schema, and an extensibnilty table to handle adding logic on the fly to render the CRUD forms on the at run time, and dynamically adds things like validators based on data type, nullability and length, authorisation checking. Zero compiled code per new form added, nice ;-) better still, we can ship updates without code changes. It's kinda like an extension of the Universal Table Editor used by some dba tools, but with a pretty logo and more customer facing.
Err re-reading that I hope it makes some form of sense, but hey Blogs are for dumping thoughts...