If you build dynamic Web sites or Web applications for a living, chances are somewhere, sometime, you’ve run across ColdFusion, a tag-based application server from Allire. Used to be, ColdFusion was a fairly closed system, relying on its own proprietary implementation of HTML. Today, ColdFusion has evolved to the point where it’s one of the most popular and robust application servers on the market. While it still depends on its proprietary markup, it now comes in UNIX and Windows NT flavors, and supports a number of broadly accepted standards, in its bid to support the technology needed to compete in the enterprise space.
ColdFusion is actually two components, ColdFusion Server — for deploying applications, and ColdFusion Studio — for creating applications. They’re a tightly integrated team, allowing for fairly seamless creation of ColdFusion applications. However, both WebObjects and Macromedia Dreamweaver can be used to create ColdFusion applications, and though most shops will want to invest in ColdFusion Studio to create their applications, there are options for for developing applications for ColdFusion Server.
ColdFusion consists of two components, ColdFusion Server — for deploying applications, and ColdFusion Studio — for creating applications. They’re a tightly integrated team, allowing for fairly seamless creation of ColdFusion applications.
Instead of Java, ColdFusion relies on the proprietary ColdFusion Markup Language, or CFML, which is a tag-based server scripting language. As far as scripting languages go, CFML is fairly robust, including over 60 tags and 200 functions, and featuring structured exception handling, regular expressions, and the ability to support CORBA, COM, and C/C++.
CFML is combined with HTML to create applications made up of pages and components, which are then run on the server. The process of running an application is basically the same as you’ll find with any other application server. A Web browser sends a request to a Web server, which then passes along the data through the server’s API (ISAPI, NSAPI) to the ColdFusion Server. The server then processes the CFML tags and grabs data from any number of data sources – database, filesystem, SMTP server, or other application – before generating a Web page that is sent back to the user via the Web server.
Within this process, ColdFusion has embeded several performance enhancing tools. For example, ColdFusion automatically caches CFML templates and can automatically cache the output of dynamic pages. In addition, ColdFusion supports persistent queries across pages in an application to keep database results in memory.
One area where ColdFusion 4.0 has improved greatly from previous versions is in the enterprise-level server technology it now employs. Today, Allaire freely admits that a typical enterprise installation requires between three and 10 product servers in a clustered environment. This admission would be meaningless if Allaire didn’t back up the clustering advice with technology that took advantage of the cluster — namely, load balancing and failover. When an incoming request comes in, the cluster automatically routes it to the least-busy server. If a server dies, the IP address is automatically passed on to another server, which then finishes the transaction and handles any new inbound requests.
In addition, ColdFusion is very scalable. To add processing power, just add more CPUs in a cluster. Since ColdFusion relies on caching to improve performance, adding RAM to machines in the cluster should also yield better results. And, of course, the entire cluster can be administered remotely — which is a must have in any true enterprise-level application.
ColdFusion Studio is a visual development environment built around Allaire’s HomeSite HTML authoring tool. As you might expect, it goes beyond basic HTML editing capabilities, including color-coded editing, visual database tools, source control, remote development enabled with secure HTTP access, and an interactive debugger. Applications built with ColdFusion Studio can be run on the single-user version of Server included with every copy of Studio.
Opening Up ColdFusion
Though we’ve spent most of our time discussion the proprietary aspects of ColdFusion, we’d be remiss if we didn’t point out that Allaire has done a pretty good job in extending ColdFusion with a slew of integration technologies. On the database side, ColdFusion includes native drivers for Oracle and Sybase database, as well as support for ODBC and OLE DB connectivity. There’s full support for SMTP and POP3 mail protocols, as well as support for LDAP 2.0 directory services. Finally, there are over 400 extensions (available at the Allaire Web site) that add specific capabilities, including connectivity to COM (only on the Windows NT version, alas) and CORBA objects.
As a platform for electronic commerce, ColdFusion has a step up on most other application servers with direct support from e-commerce tools from CyberCash, ICVerify, CyberSource, Open Market, and NetPerceptions. Security is enabled via LDAP or Windows NT Domains, as well as access control, although the actual security between the Web browser and the ColdFusion server depends on the security measures offered by the Web server.
Be warned that most of the advanced features discussed here – like native database drivers, load balancing and failover – are available only in the Enterprise version of ColdFusion Server.
ColdFusion began life as development environment for extracting data from databases long before there was a distinct market segment of application servers. And as the application-server market matures, ColdFusion has adapted to the realities of today’s enterprise, where protocols like CORBA and COM rule the day and reliability is assured with failover. The only drawback: a lack of total support for Java, which is many believe is becoming the lingua franca of the application-server world.
Pros: Excellent basis for electronic commerce; affordable; very scalable; good development environment; large installed user base; good third-party support
Cons: Lack of commitment to Java; reliance on proprietary tools like CFML. New: Load balancing, failover, native database drivers, support for XML and CORBA
Version Reviewed: 4.0
Reviewed by: Kevin Reichard
Last Updated: 6/11/01
Date of Original Review: 10/27/99