|By Patrick Steil||
|October 30, 2000 12:00 AM EST||
What is an application framework? This article defines the term and compares three current application frameworks or methodologies. I'll also explain how they're used to implement "foundational" functionality, which can be reused in other applications with little or no programmer involvement.
What Is an Application Framework?
I've often used the metaphor of building a house when discussing the Web application development process with my clients. When building a house, different subcontractors come in to complete separate but equally important building tasks. An application framework is like having the lot cleared, the slab poured, and the frame raised. I call this part the foundation. The soundness of the foundation is critical. If it's not well constructed, you might be better off tearing down the house and starting from scratch rather than adding that second story. We all know it would have cost less in the long run if the foundation were strong enough to handle your additional growth needs.
Once the foundation of the house is complete, the interior walls go up, the painters paint, the carpet's laid, and so forth. The painter doesn't have to know how the slab was poured or how the frame was put together. The painter needs to know only that the kitchen should be painted peach and the dining room green.
When building a Web-based application with an application framework in place, you want this framework to handle as much of the foundational functionality as possible. Then, rather than reinventing the proverbial wheel, you can focus on customizing the functionality of the Web site. The foundational functionality may differ slightly depending on the application you're building, but in general the areas shown in Table 1 should be considered foundational functionality for any Web-based application.
What Should an Application Framework for Web-Based Applications Accomplish?
In an ideal world an application framework would have all the features mentioned in Table 1 and the developer wouldn't be required to learn how they're implemented. Requiring an application framework to live up to the promise of better developer productivity and robust, secure applications with a rapid application development time without a tremendous learning curve is a lot to ask.
Let's examine three separate technologies and see how they compare.
Fusebox - Framework or Methodology?
What is Fusebox? Many developers have heard about Fusebox but haven't had an opportunity to use it and see what it accomplishes. The idea behind Fusebox architecture is, as stated in the Fusebox Web site (www.fusebox.org), "to increase teamwork efficiency, productivity, and reduce the time it takes to build a Web application."
I've seen several presentations and implementations of the Fusebox architecture, and have read through the Fusebox Web site. My determination is that Fusebox is a developer's application methodology. It's a set of agreed-to standards on how a Web application should be written. By following the Fusebox standards, a project that's utilizing multiple developers would be more productive because it addresses issues such as file-naming conventions. What Fusebox doesn't address are standards for encapsulating commonly used functionality.
Fusebox addresses some fundamental standards that, until recently, hadn't been addressed in ColdFusion application development. For this reason I think that Fusebox has a place in the developer's world as a methodology. To be fair, Fusebox doesn't claim to be an application framework. I'm discussing this technology to emphasize and contrast an application framework versus an application methodology.
When to Use Fusebox
If your development group doesn't have any standards in place for building applications, Fusebox can help, although I have some concerns with the Fusebox methodology. It's a programming methodology that can help enhance your team development.
When Not to Use Fusebox
If you're creating a public "Internet" site, Fusebox is not ideal because, among other issues, it lacks support for search engines. Fusebox application pages can't be dynamically indexed, which is important to the search engines. The reason for this is, there's only one root-level file for the entire application - the index.cfm. To provide custom functionality, a fuseaction URL variable must be passed. Passing parameters in the URL will prevent many search engines from "spidering" the pages within the site.
Table 2 provides a comparison of the Fusebox methodology with the application framework requirements.
Spectra - What Is It?
Spectra is the latest ColdFusion-based product offering from Allaire. Allaire calls it "the first packaged system to address the three critical areas of every successful online business - content management, e-commerce, and personalization." I'm not sure what a "packaged system" means, but if you look deep enough, you'll see that Spectra is indeed both a programming methodology and an application framework.
Spectra frees the programmer from the responsibility of role-based security and authentication by allowing nontechnical people to administer security and authentication. It handles content management, and its workflow capabilities appear to be quite robust. You also get personalization capabilities, if you need them. Spectra includes a site design tool as well.
The Spectra application framework requires you to adopt its ColdFusion programming methodology. This methodology is an object-based paradigm requiring you to plan and design your objects, methods, and properties carefully. This is not unusual and is the case for any object-oriented system or any application development methodology. Each "object" in the system then has common services that can be used for functionality, such as logging, granting permissions, and supporting metadata. Inheritance is not supported. Figure 1 shows a content management screen in Spectra v1.0.1.
A thorough overview article of Allaire Spectra appeared in the October 1999 issue of ColdFusion Developer's Journal (Vol. 1, issue 5) located online at http://www.sys-con.com/coldfusion/article.cfm?id=48. This article makes some very good observations regarding the advantages of Spectra, but also addresses some of the shortcomings of version 1.0.
To use Spectra for development, the programmer is required to adopt the OO methodology, and my experience and investigation show there's a big learning curve.
When to Use Spectra
Spectra is well suited for very complex enterprise-level applications in which you may have many, many different types of users, each with very complex access or authority rules.
When Not to Use Spectra
Due to its high price tag and the time investment necessary to learn how to adopt the Spectra programming methodology and API, Spectra rather negates the whole rapid application development mantra that has made ColdFusion so popular in the first place. I don't see smaller departments and companies, or the "let's get this application up and running by this Friday" type dot-com businesses, widely using Spectra. Table 3 provides a comparison of Spectra with application framework functionality. Table 4, which originally appeared in the October 1999 issue of CFDJ (Vol. 1, issue 5), provides an overview of Spectra.
iiFramework - What Is It?
iiFramework from Infrastructure Inc. is a ColdFusion add-on product for Web application developers. It's a true application framework that implements most of the features we're discussing in this article (see Table 5).
iiFramework was developed through an iterative process of providing common functionality over and over again in real-world Web-based applications. Most of the code that makes up the iiFramework is actually two to four years old. Infrastructure took all the components of the iiFramework and rolled them into a product that allows an application to be built at a rapid rate. With iiFramework the application developer doesn't have to be aware of or need to know how to design and program foundational functionality. It requires very few changes to your programmer's current coding practices.
iiFramework uses the Site Manager Module to create a new site. This site can be based on any other site you may have previously created in the iiFramework. This allows reuse of an entire application with full customization capability. You can code the business logic into one site, then easily replicate that logic to any other site. The new sites will automatically inherit the look and feel of the base site. iiFramework separates business logic from presentation. To take full advantage of these features, Infrastructure provides 15 to 20 custom tags that you should become familiar with but are not required to use.
Where Spectra is object-centric, iiFramework is page-centric. Everything revolves around the model of the "page" or "template." Every page in the site must be registered with the iiFramework system (see Figure 2). If a page isn't registered, the iiFramework won't allow it to be displayed. If it is registered, the iiFramework will ensure that the current user has access to this page and that it's active before displaying it. Any page can be cloned and customized.
The iiFramework manages everything about this page including the static content, the ColdFusion code, the help content, and even the WML content. Yes, iiFramework supports WAP devices, even if you don't provide specific WML content. iiFramework manages permissions to the page by allowing you to specify which groups have access to it. With iiFramework, content management is supported by an integrated WYSIWYG editor.
Graphics layout of the site is handled via sitewide variables. Navigational control is handled by the iiFramework so the programmer doesn't have to code a menu of links. The system automatically reformats your navigational links, based on your current login and the pages your group has authority to access. If a user doesn't have access to a page, its links aren't shown. If the user knows the URL for the page, the system will still verify access authority and keep that user out.
All exceptions are automatically handled by the system and formatted within the same sitewide graphics layout as the rest of the site. The errors can be automatically e-mailed to a programmer for attention.
When to Use iiFramework
iiFramework works well with your typical ColdFusion Internet, intranet, and extranet applications that need to be developed rapidly. Any project requiring development time of one to 16 weeks will fit well into the iiFramework system. It's been used for 25,000-part catalog stores and program management systems, and Infrastructure uses it for all its company Web sites.
If you plan to build a CF application, iiFramework will help you build it better and make it more secure, supportable, and scalable.
When Not to Use iiFramework
If you're looking to build a complete reusable class library for an enterprise-wide development strategy, iiFramework may not be the best tool because it doesn't force an object-oriented methodology. While you can still reuse code through standard ColdFusion custom tags, by default you can't use inheritance and other OO properties that can be very powerful.
Other Programming Methodologies
As I mentioned, Fusebox was chosen for this article as an example of a methodology versus an application framework. I also chose Fusebox because it's been around the longest and gets more press to date than any other such methodology. Two other ColdFusion application development methodologies are worth checking out (see www.smart-objects.com and www.cfobjects.com). These are two object-oriented methodologies that may complement your coding practices. They certainly can be used in conjunction with the iiFramework.
- Where Are RIA Technologies Headed in 2008?
- The Next Programming Models, RIAs and Composite Applications
- AJAX World RIA Conference & Expo Kicks Off in New York City
- Constructing an Application with Flash Forms from the Ground Up
- Building a Zip Code Proximity Search with ColdFusion
- Personal Branding Checklist
- CFEclipse: The Developer's IDE, Eclipse For ColdFusion
- Has the Technology Bounceback Begun?
- Adobe Flex 2: Advanced DataGrid
- i-Technology Viewpoint: We Need Not More Frameworks, But Better Programmers
- Web Services Using ColdFusion and Apache CXF
- Passing Parameters to Flex That Works