10多年前,ASP的出现使全世界的WEB设计者摆脱了C/C++的繁杂,大幅提升了页面的开发效率

然而一直到数年之后,asp的解释一直握在微软手里,后来阿帕奇也支持asp了,虽然没有IIS那么强大,但是它却标志了Asp可以移植到非Windows系统中

事物总是像太极那样阴阳相生,当WEB开发者们渐渐的遗忘了C/C++等更底层的语言,熟悉了脚本后,却渐渐的苦于忍受IIS的种种制约,安装,建站,设置等等

那么就导致一种想法,能不能有一个程序,绿色免安装的,能够解释asp或其他脚本呢?答案是肯定的,只是这里面有个简单的问题,就是asp的解释

此类的工具最出名的是Netbox,这个工具的安装包很小,1点几M,发布成独立的程序也只有几百K,能提供ASP绝大部分的功能,Netbox是加壳发布的

那么我能不能得到Netbox的源码,我不想让别人知道我使用Netbox.这一点恐怕比较困难,虽然Netbox是免费的,但是这也是利益的所在.

不过要实现Netbox其实也不难,我们在讲ASP开发的时候,会提到一个名词:内置对象.

比如Server,Session等等,ASP支持两种脚本vbs和js,那么大家想到了什么呢?不错,ScriptControl

这个控件的文件名是msscript.ocx,是对一个动态库的封装,这个动态链接库是msscript.dll.这个ScriptControl支持的就是这两种脚本

印象最深的莫过于msc.AddObject Me, "Form1", True,这样在脚本中的语句Form1.Caption = "fuck you"其实就是设置窗口的标题

这里代码是VB的代码,所有VBS,VBA什么的都是VB的子集,VB6程序都是在vbvm60.dll这个虚拟机中运行的,其实VC也可以调用ScriptControl

只是C/C++调用COM比较麻烦,如果使用MFC什么的,你还要学习类的构架,人并没有100多万个CPU...

那么我们可以用一个Server类模块, 然后Public Server As Class1, Set Server = New Class1, 那么脚本中就可以调用Server这个所谓的内置对象了.

当然你需要精通VB语言, 比如Session.Cookie是一个Collection,它是一种无序的数组,也就是集合,还有其他的东西, 那么ASP页面并不是vbs或js纯脚本,怎么解释?

其实也简单,多几个东西而已,<@xxx>必须是首行,设置一些全局的信息,比如字符编码,可以用StrConv,最终是调用MultiByteToWideChar和WideCharToMultiByte.

然后是一个逆向处理的过程,如

<tr>

<%For i = 0 To 10%>

<td></td>

<%Next%>

</tr>

我们知道<%%>之间的是脚本,要解释,其实要反过来处理,%><%之间的全部换成Response.Write,即

Response.Write "<tr>"

For i = 0 To 10

Response.Write "<td></td>"

Next

Response.Write "</tr>"

另外必须要精通HTTP协议,比较流行的是HTTP 1.1,超文本传输协议还是比较好理解的,比如Response.Buffer = True那么就要使用Chunked的方式传输生成的html脚本.

一句话就是用VB+ScriptControl可以实现ASP脚本的解释.到此,天啊,那么麻烦!

不错,上一层的应用也许很简单,很强大,满足人们的需要,但是底层的一些反复使用的计数确是十分繁杂的,最终这些东西都是CPU在执行指令,CPU执行的过程是电路的过程

电阻,电容,二极管,三极管,晶振...

那么有没有简单点的?我天生是懒虫.有,用ISAPI直接调用ASP.DLL,这个DLL在IIS里面有,就是负责ASP页面的解释.

由于ASP的一些先天性缺陷,现在的Web一般都用ASP.NET,还有就是开源的PHP.总体来说这两者各有优缺点,注意无论发不成托管代码怎么编译

最终.NET程序还是脚本,微软称之为IL,即中间语言,只不过这种脚本是二进制形态的,不是CPU指令,因此可以很快解释,并且与系统无关

这就是为什么.NET程序可以很容易被破解的原因.然而不论ASP.NET还是PHP,最终还是免不了那么些安装再安装的繁琐事,为了给学生或朋友展示一段代码

这些琐事是很痛苦的,更痛苦的是过程中再出现莫名其妙的错误,这时候我们叫做蛋疼

雷雨声把握吵醒,于是写点东西,罪过罪过...

浅谈ASP脚本的解释的更多相关文章

  1. 【ASP.NET MVC系列】浅谈ASP.NET MVC 路由

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  2. 【ASP.NET MVC系列】浅谈ASP.NET MVC八大类扩展(上篇)

    lASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操 ...

  3. 【ASP.NET MVC系列】浅谈ASP.NET 页面之间传值的几种方式

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  4. 【ASP.NET MVC系列】浅谈ASP.NET MVC运行过程

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  5. 【ASP.NET MVC系列】浅谈ASP.NET MVC 视图

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  6. 【ASP.NET MVC系列】浅谈ASP.NET MVC 视图与控制器传递数据

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  7. 【ASP.NET MVC系列】浅谈ASP.NET MVC 控制器

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  8. 【ASP.NET MVC系列】浅谈ASP.NET 程序发布过程

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  9. 浅谈ASP.NET ---- 系列文章

    [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作篇)(下) [04]浅谈ASP. ...

随机推荐

  1. java适配器模式

    原文查看:http://www.cnblogs.com/java-my-life/archive/2012/04/13/2442795.html

  2. Ext基础一(转载)

    要学习及应用好Ext框架,必须需要理解Html DOM.Ext Element及Component三者之间的区别. 每一个HTML页面都有一个层次分明的DOM树模型,浏览器中的所有内容都有相应的DOM ...

  3. android ListView详解

    转自:http://www.cnblogs.com/allin/archive/2010/05/11/1732200.html 在android开发中ListView是比较常用的组件,它以列表的形式展 ...

  4. Codeforces 628E Zbazi in Zeydabad 树状数组

    题意:一个n*m的矩阵,要么是 . 要么是 z ,问可以形成几个大z 分析:(直接奉上官方题解,我感觉说的实在是太好了) Let's precalculate the values zlij, zri ...

  5. java.lang.UnsupportedOperationException

    在运行路况预测这个项目时,报错出现:java.lang.UnsupportedOperationException 原因:我将1.3版本和1.6版本的两个jar包都Add to Build Path ...

  6. uva 11020 Efficient Solutions

    题意:给你n个人,有两个属性x.y,如果不存在另外一个人x2,y2满足 x2<=x,y2<y 或者 x2<x,y2<=y,那么就称这个人是有优势的,每次给你一个人得信息,问你当 ...

  7. Python读取文件内容的三种方式并比较

    本次实验的文件是一个60M的文件,共计392660行内容. 程序一: def one(): start = time.clock() fo = open(file,'r') fc = fo.readl ...

  8. EXCEL 操作

    1.为几万行数据加序号 先在A1,A2分别输入1,2,选中A1:A2,双击A2右下角那个小方块. 数据有多少行就会自动填充多少行(要求:B列数据连续) 2.统计一列中单元格的值等于某个值的单元格的个数 ...

  9. nginx变量

    nginx的全局变量参数解释: $arg_PARAMETER#这个变量包含GET请求中,如果有变量PARAMETER时的值. $args   #这个变量等于请求行中(GET请求)的参数,例如foo=1 ...

  10. Codeforces Round #105 (Div. 2) ABCDE

    A. Insomnia cure 哎 只能说英语太差,一眼题我看了三分钟. 题意:给5个数k, l, m, n 和 d,求1~d中能被k, l, m, n 至少一个整除的数的个数. 题解:…… 代码: ...