浅谈ASP脚本的解释
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脚本的解释的更多相关文章
- 【ASP.NET MVC系列】浅谈ASP.NET MVC 路由
ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...
- 【ASP.NET MVC系列】浅谈ASP.NET MVC八大类扩展(上篇)
lASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操 ...
- 【ASP.NET MVC系列】浅谈ASP.NET 页面之间传值的几种方式
ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...
- 【ASP.NET MVC系列】浅谈ASP.NET MVC运行过程
ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...
- 【ASP.NET MVC系列】浅谈ASP.NET MVC 视图
ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...
- 【ASP.NET MVC系列】浅谈ASP.NET MVC 视图与控制器传递数据
ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...
- 【ASP.NET MVC系列】浅谈ASP.NET MVC 控制器
ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...
- 【ASP.NET MVC系列】浅谈ASP.NET 程序发布过程
ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...
- 浅谈ASP.NET ---- 系列文章
[01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作篇)(下) [04]浅谈ASP. ...
随机推荐
- Java [leetcode 22]Generate Parentheses
题目描述: Given n pairs of parentheses, write a function to generate all combinations of well-formed par ...
- 【转】DBCP连接池原理分析
---------------------------- 目前 DBCP 有两个版本分别是 1.3 和 1.4. DBCP 1.3 版本需要运行于 JDK 1.4-1.5 ,支持 JDBC 3. DB ...
- SGU 390-Tickets(数位dp)
题意:有标号l-r的票,要给路人发,当给的票的编号的各数位的总和(可能一个人多张票)不小k时,才开始发给下一个人,求能发多少人. 分析:这个题挺难想的,参考了一下题解,dp[i][sum][left] ...
- convert nocdb to cdb using dbms_pdb
convert nocdb to cdb using dbms_pdb 本文介绍将nocdb转换为cdb 环境介绍: ORACLE_HOME: /u01/app/oracle/product/12 ...
- PHP 判断协议是否为HTTPS
if ($_SERVER['HTTPS'] != "on") { echo "This is not HTTPS"; }else{ echo "Thi ...
- 时间管理(GTD)
今天中午看了30分钟老王讲战胜拖延症和时间管理 视频地址:多呗课堂 贴两个总结的图在此: 计划中使用的四象限法和十八分钟法很好. 今年多研究研究,实践一下Geting Things Done.
- SSDT Hook结构
目录 SSDT Hook效果图 SSDT简介 SSDT结构 SSDT HOOK原理 Hook前准备 如何获得SSDT中函数的地址呢 SSDT Hook流程 SSDT Hook实现进程保护 Ring3与 ...
- HW7.9
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...
- Android下NFC的简单使用
现在很多手机已经配备了NFC(Near Field Communication 近场通信)的功能,我就为此专门研究过,可以到本文末尾下载源代码. Android官方资料:http://develope ...
- tcp/udp socket编程异同
一.TCP与UDP的区别 基于连接与无连接 对系统资源的要求(TCP较多,UDP少) UDP程序结构较简单 流模式与数据报模式 TCP保证数据正确性,UDP可能丢包 TCP保证数据顺序,UDP不保证 ...