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.
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.
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.
There are some built-in classes which helps a lot when handling Zip files, Image manipulations, JSON and Uploads.
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
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:
Good stuff, mate!
Cool framework! I like old goodies and still addicted to ASP ;)
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!
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?
Thanks,
Dave
p.s. After writing that, I found the Open Source stuff here:
http://www.codeplex.com/IIRF
please help me~!i can’t download it~!please send the zip package to my email(sun2grit@gmail.com),thanks~!
Hi,
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…
Chao!
Hi,
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; };
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; };
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! ;)
Interesting. This is the kind of thing that VB coders needed…
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?
Thank you for works!
Thanks a lot for your json.class.asp file. Very useful and thoughtfully performed.
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
good job!
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 …
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)
Olá Fábio. Parabéns, pelo artigo. Você tem esse material disponibilizado em português (para seus compatriotas)?
I understand what your thought…But just listen to me... give up VBScript...
Instead, use JScript, It ‘s very better than VBS!
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.
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…
Bravo!! To express respect.
Get Error 500;100
msxml6.dll error (0×80072EFD)
Connection with server could not be astablished /lib/axe/classes/kernel.asp line 192
msxml6.dll error ‘80072efd’
A connection with the server could not be established
/lib/axe/classes/kernel.asp, línea 192
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!
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
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.
@code@
... more.