This question came in today from reader Marwan:
Have you, or someone you know, developed anything sophisticated with the Ajax features in CF8. While it is easy to sprinkle some Ajax here and there; developing complete apps is not very easy with all kinds of problems. I have started on 3 projects and eventually gave up and went back to traditional CF. I am interested in enterprise class apps completely developed with Ajax interfaces and functionality. Thank you.
This is a pretty open ended question and I thought it would be a good discussion for the blog. I think a lot would depend on what you mean by sophisticated and enterprise (hence the quotes above). I do think a fair way to phrase this question is - has anyone developed a 100% Ajax based app using CF8's Ajax features? Ie, something akin to Gmail where all (or almost all) of the application runs via one main Ajax-based controller. So that's the first part of the discussion I want to bring up. If you know of such a site, please share it. But I also want to address some of the implied shortcomings you allude to in your question.
While you didn't call out any particular bug, I'm willing to bet your problems are probably in these areas:
- Customizing the UI (color, padding, whatever) for ajax-bound controls like the new grid
- Customizing the functionality of UI controls (I don't want X to happen when I click, but Y instead)
- The size (file size) of a page when CF8's Ajax stuff is in use
This is typically what I hear on lists, blogs, etc. Maybe folks have heard other complaints and if so, please share. All of these issues typically focus on the visual side of the Ajax features added to ColdFusion 8. It is important to remember that ColdFusion's Ajax support is not limited to the 'pretty' UI widgets. I see three distinct areas of support:
- Visual Components: Mentioned above - the grids, pods, windows, etc.
- Bridging Tools: Things that connect the front end to the back end. This really boils down to cfajaxproxy, one tag. Considering what it does, though, it is an incredible amount of functionality to have in one tag.
- Server Side Functionality: What does ColdFusion do on the server side to help with Ajax? Specific to ColdFusion 8 I'd say this mainly consists of JSON support and returnFormat. I know it may be a small thing really, but isn't it awesome that we can take an existing CFC with existing logic, and simply use returnFormat=json in the URL to get a JSON based response?
When I do presentations on ColdFusion and Ajax I try to spend much more time on 2 and 3 since they don't cause quite as much controversy. I'm not surprised at all that the UI items would cause problems. UI - by its very nature - is going to be something that folks will either love or hate. I'm not trying to excuse Adobe for any bugs they may have in this area, but do note that you can do quite sophisticated things pretty quickly with tags like cfwindow, cfgrid, and cfdiv. For folks who may not be comfortable using other AJAX libraries, I think ColdFusion does what it always does - try to make web development as quick and practical as possible.
Speaking for myself - now that I'm getting more comfortable with Ajax and jQuery, I find myself using the UI items less but still using the bridging/back end stuff quite a bit. So enough rambling. Any comments?
Archived Comments
Get ready for the fire storm Ray...
So honestly, I fell in love with the Ajax stuff (all of it) at the beginning. And to tell you the truth, good or bad, if I were still programming intranet apps at my company I'd have to say I'd use the sh*t out of them. Simplicity, power, ease of training coworkers - all +1's when it comes to intranet developing with less experienced coworkers and short intervals for massive applications.
But...since I don't write stuff @ work anymore, I have to agree that jQuery (and a bit of Spry) is my drug of choice for Ajax nowadays.
So you don't use JSON? You don't use CFCs? My point here is - there is more to CF8's Ajax support then just cfwindow.
Oh...yeah...hell yeah...
That's what i get for skimming the post. JSON/CFC enhancements are huge in my book - even for jQuery/other ajax - the enhancements are fantastic.
I wrote a blog post on exp I had with ajax tags in CF8
http://henrylearnstorock.bl...
My company is about to release the new versions of our bxContacts CIS (Contact Information System). It's a web-based application that manages the leads generated by a web site.
The application is completely AJAX-based, built using the CF 8 tools.
There are three versions:
The simple version is primarily a bulk mail tool.
The mid-level product adds CRM functionality to manage your one-to-one correspondence with customers, a log of all activities with each contact, and multiuser support including the ability to assign specific customers to specific staff.
The high-end product is targeted at law firms, and includes the ability to refer contacts out (and track these referrals) and manage contact-related documents.
All versions include an intake form library (forms are inserted into your web site with two lines of Javascript) e-mail template library (you can design rich HTML e-mails and newsletters) and form letter libraries (automating frequent e-mails.)
We'll have a free version and a free trial of the high-end version; anyone interested in checking it out is welcome to e-mail me at albert@binetix.com. We're beta testing now, and expect to go live early next month.
Hi,
I've tried a couple of different things with the CF8 ajax stuff. The main thing I found was that it's easy to get a site 'working' but it's when you want to tweak certain behaviours that it gets more complicated and somewhat easier to just go back to a more standard website.
I also found that loading all the javascript can be slow, and therefore if i'm using the CF8 stuff, I try and preload some of it on previous pages if at all possible.
Mat
I've used the CF8 widgets mostly for Intranet applications. I think the page download size when including all of the extjs libraries can be an issue for some public websites. I have built a "single page" web (intranet) app with CF8 and this causes an up-front download hit but after that everything is pretty quick. I would like to see more customization options available for appearance tweaks - it is tedious - but possible with Firebug - to dig into the extjs js and css and figure out what to override, etc.
I would have to say that the JSON from a CFC and the CFajaxproxy combined with jQuery is a match made in JavaScript heaven!
A little Shameless Self Promotion but if you are interested in just this point we are doing a preso on this tomorrow (Oct 23) at the Nashville ColdFusion User Group. It will be broadcasted live via Connect.
http://www.ncfug.com/go/mee...
@JJM - No problem at all with the self promotion. Thanks for sharing it.
I have built a few large scale apps using the CF8 Ajax framework and have had good results once I got past the learning curve. I can't really share them with the readers of this blog as all of the apps are secure, corporate extranet apps used by my clients and their customers but I can say that I have built a file/report management app, a billing application (fed data by a commercial WMS app) and I have 3 other large projects in various stages all using CF8 Ajax.
Next year I will re-release Convergence, the app that I entered in the Best of Scorpio contest. This was an app that was dominated by Flash Forms as it was originally written using CFMX 7. I've been slowly rewriting it using CF8 and AJAX with pieces of Spry sprinkled in where necessary. When I get done with that I would be more than happy to show it to anyone who wants to take a look at it. It is a collaboration tool focusing on audited secure file transfer via a user portal, document management and some content management, exchange/sharepoint integration, etc.