什么是ColdFusion
相关话题
ColdFusion(直译:冷聚变),是一个动态Web服务器,其CFML(ColdFusionMarkupLanguage)是一种程序设计语言,类似现在的JavaServerPage里的JSTL(JSPStandardTagLib),从1995年开始开发,其设计思想被一些人认为非常先进,被一些语言所借鉴。接下来小编为大家整理了什么是ColdFusion,希望对你有帮助哦!
ColdFusion is a tag based language similar to HTML, generally recognized to be fairly easy for people coming straight from HTML to learn.
While ColdFusion is a programming language, many programmers (mistakenly) think of it more as a scripting language, due to its very simple tag-based syntax, typeless variables and weak support for programming anything but web-based applications prior to version 6 (MX). In fact, this misconception (that ColdFusion is a scripting language) is so prevalent, that it often overshadows what ColdFusion really has become, namely, a productivity layer over raw J2EE or .NET development, more closely related to products in Bowstreet's portal development suite than a scripting language like VBA or Javascript. Imagine bits of Struts, Spring, Hibernate, JavaServer Faces, and various Apache components (XML-FOP, Commons, and a few other odds and ends) all rolled together, synthesized into a single coherent product, and you're getting close to what ColdFusion has evolved into.
Contents
ColdFusion Early Days
The language and its application server were originally created by J. J. Allaire and his brother Jeremy Allaire. The original server was a database to web application engine with access to all CGI information passed along with a page request. This basic beginning was expanded upon many times until the server and language was a solid enterprise level product. The engine was originally written with a C base that compiled the templates down to p-code.
ColdFusion MX 7
With the release of ColdFusion 7.0, the naming convention was amended, rendering the product name "Macromedia Coldfusion MX 7". CFMX 7 added Flash-based web forms and a report builder that output in Adobe PDF as well as Flash Paper, RTF and Excel. The Adobe PDF output is also available as a wrapper to any HTML page, converting that page to a quality printable document. The enterprise edition also added Gateways. (These provide interaction with such things as IM Services, SMS, Directory Watchers, and an asynchronous execution... or add your own gateways.) XML support was boosted in this version to include native schema checking.
ColdFusion MX
Somewhere before 2000, Allaire began work on rewriting the basis of ColdFusion using Java (codenamed "Neo"), which would allow for greater portability among different platforms.
On January 16, 2001, Allaire announced that it would be merging with Macromedia. Shortly after the merger, Macromedia continued with the incremental release of ColdFusion 5.00 and in June 2002, Macromedia released Macromedia ColdFusion MX (6.0), extending the naming convention of Macromedia's line of products. ColdFusion MX was completely rebuilt from the ground up and was based on the Java 2 Platform, Enterprise Edition (J2EE) platform. ColdFusion MX was also designed to integrate well with Macromedia Flash using Macromedia Flash Remoting MX.
Starting from the MX (6.0) release, ColdFusion is compiled to bytecode, like JSP and ASP.NET. The compiled .class files are readily accessible, and are cached until their source changes, like JSPs.
With the release of ColdFusion MX, the CFML language was also extended to support basic OOP. Apart from the tag-based CFML syntax, ColdFusion supports embedded scripts that can be written in a JavaScript-like language.
Object Oriented Coding In Coldfusion
Coldfusion was originally not an objected-oriented programming language, and even today lacks some OO features. This lack is common for dynamically typed language and is shared with such languages as Ruby. However, with the MX release (6 ), Coldfusion introduced the component language construct which resembles classes in OO languages (such as Java, Smalltalk, and C ). Each component may contain any number of properties and methods. One component may also extend another (inheritance). Components only support single inheritance, and do not currently support Java-style interfaces. On the other hand, Ruby style Mixins are becoming popular and take the place of interfaces. Coldfusion components use the file extension cfc to differentiate them from ColdFusion templates (.cfm). It's also worth mentioning that due to the MX layered architecture, full OO support is available by embedding pure java into your CFML (similar to how JSPs also support embedding of java).
Another advantage to components is that component methods may be made available as web services with no additional coding and configuration. All that is required is for a method's access to be declared 'remote'. Coldfusion automatically generates a WSDL at the URL for the component thusly: //path/to/components/Component.cfc?wsdl. Aside from SOAP, the services are offered in Flash Remoting binary format.
Methods which are declared remote may also be invoked via a HTTP GET request, for example: //path/to/components/Component.cfc?method=search&query=your query&mode=strict. This will invoke the component's search function, passing arguments "your query" and "strict" as arguments.
The Coldfusion server will automatically generate documentation for a component if you navigate to its URL and insert the appropriate code within the component's declarations. This is an application of component introspection, available to developers of Coldfusion components. Access to a components documentation requires a password.
Mixing ColdFusion and Java
ColdFusion runs as a web application and can be deployed in a number of supported servlet containers, including Jakarta Tomcat, Macromedia JRun, and IBM WebSphere, and even on a .NET app server (New Atlanta).
Because of ColdFusion's Java code-base, it is possible to mix Java classes with ColdFusion code to create a variety of applications and utilize existing Java libraries. ColdFusion has access to all the underlying Java classes, allowing usage of Java classes. ColdFusion also supports mixed usage of JSP custom tag libraries alongside CFML.
Prior to ColdFusion 7.0.1, ColdFusion components could only be used by Java or .NET by declaring them as web services. However, beginning in ColdFusion MX 7.0.1, it is now possible to utilize ColdFusion components directly within Java classes using the CFCProxy class.
Acronym
The acronym for the ColdFusion Markup Language is CFML. When ColdFusion templates are saved to disk, they are traditionally given the extension .cfm or .cfml. The .cfc extension is used for ColdFusion Components. The original extension was DBM or DBML, which stood for Database Markup Language. When talking about ColdFusion, most users use the Acronym CF and this is used for numerous ColdFusion resources such as user groups (CFUGs) and sites.
Alternative Server Environments
ColdFusion originated as proprietary technology based on Web technology industry standards. However, it is becoming a less closed technology through the availability of competing products. Products include New Atlanta's BlueDragon, IgniteFusion, Railo, Coral Web Builder and DigitalLattice Orange.
In fact, one could now make the argument that ColdFusion is even less platform bound than say raw J2EE or .NET, simply because ColdFusion will run on top of a .NET app server (New Atlanta), or on top of any J2EE app server (Websphere, JRun, Tomcat, etc.) In theory, you could move a ColdFusion app unchanged from a J2EE app server to a .NET app server.
CFMX is the common abbreviation for ColdFusion versions 6 and 7 (aka ColdFusion MX).