Migration Solutions for ColdFusion Applications to ASP.NET
      
Vince Bonfanti's Weblog

CFQUERY: new cachedUntilChange attribute

The CFQUERY tag supports the optional "cachedWithin" attribute that allows you to cache query results for data that changes infrequently, in order to improve the performance of your application. Wouldn't it be useful if there was a "cachedUntilChange" attribute that would cache the query results and only re-execute the query if and when the database notifies you that the data has changed? For example:

<cfquery name="employees" datasource="myCompany"
         cachedUntilChange="true">
SELECT * FROM Employees
</cfquery>

In this example, the "employees" query result variable would be cached in memory and subsequent renderings of the CFQUERY tag would return the cached result. The query would be re-executed only if and when the data in the Employees table changes. This would solve the basic problems with using the "cachedWithin" attribute: no more guessing at the right interval to refresh the data, and no more "stale" data in the query cache during the cache interval. Queries would be executed exactly when they were needed. If you had such a capability, it might be tempting to use it by default for all of your CFQUERY tags.

One of the things I learned last week at the Microsoft PDC05 developer conference is that the combination of SQL Server 2005 and ADO.NET 2.0 now provide exactly this sort of query caching and notification capability. In fact, this new feature works not only for SELECT statements, but also for stored procedures.

Therefore, it is possible to implement the "cachedUntilChange" attribute for CFQUERY and CFSTOREDPROC in a future version of BlueDragon.NET when used in conjuction with SQL Server 2005, and is a feature we're very likely to add. This is just a small example of the many benefits of the tight integration between BlueDragon.NET and the Microsoft .NET Framework.

UPDATE: The "cachedUntilChange" attribute for CFQUERY is implemented in BlueDragon.NET 7.0.

IIS 7 Update: Windows Vista client to support multiple web sites

I just heard that the Windows Vista client operating system *will* support multiple web sites for IIS 7. This is a change from Windows XP, which only allows a single web site for IIS. This will make web development on the client version of Windows Vista much easier.

Microsoft PDC05 - Day 2 Sessions

I attended four sessions yesterday that are worth commenting on--and one that's not.

The first session was entitled, "Building Customizable Applications using .NET" and was all about Visual Studio Tools for Applications (VSTA) that was previewed during the morning keynote. VSTA consists of two parts: (1) the VSTA IDE, which is a simplified version of Visual Studio.NET targeted to application customization; and, (2) a runtime engine that's embedded into the "host" application (that is, the application for which you're developing customized add-ins). The VSTA IDE only supports VB.NET and C#, not any of the other .NET programming languages. The VSTA IDE can be customized by adding a "New Project" wizard, customized help, sample code, snippets, start-up context, etc. It looks like it would be possible to create a customized version of the VSTA IDE for developing CFX tags to be deployed on BlueDragon.NET. In that case, the VSTA host run-time would probably replace the current CFX implementation in BlueDragon.NET. It's interesting, but I'm not sure how much demand there might be for something like this, since creating CFX tags in Visual Studio.NET currently is pretty straightforward.

The second session was, "Writing Performant Managed Code in .NET 2.0". There were two items of good news from this session: (1) we're already following most of the recommended "best practices" for writing high performance code for .NET; which means that, (2) most of the performance enhancements that are being made in .NET 2.0 will be realized by BlueDragon.NET without us having to change a single line of code. In addition, there are some new features in .NET 2.0 that we should be able to take advantage of to get a further performance boost--I'd added this to our "to-do" list for BlueDragon.NET 7.0.

The third session was, "ASP.NET on IIS 7". This turned out to be a dive into details of information presented at the IIS 7 Overview session that I attended earlier. One thing that it did serve to emphasize is the tight integration of ASP.NET and IIS 7, to the point that it really doesn't make sense to refer to them as two separate products anymore. They did present information about some interesting new caching features in IIS 7 that are probably worth investigating in more detail to see how we can take advantage of them in BlueDragon.NET.

The final session was, "ASP.NET: Developing RIAs with Atlas (Part 1)". Atlas is Microsoft's name for their ASP.NET-based AJAX implementation. Atlas consists of three components: (1) a client-side JavaScript library; (2) server-side ASP.NET extensions; and, (3) client-side "application services". Regarding the latter, it's unclear to me whether some of these "application services" are specific to IE 7 or why they're considered separate from the client-side JavaScript library. The client JavaScript library consists of a type system for JavaScript (classes, interfaces, inheritance, etc.), and a base class library with support for debugging, tracing, networking, etc. The server-side ASP.NET extensions consist of a "web services bridge" that provides access to server-side objects, and a set of ASP.NET server controls that encapsulate complex HTML/DHTML and avaScript. You can find out more about atlas on atlas.asp.net.

Microsoft PDC05 - Day 2 Keynote

I've got about an hour before the first sessions start, so I thought I'd write a quick summary of today's keynote. There were four main topics covered: Windows Workflow Foundation, the Expression family of designer products, Visual Studio Tools for Applications, and Office 12. I skipped the last topic (Office 12), which is why I have time to write this now.

