在很久很久以前----可能都快一年了吧,我第一次看 asp.net (那时江湖人称 asp+),看到 application, session 什么的,就和自己说“人在哪!人在哪!"
等到看到 web form server controls,更是忍不住窃笑----“不就是以前 vi6 dtc controls 吗,
你以为你穿了马甲我就不认识你了”。
随便翻了翻就放在一边了。
这两天有时间多看了一下,发现好像不是那么回儿事。
怎么说呢? 夸张点说,asp.net 和 asp 的区别,就好像 nt 和 dos 的区别差不多,
猛一看 nt 里也有 dos 命令行,但那能一样吗。也许你觉得这么说太夸张了,但
想想这几点----
. 从技术上说 asp.net 其实都不需要 iis 的存在
. 所有的 aspx page 其实都是 class (或者严格些,是 System.Web.UI.Page 的实例)
. Page 是实现了 IHttpHandler 的 class,你也可以写个自己的 class:IHttpHandler
. 所有的 aspx page 其实都要被 compile 成 dll
. 我们以前的亲人 application/session 什么的,都只是从 System.Web.HttpContext 衍生来的
......
所以干脆换个思路去理解 asp.net 可能更容易接近它的原形(师傅!有妖怪!)-----
. 最好不要在 aspx 中写 script,要使用 .aspx + .cs ----- codehehind
. 把 aspx 看成 vb form,把 cs 看成 vb code
. 不过这些 “form” 有个本领就是能通过自动生成 html 代码从而把自己显示在浏览器中
. 这个本领的实质是因为 page 实现了一个函数叫 render,所以你能通过重载 render 干点更多的事
. 所有的 server control (当然更是 class 了)也是通过 render 生成 html 代码的
. 所以你也可以继承一个 control(比如 DataGrid) 然后重载 render 扩展它的功能,做些比较妖的事儿
. 或者你可以直接从 System.Web.UI.WebControls 直接继承,然后做出自己的控件
. 可以在里面封装几个其他控件---- 就成了 composite 控件,更好玩的是可以不做成 assembly, 可以以页面形式被调用
......
cut! 我知道我越说越乱,你越听越晕,但俺新学乍练么,您这西红柿先收着----啪!且听下回分解
KW大师精品文章赏析
80酷酷网 80kuku.com