Model-Glue 3.2 Alpha 2

Happy Holidays from the Model-Glue team. As a holiday present to you, we give you Model-Glue 3.2 Alpha 2.  

Why an Alpha 2?

Six months ago, we were sitting on tropical beaches, drinking tropical drinks (paid for by Model-Glue License Fees of course) and reading feedback from the mailing list. Marc Esher asked if we could somehow speed up the reload time of large Model-Glue applications.  This seemed reasonable and useful so we started researching the contributing factors to reload times. It turns out the reload time for Model-Glue applications grows in a predictable pattern with the number of Controllers, Event-Handlers and ColdSpring-managed beans. So we set out to make a few small improvements to the framework. These small improvements cascaded into several months of refactoring the Model-Glue core. Just recently, we completed our work and all unit tests pass. Let's just say we are glad we didn't know the full scope of work at the beginning... OK? Thus, I'm pleased to announce we've finished the work and are ready to offer this body of work to the general public as Alpha 2.

New Reloading Changes in Alpha 2

When reloading, Model-Glue will load only the internals necessary to fulfill the current request, in contrast to the LoadItAllNow architecture of previous versions. This technique is called Memoization, an optimization technique used primarily to speed up computer programs by having function calls avoid repeating the calculation of results for previously-processed inputs. Also, Model-Glue will now optionally keep the internal state of your bean factory across reloads, saving you from reloading all of your ColdSpring-managed objects on each request. 

What This Means To You

Here's what this means to you... When you are developing with Model-Glue, you can now leave the reload=true setting in your configuration for all of your Model-Glue work. You can keep the bean factory loaded for as long as you want, and reload it as you wish by the URL reloadKey=reloadPassword command. To use this new functionality you need to add the following property definition to your application specific modelglue.modelGlueConfiguration bean in your ColdSpring.xml file:

<property name="reloadBeanFactory"><value>false</value></property>

After you've done this, set your reload property to true, and reinitialize once to allow the settings to take effect; subsequent initializations will not cause the bean factory to be recreated. Note: in order to make other configuration changes, including re-enabling bean factory reloading, you will need to append your reloadKey=reloadPassword to the URL to force a reload of the bean factory.

Show Me Something

A picture is worth a thousand words, so we put together a timing test to show you the differences. The timing tests use progressively more Model-Glue objects, and are designed to show you the reload times at 3 phases of the application. Note: these tests only deal with Model Glue objects like Controllers and Event-Handlers. Real world applications also will incur loading times with Model objects. Since Model objects are largely out of the control of Model-Glue and Model objects vary in design and loading times, we left them out of the tests.

Three Phases of Testing:

  1. Initial Startup: ColdFusion is fully started. The test application is hit for the first time.
  2. First Reinitialization: The application is reloaded once after being hit for the first time.
  3. Second Reinitialization: The application is reloaded a second time.

Test Steps:

  1. Start ColdFusion
  2. Log into CF admin
  3. Browse to index.cfm
  4. Note startup time reported
  5. Browse to index.cfm using the application reload flag
  6. Note startup time reported
  7. Browse to index.cfm using the application reload flag
  8. Note startup time reported
  9. Shut down ColdFusion

Initial Startup

First Reinitialization

Second Reinitialization

As you can see, the application load times markedly increase about the 200 object mark. This difference is enormous at the 2000 object mark (tested as 1000 Controllers and 1000 Event-Handlers) Our the timing curve of the new version is much flatter than the timing curve of the previous version. We hope this makes a difference in your development time and helps Model-Glue remain a high-productivity tool for building awesome applications!

Full Feature List of Model-Glue 3.2 Alpha 2

Here are the features in the Model-Glue 3.2 Alpha to date... Once this version marinates for a month, we'll move into Beta status, with a final version expected at the end of February.
  • Integration of ColdFusion 9 ORM with Model-Glue generic database messages
  • Integration of ColdFusion 9 ORM with scaffolding
  • Improved scaffolding functionality through easier customization
  • Scaffolding integration with rich widgets like the cfUniForm tag library, jQuery DataTables, jQuery UI
  • An Asset Manager component
  • Much faster Development Mode reloads
  • XML Schema to help write/debug your config files
  • Extensible event-handlers
  • Introduction of Model Glue Firebug Extension

Happy Holidays from Model-Glue!

Comments (Comment Moderation is enabled. Your comment will not appear until approved.)
Congratulations, guys, and thanks for all the work!
# Posted By Marc Esher | 12/21/10 8:55 AM
© 2017 Joe Rinehart
BlogCFC was created by Raymond Camden. This blog is running version