Jun
29

CFUnited Day 1 Session Recap

Posted by Aaron West at 10:04 AM in ColdFusion, CFUnited 2006

Of all the sessions I took yesterday two stood out from the crowd, John Paul Ashenfelter's Agile ColdFusion and Sean Corfield's Managing CF Components with Factories.

Agile ColdFusion with John Paul Ashenfelter
Ashenfelter's presentation was on the theory or paradigm of Agile development, specifically the Agile Manifesto. I was not too familiar with this idea before the presentation and it really hit home for me. The Agile Manifesto focuses on individuals and interactions over processes and tools. It's about working software, customer collaboration, and responding to change over contract negotiation and following a plan. While Agile is apparently not about tools, you do use tools to become an Agile developer or an Agile team. Much of John Paul's discussion surrounded using source control systems, frameworks, testing and automation tools, bug tracking and project management tools. It was really good stuff.

Managing CFC's with Factories
Sean's talk focused on using factories to help model your CF applications and CF objects. He described two basic kinds of objects those that deal with people, places, and things and those that deal with services and infrastructure. The first type of objects (people, etc) tend to be used more than once in an application and are often created per session or per user. Services and infrastructure objects on the other hand are typically instantiated once, cached, and used throughout an entire services architecture. What Factories do is make objects. They know about object dependencies and they address three basic problems when dealing with objects. First, the problem of hard-coded paths in application code. Second, the negative impacts or effects of moving CFC's within an application. And third, Factories handle some object initialization for you. I'm still learning, but from what Sean was saying Factories use a configuration file in an effort to understand CFC pathnames, type names, initialization requirements (arguments, constructors, etc.) and through the config file they understand each objects dependencies and each of the dependencies of those objects and so forth. It sounds like pretty powerful stuff. The configuration files can be created to setup how the application and it's objects should be created on different environments, like a staging environment or a production environment. From this, there are no changes needed to your application in order to deploy it in different environments. Each configuration file directs your application accordingly. I'll be looking into Factories much more.

There were definitely some "bummer" sessions, but overall it was a productive day.

A big thanks to Emmet McGovern for hooking me up with his sprint connection so I could get this posted. The conference wireless is horrific this year.

Aaron West's Gravatar
About this post:

This entry was posted by Aaron West on June 29, 2006 at 10:04 AM. It was filed in the following categories: ColdFusion, CFUnited 2006. It has been viewed 4161 times and has 2 comments.

2 Responses to CFUnited Day 1 Session Recap

  1. Peter Bell

    Hey Aaron,

    Good summary. FYI, factories don't use XML config files per se. A factory is just an object that creates object (encapsulating what might change - in this case the process of creating objects). It is also a good separation of concerns as a UserService really shouldn't know anything about how to create an address service.

    It is pretty easy to write a factory, but as your application gets larger, it can become tedious. Once solution is to use a tool like Dave Ross' excellent ColdSpring. ColdSpring acts as a factory for the service layer of your application and it is here that the XML configuration files come in.

    I believe ColdSpring is the way to go, but I'm also going to suggest you write a couple of factories on your own. Until you get what a factory is and what it does, ColdSpring looks like a solution in search of a problem. Once your factories start to get unwieldy it is time to upgrade to ColdSpring and it'll make all the sense in the world.

    Best Wishes,
    Peter

  2. You know, I could've sworn I mentioned ColdSpring in my post... it was certainly on my mind as you've pointed out that was essentially what I was talking about in regards to the configuration file(s).

    Thanks for the comment.