| 
        
        
          |  |  
          |  |  
          | ColdFusion Article |  
        
          |  |  |  
          | 
              
              
                |  | 
                    
                    
                      |  |  
                      | Creating 
                        objects
 ASP is based on scripting languages, such 
                        as VBScript and JScript. These languages are the glue 
                        that holds an ASP page together. Scripting allows you to 
                        instantiate server-side objects, which add dynamic 
                        content to your HTML pages. If you've used scripting 
                        languages, you?ll find that the ColdFusion language 
                        (ColdFusion Markup Language, or CFML) is quite a bit 
                        different. First of all, ColdFusion objects (tags) are 
                        all inherently active. With ASP, you must create an 
                        instance of an object, use it, and then destroy it. With 
                        ColdFusion, you use ColdFusion tags, but you don't need 
                        to create or destroy them.  When you put a CFML tag 
                        on a page, the ColdFusion server instantiates it, and 
                        takes care of the cleanup.  The code samples below 
                        demonstrate the differences between ASP and ColdFusion.
 With ASP, you would use the following code to create 
                        a recordset object: <%
set rsGetOrders = Server.CreateObject("ADODB.Recordset")
rsGetOrders.ActiveConnection = "northwind"
rsGetOrders.Source = "SELECT CustomerID, OrderDate from Orders" 
rsGetOrders.CursorLocation = 2
rsGetOrders.LockType = 3
rsGetOrders.Open()
rsGetOrders_numRows = 0
%>You use the recordset on a page by manually looping 
                        through your resultset (note that the following is 
                        VBScript): <table>
<%
While (NOT rsGetOrders.EOF))
%>
        <tr>
          <td><%=(rsGetOrders.Fields.Item("CustomerID").Value)%></td>
          <td><%=(rsGetOrders.Fields.Item("OrderDate").Value)%></td>
        </tr>
<%
rsGetOrders.MoveNext()
Wend
%>
</table>
              Finally, when you're done with the resultset, you 
                        destroy the object and clear the memory space on the 
                        server (in this example, you're setting 
                        rsGetOrders = Nothing) as follows: <%
rsGetOrders.Close()
Set rsGetOrders = Nothing
%>Now, we'll do the same thing with ColdFusion 
                        code.  Remember that ColdFusion tags are the 
                        equivalent of a server-side object in ASP. To perform 
                        the same process in ColdFusion, use the cfquery tag 
                        instead of the recordset object you would have used in 
                        ASP: <cfquery name= "rsGetOrders" datasource= "northwind">
SELECT CustomerID, OrderDate FROM Orders
</cfquery>This code creates the recordset. Displaying it is 
                        simple with ColdFusion, since looping is built into the 
                        ColdFusion tags.  It?s unnecessary to manually 
                        start or stop the loop as you did in ASP. You simply 
                        print the results with a cfoutput tag, as follows: <table>
			  
<!---The cfoutput query prints the query results.  Notice that the query
attribute specifies the query that it is outputting--->
<cfoutput query="rsGetOrders">
        <tr>
          <td>#rsGetOrders.CustomerID#</td>
          <td>#rsGetOrders.OrderDate#</td>
        </tr>
</cfoutput>
</table>The ColdFusion code has several advantages that are 
                        evident right from the start:  
                          Using less codeIt's shorter and more concise. 
                          It's easier to understand exactly what the code 
                          does, even without programming knowledge. 
                          You don't need to write cleanup code, and you 
                          don?t have to destroy your objects, because the 
                          ColdFusion server handles those details.  
                          Although it's not apparent from the code, you can 
                          use the recordset again and again on the same page 
                          without resetting your pointers.  ASP would 
                          required you to use rsGetOrder.MoveFirst() to reset 
                          the pointer to perform the same operation. 
                         Less code = less 
                        typing = more time for programming the meat of your 
                        program.  With ColdFusion, you're not spending as 
                        much time on the mundane aspects, such as object 
                        creation, keeping track of loops, and the closing and 
                        destroying of objects.  ColdFusion works like this 
                        across the board. Take another example, sending 
                        e-mail.  To send e-mail with ColdFusion, use the 
                        following code:
 <cfmail to="#form.tofield#"
 from="admin@mywebsite.com" 
 subject="Your order has been placed">
