最近一段時間在用 C# 和 ASP.NET,在受訓和使用中偶爾有一些心得。 我覺得有時候問題比答案本身要重要,所以列了些問題, 這些問題主要是關于基本概念的,或者是初學者一上手就要碰到的。 至少我為其中一些問題困惑過。 關于答案我就并不是都知道了,更要命的是現在自己疑問越來越多,答案出現的越來越慢.....
1. Page class 實現了哪個重要的 interface?
a: IHttpHandler 偶以為了解 .net class, interface 特重要的說......
2. foo.aspx 編譯后的 class 名字是什么?
a: foo_aspx 擴展問題:如何動態地,用程序(programmatically)引用一個 user control? 有什么要注意的? 別告訴我 msdn beta 1 里有。你編譯一下就知道它在胡說。
3. Shadow-copy dll 存在哪里?
a: 考慮一下,如果沒有一種機制(現在我們管它叫 shadow-copy), 我們能否刪除/改變正在被使用的 dll? 比如在 vb6+iis+asp+mts 環境中,多少次需要 restart iis service or reboot...
4. 談談 AutoEventWireup
a: 有誰發現自己寫的某些事件被執行了兩遍?;)
5. 關于 Directive 中的 Inherits:一個 aspx 可能 inherits 多個 class 嗎? 多個 page 可能 inherits 一個 code behind 嗎?
a: c# 中不能多重繼承。 但多個不同 aspx 肯定能 share 一個 code behind ---- 哪怕 page 里的 server control 不一樣。
6. @Assembly 和 csc /r 和 vs.net 項目中 reference 的關系是什么? a: 需要同時使用 ide 和手工編譯的人最清楚了。;-(
7. web control 和 html control 在 performance 上有區別嗎? a: 文檔上總說 beta1 拒絕 performance 測試;-)
8. 對 asp.net 的請求是由哪個 isapi extension 處理分發的? a: xspisapi.dll 在 iis mmc 中改 如果有自己寫的繼承 IHttpHandler 的東東,知道這些就有用了。
9. 這個 isapi extension 實際上把請求 forword 到哪個 process? a: xspwp.exe
10 如果使用外部進程維護 session,這個進程是什么? a: aspstate.exe 在 config.web 里面修改設置,可以把 session 放在其它機器上,甚至 sql 里。 這樣就可以直接支持 web farm 了。 但 session 變量如果是 object,就會有個 serialize 的過程,很耗資源。 如何讓你的 object 更好地支持 serializable interface 是個比較大的話題, 實在敲不動的說。
11 如何自己做個 httphandler? 能想出它有什么實際用處嗎? a: 實現 IHttpHandler 做出自己的 handler 很簡單,但很有用,比如當用戶請求一些 特殊文件時,比如 *.log,你可以在 config.web 中設置定向到你自己的 handler 上, 讓它做處理。
12 談談 HttpModule a: 問題 11 的延伸
13 如何在 VS.NET 中 debug asp.net 應用? a: attach process
14 如果你通過繼承 System.Web.UI.Control 寫了個 Custom Control, 如何加上對 client-side script 的支持? a: 沒什么可說的。
15 在 aspx 頁面中放上一些 TextBox, ListBox 等等 Web Control, 但在 code-behind 中并不定義它們,是否可能使用這些 control? a: 能。通過 page.controls, or form.controls, or container.controls whatever... 這樣你可以做出完全不同的 web UI,share 一個共同的 code behind, 做出真正 generic 的應用。
|