Windows Workflow Foundation is a workflow engine for automating business processes. The example they gave is of a company receiving a request for a quote, which was entered by a customer on the company's web site. The request for quote triggers an email to the sales and engineering departments, each of which has the opportunity to accept or reject the quote. This is all implemented based on the Workflow engine APIs. They showed how to add a workflow action (written in C#) to send a text message to the quote manager if the request is rejected by engineering. It all seems just a bit pie-in-the-sky to me, but we'll see. I assume that since the Workflow APIs are all available via the .NET Framework, that it'll be possible to access them from CFML in BlueDragon.NET using the CFOBJECT tag or by writing custom CFX tags. I suppose it would also be possible for us to create new CFML tags to access the Workflow APIs if it turns out that our customers find Windows Workflow Foundation to be useful. Unfortunately, I'm not going to be able to attend any sessions on this due to other interests.

I suspect the topic that's going to generate the most press is the announcement of the Expression family of designer products. To my uneducated eye, two of these appear to be direct competitors to existing Adobe and Macromedia products for graphics manipulation and web design (though not necessarily competitors to Flash or PDF). The Acrylic product is for manipulation of vector and bitmap images; Quartz is a web design tool that seems aimed squarely at Dreamweaver. (Caveat: I'm a programmer, not a designer; I don't use Photoshop, Illustrator, Dreamweaver, etc., so my impressions could be completely wrong. I'm sure there'll be lots of coverage of these new products in other forums). Finally, the Sparkle product appears to be a way to separate UI design and coding for Windows desktop applications, based on XAML.

Visual Studio Tools for Applications (VSTA) provides APIs for allowing end users to customize applications. VSTA IDE (similar to Visual Studio) is embedded into the customizable application, which exposes an object model for user-created extensions written in C# or VB.NET (or any .NET language, I suppose). I wonder if this could be embedded into BlueDragon.NET to provide an easy way to write and test CFX tags, or even a way to create "first class" CFML tags and functions that have full access to the internal BlueDragon APIs (though the thought of the latter is a little scary from a support perspective). I think I'm going to juggle my schedule a bit to attend a session to learn more about VSTA.

(In case you're wondering, I'm not the only attendee here from New Atlanta, so we're covering multiple sessions and topics. I'll see if I can summarize some of the more interesting sessions attended by someone other than me).

What's new in IIS 7?

Yesterday's IIS 7 Overview session at Microsoft PDC05 was basically a replay by Bill Staples of the keynote presentation he gave at CFUNITED-05. I thought it was a pretty impressive presentation back in June, and I was just as impressed seeing it again yesterday. IIS 7 is included in Windows Vista, which is planned for release in late 2006 (client version) and early 2007 (server version):

  • The IIS metabase has been eliminated; all IIS and ASP.NET configuration settings will be stored in the "web.config" XML file. This means that things such as default documents (for example, "index.cfm") and extension mappings are now included in web.config. This has a number of implications:

    • It will now be possible to do "xcopy" deployment of complete web applications, including all configuration settings and content. That is, you'll be able to create a complete web application and deploy it to IIS 7 simply by copying the directory to the Windows Vista server (this includes CFML web applications running on BlueDragon.NET).
    • It will be possible to put the web.config file on a shared file server to be accessed by multiple servers in a cluster. Configuration of the entire cluster can be modified simply by updating the shared web.config file.
    • The web.config can be extended with user-defined schemas. For example, we'll be able to put all of the BlueDragon.NET configuration settings into web.config, which then inherits the benefits listed above.
    • It no longer requires administrator privileges to update IIS 7 configuration settings for a virtual server.

  • A new IIS 7 admin tool replaces the existing MMC snap-in (and IIS Manager). The new IIS 7 admin tool is basically a way to edit the web.config file, and provides the following features:

    • Manage individual sites without administrator privileges (good for shared environments).
    • The IIS 7 admin tool is extensible, which means we'll look into the possibility of integrating the BlueDragon.NET admin console into the IIS 7 admin tool.
    • The IIS 7 admin console provides server health information, diagnostics, user infor, and generally much more info than the current MMC snap-in.

  • The ISAPI extension API is essentially dead (though existing ISAPI filters and modules will continue to work via an IIS 7 compatibility module):

    • It will now be possible to write web server extension modules as managed .NET code.
    • ASP.NET modules/handlers can work for *all* IIS requests, not just ASP.NET requests.
    • IIS is now modularized, not a single DLL, and unused modules can be removed to reduce the IIS footprint and improve security.
    • The default core IIS modules can be replaced with custom user modules (Bill gave an example of replacing the default directory listing module with a custom one that he wrote).

This is some exciting stuff. I look forward to getting my hands on it (we've been promised a DVD tomorrow). There's a lot here we're going to be able to take advantage of to enhance BlueDragon.NET.

More Entries

BlogCFC was created by Raymond Camden. This blog is running version 5.9.2.001. Contact Blog Owner

company media information terms of use privacy policy contact us
This page was dynamically built on the BlueDragon CFML Engine