a brief about me

My avatar
Fabio Zendhi Nagao

is an applied mathematician from IME - USP - Brazil currently working as CTO at Lojcomm Internet, a company specialized in e-commerce. + info

fields of interest: E-commerce, Collective Intelligence, Interoperability, Web 2.0, Web Design, Mathematical Programming, Pattern Recognition.

contacts: Twitter and nagaozen @hotmail.com, @gmail.com and @yahoo.com

out of date goodies

In order to help the large amount of people looking for my old widgets everyday, I'm putting below a list of the most wanted. Note that the others are still accessible at http://zendold.lojcomm.com.br/.

support my projects

If you like my free products and want to support their advancement, please consider making a small (or large!) donation or buying me a book from my Amazon wishlish.

ASP Xtreme Evolution

ASP Xtreme Evolution logo



This project born from the necessity of bringing some up-to-date best practices to the Classic ASP World. Things like a good MVC architecture, with XML interacting with your database providing a standard way to your system talk to other systems and XSLT building your views are minimal requirements for any good application. But you should be asking yourself: “Why Classic ASP? It’s old, the .NET Framework is at 3.5!” and I’m ready to answer: “And why not?”. The truth is that Active Server Pages has it’s time in the Internet history and for a large period it was widely used. As any relevant programming language, it left a big amount of complex applications running in a so perfectly nice way that they are not going to be replaced very soon. Just for example: Here, in Brazil, the Visanet online transaction process still relies in Classic ASP and COM+ extensions. The same happen with some big banks.

Why VBScript and not JScript? First of all, in it’s time, VBScript was the “standard” language of ASP. Many developers took their time reading articles and making experiments with VBScript, not JScript so I belive it’s a good idea to respect the time people spent to their VBScript skills and make a good thing for them. Second, VBScript isn’t a bad language. It’s a language after all, like any real world language: English, Japanese, Portuguese. Saying that a programming language is better than other seems so lame to me as saying that French is better than English or Japanese is better than Portuguese. It has some annoying things like being case-insensitive and a very rustic class model, but nothing that we can’t bypass and make some poems and musics. This is the case of the framework support for features that was not too mature in the time of ASP conception but are very often used nowadays. Things like managing zip files, manipulating images, using JSON to communicate with the client-side engine in this Ajax-Era.

Did’nt you take a look at Google? There are already Troika.ASP and Simple MVC ASP Framework why not to use them? Yes, it’s true there are good projects online, actually I’ve based my own in some of the Rob Rohan one, like hijacking the Session scope into a Request scope. But this framework is entire built from the ground and the way it talks between the modules isn’t the same as in that one. Well, Troika.ASP is a very complete MVC Framework and it also comes with a lot of helpful classes. But it’s written in JScript and I just wanted to give the a good alternative to the people who like VBScript.


The ASP Xtreme Evolution goal is to provide a versatile MVC URL-Friendly base for Classic ASP applications with some additional features that are not ASP native. It should implement things that are common to most applications removing the pain of starting a new software and helping you to structure it so that you get things right from the beginning.

Main parts

Routing your Friendly URLs

The routing system takes every url request and translate, if necessary, into something understandable to the system. In this framework, the engine will be basically mapping http://www.yourdomain.com/controller/method/0/1/2/3/…/n to your controller.method() with an array Session(“argv”) with the values [0, 1, 2, 3, …, n].


The Model accesses your data. It might talk to a database, or to a web service, or use smoke signals to acquire the information it returns to you; the essential point is that the way the data is retrieved is absolutely irrelevant to the code that uses the model. So in the beginning, your application would use models that return “fake” dummy test data for rapid prototyping, and later, you will write the actual code that talks to a database.


The View presents your data. That typically means it renders an HTML document from one or more templates. But it could also build an RSS feed from the data it was given, or create a JSON data structure for the Ajax functionality of your application – it’s all up to you!


The Controller contains the business logic: the code that talks to the model, performs necessary tasks, send it to the view, prepares data for the cache system and to be sent to the user.

Cache System

In order to avoid processing the same code at every request, the cache system will save specific requests (configured at /app/config.xml) and tell the routing system to use the processed static version making those pages blazing fast to be retrieved.

Extended features

There are some built-in classes which helps a lot when handling Zip files, Image manipulations, JSON and Uploads.

Required extensions

ASP Xtreme Evolution is based in some extensions, but don’t worry it’s all free and everything already comes with the package. Although, if you want to check the original projects, here’s a list of their sites:


You can find the framework documentation here

Working example

A blank installation is running here check it now to see the routing and ?inspect=true features working.


This program is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.


You can checkout from the ASP Xtreme Evolution github address


For installation instructions, please read the INSTALL.txt README.md or follow the image instructions below:


Hudson Mendes 29 Jan 08 at 10:16pm

Good stuff, mate!

Jack 30 Jan 08 at 4:04pm

