在很久很久以前----可能都快一年了吧,我第一次看 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! 我知道我越說越亂,你越聽越暈,但俺新學乍練么,您這西紅柿先收著---
|