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 [leetcode 22]Generate Parentheses

    题目描述: Given n pairs of parentheses, write a function to generate all combinations of well-formed par ...

  2. 【转】DBCP连接池原理分析

    ---------------------------- 目前 DBCP 有两个版本分别是 1.3 和 1.4. DBCP 1.3 版本需要运行于 JDK 1.4-1.5 ,支持 JDBC 3. DB ...

  3. SGU 390-Tickets(数位dp)

    题意:有标号l-r的票,要给路人发,当给的票的编号的各数位的总和(可能一个人多张票)不小k时,才开始发给下一个人,求能发多少人. 分析:这个题挺难想的,参考了一下题解,dp[i][sum][left] ...

  4. convert nocdb to cdb using dbms_pdb

    convert nocdb to cdb using dbms_pdb 本文介绍将nocdb转换为cdb   环境介绍: ORACLE_HOME: /u01/app/oracle/product/12 ...

  5. PHP 判断协议是否为HTTPS

    if ($_SERVER['HTTPS'] != "on") { echo "This is not HTTPS"; }else{ echo "Thi ...

  6. 时间管理(GTD)

    今天中午看了30分钟老王讲战胜拖延症和时间管理  视频地址:多呗课堂 贴两个总结的图在此: 计划中使用的四象限法和十八分钟法很好. 今年多研究研究,实践一下Geting Things Done.

  7. SSDT Hook结构

    目录 SSDT Hook效果图 SSDT简介 SSDT结构 SSDT HOOK原理 Hook前准备 如何获得SSDT中函数的地址呢 SSDT Hook流程 SSDT Hook实现进程保护 Ring3与 ...

  8. HW7.9

    import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...

  9. Android下NFC的简单使用

    现在很多手机已经配备了NFC(Near Field Communication 近场通信)的功能,我就为此专门研究过,可以到本文末尾下载源代码. Android官方资料:http://develope ...

  10. tcp/udp socket编程异同

    一.TCP与UDP的区别 基于连接与无连接 对系统资源的要求(TCP较多,UDP少) UDP程序结构较简单 流模式与数据报模式 TCP保证数据正确性,UDP可能丢包 TCP保证数据顺序,UDP不保证 ...