Cool framework! I like old goodies and still addicted to ASP ;)

WebGyver 30 Jan 08 at 5:08pm

Awesome stuff!

You know, despite all the OOP and C# demands of our time, I am still spending almost 50% of my time in Classic ASP. Your information and links have certainly helped me a great deal as far as refactoring some of the legacy code — from structured ASP to OO ASP.

Thank you!

Dave M 11 Jun 08 at 4:26pm

Wow, Nice work. Looks like a great project. The rewrite part will be great if it works correctly I’ve been tinkering with Troika and the urls were the one thing that bugged me about using the MVC pattern.

I notice your link to the Ionics Isapi Rewrite Filter is dead. I wanted to check that out to see if I can install that rewrite module/extention on a shared server, as most of the stuff I code will be hosted on a server that won’t allow isapi filters to be installed.

Is there a new link to the Ionics Isapi Rewrite Filter website, or did that project just become abandoned?


p.s. After writing that, I found the Open Source stuff here:

Dave, all the required components already come with the framework package.

asun 2 Aug 08 at 7:55pm

please help me~!i can’t download it~!please send the zip package to my email(sun2grit@gmail.com),thanks~!

Juan Pulido 4 Aug 08 at 1:08am


Requiero pasar datos de un JSON a ASP y encontré que en este Framework hay una clase que lo hace.

Pero no puedo descargarlo, por favor Fabio no funciona el subdominio donde esta package.

Por cierto te encontré en webdevbros…


Sven Neumann 12 Sep 08 at 0:12am


I’ve been trying to use your json object. Turns out its pretty buggy. Here are some suggested fixes (quite obvious really):

This function was broken, since you were not recursing, but simply re-assigning parentNode in the loop.

