ASP.NET運作模式

整理我所認識的ASP.NET。

前一陣子被問了這樣一個問題,

平時寫程式的時候倒都沒特別去注意,突然被問到一時也說不出一個很確定、完整的答案,

整理一下,下次被問到的時候,以備能夠肯定地回答。

ASP.NET是使用Code Behind的方式來進行撰寫的,

撰寫程式的時候分成兩個部分,

一部分是網頁的邏輯部分,分割在.vb檔或是.cs檔裡面,

一部分是網頁的標籤,放置在.aspx檔案裡面。

執行的時候,程式會編譯成一個Class物件來處理頁面的要求,

而其結構會是.aspx去繼承.vb或.cs檔的類別,

由這個類別去處理頁面的呈現及要求,

這樣的模式導致ASP.NET 1.0/1.1的時候需要在.vb或.cs檔案去宣告一個標籤的標頭,

造成一些頁面異動的不便,

在ASP.NET 2.0所推出的Code Beside,修正了這個不便,

原理是利用了部分類別,

實際上,.vb或是.cs檔還是需要宣告才能得知頁面上的標籤有什麼,

只是這個動作變成自動產生,而且是在編譯網頁的時候自動產生,利用部分類別使我們看不到這部分的程式碼,

因此,原本.aspx只是產生一個類別並且去繼承.vb、.cs的動作會變成產生一個部分類別的程式,並且產生繼承的類別。

之前在開發的時候,我一直抱持一個疑問,

ASP.NET 2.0不是使用部分類別嗎?可是怎麼頁面上如果要執行.vb、.cs上的程式,那其要存取的成員程式的可見度就必須是protected以上,

這樣的行為不就證明了這是繼承關係,

這樣的疑問也在整理這些的時候也得到了解答,不過這樣的解釋也只是自己主觀的認為,

之前查的資料量實在不夠充足,但是,這樣至少已經合理地解釋了我的疑問了。