原文地址:
http://blog.csdn.net/estyle/archive/2004/07/01/31445.aspx
欢迎转载!但请注明出处(原文地址)和我的姓名:靳田
谢谢啦! ^_^
时而听到如下类型的问题:
如何通过ASP实现延迟一段时间再调用某函数?
为什么在ASP中不能使用MsgBox来弹出消息框?
怎样才能悄悄地把程序文件下载到客户端并运行?
……
每当听到这种问题,我就秉持沉默是金的黄金法则。但在我的Mirage,我可以淋漓尽致地发挥了!
其实我并不觉得这些问题弱智,比如第一个问题就隐含了一丝异步调用的思想,第二个问题可以扩展到综合服务器端和浏览器端的编程模型实现,第三个问题可以看作是对一个潜在漏洞的探索,或者对应用程序部署方式的另类实现。
但问题在于,我遇到的提出这些问题的人,都是一些ASP初学者。那么,反映在他们身上的,只有基本概念不清了!
我估计,应该少有ASP教程会比较透彻地探讨这些问题,这正是导致部分ASP初学者基本概念不清的原因所在!
当我们决定玩某个游戏的时候,首先应该熟悉的是游戏规则,其次才是具体的玩法和技巧。
玩ASP、ASP.NET、JSP等也是一样,它们的游戏规则都继承自B/S的游戏规则!我们也可以把这里的“游戏规则”替换为“纲领性的编程思想”,但我还是比较喜欢“游戏规则”这个词。
——解释一下,“编程思想”是一个可繁可简的词,有兴趣朋友可以翻看《XX编程思想》这类的书籍。这里的“编程思想”用了“纲领性的”来修饰,请注意,下面的文字会让你更明白一些。
下面我们主要以ASP为例进行一些说明。注意,ASP的游戏规则同样继承自B/S,所以如果有心人打算继续读下去,建议尝试跳出ASP的圈子来理解,否则就显得我太浅薄了,呵呵。
相信所有ASP的教程都会明确提出:ASP是服务器端运行。这就是总的游戏规则!任何学ASP的人都应该熟记并把深刻理解它当作学习ASP的第一要务!如果还是搞不清楚为什么ASP代码不能使用MsgBox函数,那就停止继续往后看教程,回头重新认真学习吧!
ASP必须遵循的另一个游戏规则继承自HTTP协议,用我的话说就是,速战速决!(请自行思考其原因。)
因此,我推断,就算.NET可以进行线程编程,可以挂起线程,但在ASP.NET中还是不能这样做以实现服务器端的延迟。另一个典型的例子就是,在ASP中,我们不能像在VB中那样指望一个持久的记录集对象供你使用——当你要显示下一条记录的时候,你点击Next按钮,页面会被重新载入,代码会重新执行,这个时候的记录集对象是新建的,而不是以前那个!(以前那个可能被你主动关闭并释放了,相比系统自动回收,这样做更能体现你的素质。)
我想,VB和ASP程序员之间的转向的最大障碍可能就在于此了,游戏规则!
B/S和C/S的差别又体现在另外一个ASP游戏规则上,就是尽量避免客户端部署额外的部件(数字安全证书除外),比如各种控件、组件、数据库等!B/S的思想就是在服务器端实现核心功能,浏览器作为客户端应尽可能“轻”或者说“瘦”。如果考虑效率优化,需要把部分计算压力和I/O压力等分摊到客户端,那也应该尽量使用脚本和XML这些客户端默认支持的技术。
如果你想把你自己开发的ActiveX控件——虽然可能是一个非常漂亮而且功能强大的菜单控件——部署到客户端以供你的B/S应用程序使用,那么你就已经在向B/S的游戏规则挑战了。注意,你同时也是在挑战你的B/S应用程序的客户或浏览者!我不想吓唬你,有本事你可以试试看啊?顺便安慰你一下,如果你发起这种挑战,并不意味着一定会输,比如大部分浏览器使用者还是很愿意接受最新的Flash播放控件的,Macromedia的挑战是成功的。
……
有些人的人生主题就是制定或者玩弄游戏规则,比如立法委员和犯罪分子,呵呵。技术领域,创造.NET的那群人和包括黑客在内的众多计算机安全专家也是这些人的典型代表。而我们大部分人目前还只是游戏参与者而已,没有理由不遵循游戏规则。——至少在深刻理解和掌握一种技术之前,不应该妄想违背它的游戏规则!
或许你会以“缺乏创新意识”来反击我,我只想说:如果连自己应该做好的事都做不好,其它的一切不都变成空谈了吗?接下来,我继续保持沉默。