<cfinclude template="message.cfm">
</cfmail>Note that you would need to specify a mail server in 
                        the ColdFusion administrator.  This is as simple as 
                        entering the mail server IP or internet address in the 
                        appropriate setting in the ColdFusion 
                        administrator.   If you've ever sent e-mail from ASP, you know what's 
                        required. First, you'd have to know which e-mail 
                        component is registered on the server. This could be 
                        CDO, JMail, ASPMail, or any number of other mail 
                        components. You may even have a host that doesn?t have a 
                        mail component installed. In any case, each component 
                        has a different syntax for instantiating the object and 
                        a different syntax for using e-mail.  Needless to 
                        say, coding ASP for sending e-mail is involved. Also note that in the ColdFusion example, that the 
                        body of the message is included as a separate file. This 
                        could just as easily have been hard-coded into the 
                        program, but with ColdFusion, you can include files with 
                        the cfinclude tag.  This can be a great, added 
                        bonus. For one thing, you can create conditional logic 
                        for the including the files.  In other words, you 
                        can access different includes files based on criteria 
                        that you establish, such as a value in a field from the 
                        database. You cannot do this in ASP, however.  For 
                        example, inside the ColdFusion message.cfm page, you 
                        might have code that appears as follows: <cfswitch expression = #rsGetAllEmails.emailtext#>
     <cfcase value="A05">
          <cfinclude template="orders_5day.cfm">
     </cfcase> 
     <cfcase value="A15">
          <cfinclude template="orders_15day.cfm">
     </cfcase>
     <cfcase value="A30">
          <cfinclude template="orders_30day.cfm">
     </cfcase>
     <cfcase value="A45">
          <cfinclude template="orders_45day.cfm">
     </cfcase>
</cfswitch>Using conditional includes can be extremely useful in 
                        maintaining your application. Using include files in 
                        ColdFusion causes no performance degradation, so you can 
                        package your logic within them.  Later, you'll see 
                        how you can make your code even more flexible in the 
                        discussion on ColdFusion Components, a new feature in 
                        ColdFusion MX.ASP objects ColdFusion has 
                        always had a rich set of built-in tags to work with, but 
                        as an added bonus, you can also use traditional ASP 
                        objects in ColdFusion by using the
 cfobjecttag or the CreateObject() function within the cfscript 
                        tags.  For example, you can use components you 
                        created in Visual Basic for your ASP pages on your 
                        ColdFusion pages too. ColdFusion creates the objects 
                        using the cfobject tag and accesses the properties and 
                        methods using the cfscript  tag in the same way 
                        that you would do so with an ASP scripting language. The 
                        bonus here is that if you already have objects that 
                        contain your business logic, you can use those objects 
                        in ColdFusion, thereby shortening the time required to 
                        create your application in ColdFusion.One thing that will become apparent after you've 
                        created a couple of ColdFusion sites -- most of the 
                        functionality that requires the use of objects, or third 
                        party components in ASP, is built into the ColdFusion 
                        language using the tag-based syntax. A few of the more 
                        powerful ColdFusion tags (some of them are new to 
                        ColdFusion MX) are listed below: |  
                      | 
 
                          
                          
                            | CFCOMPONENT | Creates and 
                              defines a component object; encloses functionality 
                              that you build in CMFL within in cffunction tags 
                              and makes it available to any ColdFusion page on 
                              your ColdFusion Server or other remote services, 
                              such as web services, Macromedia Flash MX, and so 
                              forth.  New feature in ColdFusion MX.  
                              Read more about this in the ColdFusion 
                              Developer Center |  
                            | CFCHART | Create 
                              complex charts and graphs in Flash, JPG, or PNG on 
                              the fly from your database queries (or other types 
                              of queries as well).  New feature in 
                              ColdFusion MX.  Read more about this in Tim 
                              Buntel's Basic 
                              Charting and Graphing with ColdFusion 
