在很久很久以前----可能都快一年了吧,我第一次看 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! 我知道我越说越乱,你越听越晕,但俺新学乍练么,您这西红柿先收着---
|