this.getChildNodes = function(sPath) {
    var keys = [];
    var parentNode;
    if( sPath.length > 0 ) {
        var aPath = sPath.split(’.’);
        parentNode = me.data;
        for(var i = 0, len = aPath.length; i < len; i++) {
            parentNode = parentNode[aPath[i]];
    } else {
        parentNode = me.data;
    for(var key in parentNode) {
        (sPath.length > 0)? keys.push(sPath + “.” + key) : keys.push(key);
    return keys;

This function would fail on non-existent paths. Fixed that with one line:

this.getElement = function(sPath) {
    var node = me.data;
    var aPath = sPath.split(’.’);
    for(var i = 0, len = aPath.length; i < len; i++) {
        node = node[aPath[i]];
        if(!node) return null;
    return node;

Hi Sven, first of all, thanks your comments! I’ve checked your complaints and here is my answer:

The getElement function DOES WORK FOR NON-EXISTENT PATHS. I’ve made a call for something like fields.four in the docs example and it returns vbEmpty (uninitialized) or VarType 0 which appears to be the right one IMHO since NULL in VBScript stands for no valid data.

About the getChildNodes the fix concept is right although I like more the way below to do it:

this.getChildNodes = function(sPath) {
    var keys = [];
    var parentNode = me.data;
    if( sPath.length > 0 ) {
        var aPath = sPath.split(’.’);
        for(var i = 0, len = aPath.length; i < len; i++) {
            parentNode = parentNode[aPath[i]];
    for(var key in parentNode) {
        (sPath.length > 0)? keys.push(sPath + “.” + key) : keys.push(key);
    return keys;
Tonći 22 Sep 08 at 5:26pm

Hi Fabio,

I don’t have deep knowledge of ASP but I’m wondering if it’s possible(and smart) to use Server.Execute of Server.Transfer? If I read the specs well, all variables should be transferred as well, which gives a nice way to switch from controller to view and vice versa. Or is there a nasty catch which I missed? And how do you use the traditional session info?

It looks like a good MVC overall, nice job! ;)

Timothy 19 Nov 08 at 0:36am

Interesting. This is the kind of thing that VB coders needed…

flatfeet 30 Nov 08 at 9:10am

Good job, Fabio! BTW, anyone know if there is an inexpensive web host (based in USA or UK/Europe) that supports Classic ASP with ionic ISAPI filter, etc. so that we can use this framework by Fabio?

Kim, Kiseok 16 Jan 09 at 2:19pm

Thank you for works!

Carlos Man 20 Mar 09 at 10:18pm

Thanks a lot for your json.class.asp file. Very useful and thoughtfully performed.

Carlos Mota 10 Apr 09 at 9:36pm

Hi Fabio!

Before I found your links I was kind of sad because many people called classic ASP an obsolete code (old code, legacy code, etc.) and I thought that the hundreds of hours I spent searching for ASP/VBScript in the Net and the thousands of hours I spent studying and working on that code, were kind of a lost time.

I’m not an academic programmer and my main interest is Webdesign. I have made a course of ASP.NET with C# but I don’t want to move from classic ASP to ASP.NET. I want to be able to coding the simple way, with just notepad or similar (I use Frontpage).
So, your efforts to keep ASP/VBScript alive are inspiring.

You also have good taste regarding webdesign.
Keep up the good work!

Carlos Mota

vanstar.he 22 Apr 09 at 11:14am

good job!

cyberd 28 May 09 at 7:07pm

Is it possible to use it at XP PRO (SP3 – IIS)… ?

i want to install it at c:\inetpub\wwwroot\newfolder

where the hell i must allow that filters…. can’t find where to allow them at IIS (winxp)…

thanx in advance..

ps: avira antivir found ***template.asp something having script virus …

I don't know if it runs in XP PRO. AXE is built to work on Windows Server. The best I can suggest you is to try installing one in a Virtualbox. Also, try a better anti-virus, this project is open-source, you can look inside and check yourself it doesn't contain anything harmful.

cyberd 29 May 09 at 10:36am

thanks for the answer…
but hey… avira antivir is number one! …better than kaspersky / nod32 / symantec.. may be the advance heuristic machine have some problem :-(i had it at medium security)

Do you know if axe can run at Abyss ? (the best web server ever with the help of selisoft ahtml)

Frankly I don't know. If what they say about having a real support for "Classic" ASP is true, then yes, since almost everything is pure ASP. The only tunnings you may need to do are: 1) changing from IIRF to the server URL Rewrinting system, 2) changing the Image class to use GD or ImageMagick (I'll make the last one available to Windows too) and... maybe something related to zip packages.

Bruno Souza 9 Jun 09 at 8:53pm

Olá Fábio. Parabéns, pelo artigo. Você tem esse material disponibilizado em português (para seus compatriotas)?

Oi Bruno, os artigos que considero mais importantes são também publicados no site http://www.imasters.com.br/. Veja se o que você procura já está lá.

frank 24 Jun 09 at 11:14am

I understand what your thought…But just listen to me... give up VBScript...
Instead, use JScript, It ‘s very better than VBS!

AXE currently roadmap points to extend ASP itself, which will make possible to use it with any ASP language (VBScript, JScript, Python, Ruby, Perl, ...) yaaaih! Wait and see :P

Sancler 20 Jul 09 at 10:18pm

Grande contribuição Fábio. Você realizou um trabalho realmente fantástico. Eu também tenho algumas pacotes de classes que facilitam a utilização do asp e gostaria de compartilhá-las caso esteja interessado.

Mike 26 Sep 09 at 11:46am

it left a big amount of complex applications running in a so perfectly nice way that they are not going to be replaced very soon

And if they are going to be replaced it should be by another Classic ASP application? I don’t think so.

But, you have done a great job and it is very admirable. Just very limited in scope. If only you had done this in 1998…

Allen 21 Oct 09 at 7:36pm

Bravo!! To express respect.

Eugeny 7 Oct 11 at 8:06am

Get Error 500;100
msxml6.dll error (0×80072EFD)
Connection with server could not be astablished /lib/axe/classes/kernel.asp line 192

Diego Ponce 1 Mar 12 at 4:43pm

msxml6.dll error ‘80072efd’

A connection with the server could not be established

/lib/axe/classes/kernel.asp, línea 192

at: "Eugeny" and "Diego Ponce"

This error is usually related with miss-configuring the /app/config.xml or forgeting to add a view application pool.

Ngoc Tran 2 Apr 12 at 1:30pm

I’ve followed the steps you guided but the installation was not successfull :( I couldn’t find the /lib/axe/bin/IsapiRewrite4.dll file, please re-check the installation guide. Thank you!

You are right, there isn't a IsapiRewrite4.dll anymore. Framework got upgraded to use Ionics Isapi Rewrite Filter 2.1 stable. Please visit their repository and download the latest binary.

John 22 Sep 13 at 5:45pm

Hi Fabio.

I installed AXE and tried to install the rewrite filter and got an error message to say that it was incompatible with 64 bit systems. I then downloaded a 64 bit version, and installed it.

During the installation process I was only given the option of installing across the whole server, individual websites were not listed, then when I did it broke every site on the server. I’ve uninstalled it and everything is back to the way it was.

I’m using IIS 7 – I wondered if Microsoft’s official IIS URL Rewrite Module might do the job instead

Many thanks

mangius 20 Dec 15 at 10:21pm

Great Framework! Works fine in iis 6, but the installation fails on Windows 10 64 bit (iis 10). Some extensions doesn’t work. Have you plan bugfix or upgrade for Windows 10 64 bit? Can you help me on installing the framework? Thanks.

Post a comment

Comment Guidelines

  • Have no more than 2 links, otherwise your comment will be flagged as spam.
  • Links are automagically generated.
  • Textile Guide: _emphasis_, *strong*, -deleted text-, +inserted text+, @code@ ... more.
  • No signatures. No solicitations. Be nice. Be civil.