MX. |  
                            | CFXML | Create an 
                              XML document easily.  Additionally, new 
                              ColdFusion XML functions enable you to parse and 
                              search XML easily.  New feature in ColdFusion 
                              MX.  Read more about this in Nate Weiss's Utilizing XML and XSLT in ColdFusion 
                              MX PDF (528k). |  
                            | CFDUMP | Dumps a 
                              complete variable, structure, or query to the page 
                              for debugging your CF pages. It?s especially handy 
                              for dumping a complete result set to the page in a 
                              nicely formatted table.  Helpful in testing 
                              and debugging. |  
                            | CFDIRECTORY | Gives you 
                              complete access to any directory on your hard 
                              drive for listing, creating, deleting, or renaming 
                              directories. |  
                            | CFFILE | Gives you 
                              complete access to files on your server, including 
                              the ability to upload, move, rename, copy, delete, 
                              read, read binary, write, or append, all from one 
                              simple tag. |  
                            | CFREGISTRY | Read and 
                              write to the Windows registry. |  
                            | CFEXECUTE | Executes a 
                              program, batch file, or other executable on the 
                              server. |  
                            | CFPOP | Manage and 
                              retrieve e-mail messages from a POP email 
                            server. |  |  
                      | New 
                        features in ColdFusion MX
 ColdFusion MX is a new 
                        release of a die-hard product that has been completely 
                        redesigned from the ground up. This version of 
                        ColdFusion is Java-based, but works almost entirely like 
                        the previous versions of ColdFusion. ColdFusion tags -- 
                        with very few exceptions -- work in exactly the same 
                        manner as described in this article. In fact, most 
                        applications created in previous versions of ColdFusion 
                        will run without  modification.
 One of the biggest new developments in ColdFusion MX 
                        is that you can use JSP tag libraries with your 
                        ColdFusion pages. This means that a ColdFusion 
                        programmer can take advantage of any existing tag 
                        libraries, as well as create new ones. This is on top of 
                        all the ColdFusion tags and COM objects that are already 
                        in a ColdFusion programmer?s arsenal. Another new, big feature in ColdFusion MX is 
                        ColdFusion Components (CFCs).  CFCs are 
                        self-documenting and  self-contained.  You can 
                        use CFCs through any ColdFusion pages on the ColdFusion 
                        server.  Other technologies can access your 
                        ColdFusion components if you publish them as web 
                        services (for instance, a Macromedia Flash application 
                        may use a ColdFusion component to run a database query 
                        based on a user's request).  Create CFCs with the cfcomponent tag, and save them 
                        with a CFC extension.  Include your CFML logic 
                        (such as a cfquery tag, conditional code, and so forth) 
                        within a cffunction tag inside of the cfcomponent tag 
                        inside the CFC file.  Then, any ColdFusion page on 
                        your server can call the functions (also called methods) 
                        within the CFC.  For full details on how to use 
                        CFCs, refer to the other articles in the ColdFusion 
                        Developer Center, and to the ColdFusion MX 
                        documentation book, Developing ColdFusion MX 
                        applications.   Developing ColdFusion components that produce web 
                        services has one major advantage over producing web 
                        services in other technologies ? you can create a 
                        ColdFusion component web service with standard CFML code 
                        in a fraction of the time.  Simply add the 
                        attribute access=remote to the cffunction tag to 
                        activate the CFC as a web service.  The following 
                        is a simple CFC that reads the contents of a directory 
                        and returns a list of JPG files in that directory: ><cfcomponent>
  <cffunction name="getJPGList" returnType="string">
    <cfdirectory name="fileList"
       action="list"
       directory="H:\public_jpegs" 
       filter="*.jpg"> 
   <cfreturn #ValueList(fileList.name)#>
  </cffunction>
</cfcomponent>Save this file as getFiles.cfc (Note: You'll need to 
                        change the directory based on your directory structure). 
                        You can use this CFC on your ColdFusion page to get a 
                        comma-separated list of all JPEG files in the 
                        H:\public_jpegs directory. To invoke the CFC on a 
                        ColdFusion page, use this simple code: <cfinvoke component="getFiles" method="getJPGList"
 ReturnVariable ="theList"/>After the cfinvoke tag, use the variable, theList, 
                        which contains the entire directory of JPEGs. 
                        Transform this simple component into a web 
                        service.  Doing so makes the information accessible 
                        to anyone on the Internet using any capable 
                        technology.  Simply add access="remote" to the 
                        cffunction tag in the CFC. ColdFusion MX takes care of 
                        all the details, including creating the WDSL file for 
                        you. You've successfully published a web service that 
                        lists the contents of one of your directories. This was 
                        a simple example.  Yet, compared to that of another 
                        language, it illustrates the simplicity and power 
                        inherent in ColdFusion code. Read more about using 
                        ColdFusion components in the ColdFusion 
                        Developer Center.Summary ASP is 
                        certainly a viable technology to build Web applications, 
                        but for ASP programmers who wish to make the change to 
                        ColdFusion, the transition can be an easy one. You'll 
                        find that applications that once took days can be done 
                        in hours, and calls to third-party components can be a 
                        thing of the past. CFML is a versatile language that is 
                        self-contained, easy-to-learn, and promotes rapid 
                        application development.  Also, with the new 
                        additions of JSP tag libraries, ColdFusion Components, 
                        XML functionality, and web services in ColdFusion MX, 
                        ColdFusion is more versatile than ever before.
   |  
                      | 
 |  
                      | About the authorTom Muck is co-author 
                        of three UltraDev books including the bestseller, Dreamweaver UltraDev4: The Complete 
                        Reference.  He is an extensibility expert 
                        focused on the integration of Macromedia products with 
                        ColdFusion and other languages, applications, and 
                        technologies.  Tom has been recognized for this 
                        expertise as the 2000 recipient of Macromedia's Best 
                        UltraDev Extension Award.  He also authors articles 
                        and speaks at conferences on this and related 
                        subjects.  As Senior Applications Developer for 
                        Integram in Northern Virginia, Tom develops back-end 
                        applications for expedited, electronic communications. 
                        Tom also runs the Basic-UltraDev site with co-author Ray 
                        West and is an advisor for MX 
                        inSite magazine.
 |  
                      |   |  |  |  |  
          |  |  |  |