題外話:去年至今年以來,陸續寫過一些原創的文章了,很多是對原來所做項目的總結。所以並不是很系統很全面,都是針對某個知識點或者某個具體應用寫的,有些朋友建議我把自己的體會寫成一個系統的,這次算是一個嘗試吧,寫得不好的地方請大家盡量拋西紅柿不要丟磚頭。
之所以把這個系列叫做《asp.net夜話》,是有一些原因的,某不厭酒喜茶,酒越喝越糊塗,茶喝多了也仍然能保持清醒。白天很忙,所以每天回到家之後我會沏一壺茶,邊喝茶邊看書,偶有心得體會就會用文字記錄下來,過一段時間之後再將這些文字整理一下,覺得語句還算通暢的就發表在部落格上了。這個關於asp.net系列的文章將會都在晚上完成,所以我叫它《asp.net夜話》。這個系列偏重於實際於asp.net開發實戰中的理論和經驗方面的介紹。
本系列文章中會用到Macromedia Dreamweaver 8中文版、Microsoft Visual Studio 2005中文版和Microsoft SQL Server 2005中文版,請先安裝好相關軟體。
好了,開始我們的正題。
在今天我主要要介紹的有如下知識點:
XHTML語言
靜態網頁
動態網頁
WEB伺服器
Asp.net開發的預備知識
另外在看本節時,我可能會用到Macromedia Dreamweaver 8中文版,如果有條件,在自己的電腦上安裝一個會獲得更好的體驗。
XHTML語言
在網頁開發的早期,基本上都是使用HTML語言開發的,它因為文法要求比較鬆散,雖然對開發人員來說比較方便,但是機器處理起來比較困難,所以在HTML的基礎上增加了XML的要求,這就形成了XHTML語言。XHTML說白了就是符合XML標準的HTML語言。目前的版本的Macromedia Dreamweaver和Microsoft Visual Studio都支援XHTML開發。
以下是Dreamweaver建立的空HTML頁面:
以下是Microsoft Visual Studio2005建立的空白aspx頁面:
注意用紅線標出的部分,上面的表示我們建立的是符合XHTML標準的頁面。之所以要提到這些,是因為經常遇到一些初學者寫出的頁面不符合標準在Visual Studio2005中無法在視圖介面中查看介面的效果。
靜態網頁
早期的網頁都是使用靜態網頁的,所謂的靜態網頁就是在網頁中不包含有需要在伺服器端執行的代碼。比如一個含有javascript特效的HTML網頁或一個含有flash的HTML網頁,它們雖然在網頁呈現的效果會“動”,甚至還有運行代碼,但是都是在用戶端執行的代碼,因而算不上動態網頁面。
靜態網頁的好處是伺服器只需要簡單地將網頁HTML創送給瀏覽器就行了。靜態缺點是維護起來困難,不能使用資料庫帶來的好處。
動態網頁
動態網頁是網頁中包含有需要在Web伺服器執行的代碼。當我們向Web伺服器請求一個動態網頁的時候,對於頁面的HTML代碼部分,Web伺服器直接傳送給瀏覽器了,而對於需要在Web伺服器執行的代碼,自然是Web伺服器執行該部分代碼並將最終的執行結果也就是HTML代碼傳送給瀏覽器,因為瀏覽器不認識動態代碼。也就是不論以何種語言編寫的動態網頁,到達瀏覽器的時候都是HTML代碼。
當然不同的程式設計語言編寫的動態網頁,Web伺服器會以不同的方式運行這些代碼,更專業一點的說法是Web伺服器會交給不同的程式去執行這些代碼,這些執行代碼的程式我們稱之為指令碼引擎。Web伺服器將這些指令碼引擎的執行結果發送給瀏覽器。目前常見的動態網頁jsp、asp、php及asp.net等。
Web伺服器
Web伺服器是用來接受客戶瀏覽器請求的,根據用戶端瀏覽器請求決定如何顯示網頁內容。當我們開啟一個網頁或者其它檔案時,Web伺服器會設定決定如何將該檔案的內容交給用戶端。
目前比較流行的Web伺服器有IIS(Internet Information Server)和Apache。前者是微軟開發的,具有微軟一貫的使用簡單的特點,它運行Windows作業系統上,而Apache是一個開源軟體,有Windows和Linux等系統下版本。我們做asp.net開發主要是使用IIS。
注意在某些系統安裝時,預設安裝可能沒有安裝IIS,需要我們手動安裝。具體步驟如下:
開啟控制台,找到“添加/刪除Windows組建”,點擊開啟介面,如下:
選中“Internet資訊服務(IIS)”選項,放入系統安裝盤,點“下一步”就可以安裝了。
在伺服器上部署asp.net網站的時候,需要.net的運行環境.net framework, .net frameworkle類似於Java的JDK,包含有.net程式運行環境和命令列編譯工具。如果伺服器上沒有安裝.net framework,這就需要從微軟網站下載,下載網址是:http://msdn2.microsoft.com/zh-cn/default.aspx。還需要注意的是如果先安裝.net framework再安裝IIS的話,需要運行一個命令向IIS註冊.net framework,這個命令可以在系統磁碟分割去找,假如作業系統安裝在C盤並且安裝的.net framework的版本為2.0的話,那麼這個檔案的路徑就是:C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/aspnet_regiis.exe,在“運行”視窗輸入:“C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/aspnet_regiis.exe –I”,如:
點擊“確定”即可完成註冊。
我們不妨再對伺服器進行稍微深入一點的探索,我們運行IIS軟體,會看到如下介面:
在“預設網站”節點上點擊滑鼠,在彈出的菜單中選擇“屬性”,會看到如下介面:
我們會看到共有8個選項卡,分別是“網站”、“ISAPI篩選器”、“主目錄”、“文檔”、“目錄安全性”、“HTTP頭”和“自訂錯誤”及“ASP.NET”選項卡。這裡介紹幾個常用來進行配置的選項卡。
“網站”選項卡:網站選項卡是用來配置一些常規屬性的,比如我們的網站使用的連接埠號碼、IP地址等資訊的。預設Web伺服器的連接埠號碼是80,不建議修改。
“主目錄”選項卡:
在“主目錄”選項卡我們可以設定網站或者虛擬目錄的實體路徑,還可以設定動態網頁的執行引擎。點擊“配置”選項卡,介面如下:
從上面的可以看到,當我們正確安裝了IIS和.net framework之後,aspx頁面就能被正確執行了。選中.aspx點擊編輯,會彈出一個新介面,如下面:
可以看出.aspx頁面都是交由aspnet_isapi.dll執行的。如果有自定的檔案,需要交由伺服器特殊處理,我們可以在這裡配置。
“文檔”選項卡:
這個介面用於設定網站或者虛擬目錄的起始頁。所謂起始頁,就是當我們開啟一個網站或者虛擬目錄的時候,如果沒有特別指定訪問哪個網頁,Web會開啟的一個頁面。比如我們在瀏覽器地址欄裡輸入www.163.com,會開啟網易的首頁,其實我們並沒有指定要訪問哪個頁面,伺服器採用一種預設機制來開啟某個特定頁面。在上面的介面中,我們設定了多個頁面作為起始頁,IIS會按照從上到下的順序檢查我們的網站或者虛擬目錄有沒有相應的頁面。如果找到了合格網頁,那麼停止繼續尋找,把當前頁面傳送給用戶端瀏覽器。
“ASP.NET”選項卡
如果當前機器上安裝了多個.net framework版本,需要設定每個網站或者虛擬目錄的asp.net版本,這個需要與開發時所使用.net版本一致。Visual Studio2002開發的asp.net網站需要.net framework 1.0支援,Visual Studio2003開發的網站需要.net framework 1.1支援,Visual Studio2005開發的網站需要.net framework2.0支援。由於本人的機器上安裝了.net framework 1.1和.net framework2.0,所以下拉框中有兩個.net framework的版本供選擇。如:
另外,還介紹一個特殊的檔案夾。它位於系統磁碟分割下,如:
因為我的系統磁碟分割是C,並且IIS使用了.net framework2.0,所以這個檔案夾是C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files。這個檔案夾是用來存放我們的asp.net網頁產生的dll檔案的。我們可以用Dreamweaver建立一個簡單的asp.net網頁Test.aspx頁面,步驟如下:
開啟Dreamweaver,選擇“建立”,並且依次選擇“動態網頁”、“asp.net C#”,如:
無需輸入任何代碼,將這個檔案儲存在系統磁碟分割下的Inetpub/wwwroot目錄(因為本人的系統磁碟分割為C,所以是C:/Inetpub/wwwroot),檔案名稱為Test.aspx。然後在瀏覽器輸入:http://localhost/test.aspx,將會看到一個空白頁面。不過我們此時再看C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/Temporary ASP.NET Files這個檔案夾,此時多了一個子檔案夾root,如:
我們繼續開啟這個檔案夾,到最後會發現如下情形:
也就是對於我們剛剛建立的那個空白的Test.aspx頁面,經過用戶端瀏覽器開啟之後,會在相應的.net framework運行版本下產生dll檔案。
利用ILDASM工具開啟那個dll檔案,我們可以看到這個dll檔案內部的資訊(註:ILDASM是隨著.net framework一同發布的、使用者查看.net代碼編譯後產生的IL中間代碼的工具)。
可以看見這個dll檔案中包含有ASP.test_aspx。
其實在我們第一次開啟asp.net網頁的時候,相應的網頁會被編譯成dll檔案,然後JIT來運行這個dll檔案。一旦這個檔案再次發生變化,下次第一個請求這個網頁時又會被編譯成dll檔案。並且為了防止檔案名稱重名,產生的dll檔案採用了隨機命名。
這也就是asp.net網頁不同於asp或者php的地方:asp.net頁面在第一次請求的時候會被編譯成dll檔案,由JIT編譯執行,因而aspx頁面第一次被開啟的時候比較慢,而以後執行的時候就會比較快,因為以後執行的時候除非修改了代碼否則就沒有必要重新生.dll檔案了;而asp和php網頁每次啟動並執行時候都會被解釋執行,因而asp.net網站的運行速度要快。
說明:本文由周公原創,原文發表地址是:http://blog.csdn.net/zhoufoxcn/archive/2008/09/12/2915811.aspx,本注意,因為個人空間大小和下載速度受限,所以以後不再提供從本人主機上的,可以到www.verycd.com下載《ASP.NET夜話》的測試版視頻教程。地址是:http://www.verycd.com/topics/2730883/ ,線上觀看網址是:http://developer.51cto.com/developer/aspdotnet/
Asp.net夜話系列文章:
- Asp.net夜話之一 :asp.net介紹
- Asp.net夜話之二 :asp.net內建對象
- asp.net夜話之三 :表單和控制項
- Asp.net夜話之四 :Visual Studio 2005中容易被忽略的技巧
- asp.net夜話之五 :Page類和回調技術
- asp.net夜話之六 :asp.net基本控制項
- asp.net夜話之七 :ADO.NET介紹
- asp.net夜話之八 :資料繫結控制項
- asp.net夜話之 九:驗證控制項
- asp.net夜話之 十:複合控制項和母板頁
- asp.net夜話之十 一:web.config詳解