|
A First Look At Railo
By Sean Corfield
Expert Author
Article Date: 2007-05-24
So I looked at Smith Project a short while ago. I decided to download and install the new Railo 1.1 Beta today to see what it has to offer.
I downloaded the Railix "Live" Linux install and then just edited the start/stop scripts to use the Mac OS X Java install instead of the one packaged with Railo (easy: remove jre/bin/ before java in each script; you may also need to change bash to sh in the #! line in each script).
First thing I noticed: Railo 1.1 is fast! It starts in just four seconds and seems to be very fast running most of my standard sample apps. It happily runs Fusebox 5.x and doesn't seem to have a problem with ColdSpring either (I haven't tested that extensively yet). Railo claim Model-Glue and Mach II run well and so far I have no reason to doubt that. Transfer ORM is beyond Railo's reach due to reliance on coldfusion.runtime.* Java classes.
What impressed me most, however, was what I found in the admin console. Some of it has not yet been localized (so it's a bit odd to see a mix of English and Deutsch on some pages) but you can configure a lot of behaviors within the compiler / runtime system.
You can configure the engine's locale, timezone and time server. You can also configure the default character set used for template files, rendered HTML and for "resources" (more on that below).
For components, you can configure what the base class CFC is - so you can use the built-in Component.cfc or a base class CFC of your own. You can choose which template is used to auto-generate documentation, allowing you to override the Railo default. You can also choose whether THIS scope behaves as PUBLIC (like CFMX) or PRIVATE, PACKAGE, REMOTE. You can also have Railo automatically invoke getXxx() / setXxx() when you access xxx as a direct property which I know a lot of people will like (I'm a little sketchy on exactly how this works since the option hasn't been localized yet in the admin!).
There are a number of options for controlling scope behavior, including a "strict mode" that only scans VARIABLES scope for unqualified variable names (presumably if not found in VAR scope?). You can turn session scope and client scope on and off in the admin which is also nice.
Railo implements script-protect and you can control the defaults in the admin. You can also control the search behavior for Application.cfc and Application.cfm / OnRequestEnd.cfm.
All of the above applies to the web administration console. Railo has the idea of a server administration console and then a separate web administration console for each "web" installed. The server admin provides defaults for every web (that can all be overridden obviously) as well as a number of per-server settings.
At a server level, you can have the server automatically update itself from the Railo website. You can restart the server (useful if you don't have easy access to the box). You can manage all the security access for each individual web, disabling various sections of the admin for web users in general or for specific web contexts. Some of this is a bit like sandbox security in CFMX (but not as sophisticated in terms of file system access).
I can imagine this level of control being very appealing to some developers although the impact on framework behavior needs to be very carefully weighed with some of these features, I suspect.
I mentioned resources above and that needs a little more explanation. The idea behind resources is that several tags can take a "resource" URI rather than just a file path. A resource can be a local file path, an FTP file path, a datasource or an in-memory space. This allows you to transparently copy a file from a remote FTP server to storage in a database, for example, using just CFFILE. It's a fascinating idea. For more details, read Railo's documentation (you probably have to create an account and login to access this).
Comments
About the Author:
Sean is currently Chief Technology Officer for Railo Technologies US. He has worked in IT for over twenty five years, starting out writing database systems and compilers then moving into mobile telecoms and finally into web development in 1997. Along the way, he worked on the ISO and ANSI C++ Standards committees for eight years and is a staunch advocate of software standards and best practice. Sean has championed and contributed to a number of CFML frameworks and was lead developer on Fusebox for two years.
|
|