1. 程式人生 > >ASP.NET的執行機制

ASP.NET的執行機制

客戶端執行一種特殊的軟體,叫Web瀏覽器。它的工作方式是:當用戶鍵入網址,它會發送一個請求給遠端的伺服器主機,比如我們訪問 http://www.a.com/1.aspx 那麼它會告訴伺服器:
HTTP 1.0
GET 1.aspx
HOST www.a.com
伺服器端有一個程式在監聽來自客戶的請求,這個程式叫 Web Server。典型的,IIS承擔了這個工作。
於是伺服器聽到了客戶機的請求,它知道客戶機請求的是 1.aspx,而 aspx 是一個需要 ASP.NET 動態解析的指令碼,於是它呼叫 ASP.NET 解析程式(ASP.NET 解析程式可以看作 IIS 的一個外掛,在早期版本內,這個外掛叫 ISAPI,現在實現的機制變的複雜)
ASP.NET 知道它請求的是 1.aspx,於是在磁碟上的某個相對路徑上找到這個檔案,執行。
最後會合成一個 HTML 程式碼。
比如說:
<html><body><form action=2.aspx><input id=textbox1 type=textbox /><submit value="ok"></form></body></html>
IIS 接收了 ASP.NET
,並且回答:
HTTP 1.0 200 OK
Date: Mon,1 Jan 2010 00:00:00 GMT
Content-Length: 500

<html><body><form action=2.aspx><input id=textbox1 type=textbox /><submit value="ok"></form></body></html>
客戶端瀏覽器接收到資料,於是將 HTML 程式碼顯示出來。比如看到 <input> 就會畫一個文字框,看到 <table> 就畫一個表格。

這時候使用者輸入一個文字,比如 hello world,並且單擊 OK 按鈕提交。

瀏覽器就會發送另一個請求:
HTTP 1.0
POST 2.aspx
HOST www.a.com

textbox1=hello%20&submit=ok
伺服器端就知道了,於是再呼叫 ASP.NET
ASP.NET會自動執行2.aspx
並且產生 Forms 物件,並且將textbox1=hello%20&submit=ok填入:
Forms["textbox1"] = "hello world"
Forms["submit"] = "ok"

你的指令碼就看到了這個值,並且做出處理,比如寫入資料庫。
然後再返回客戶端。


客戶端和伺服器端就像我們MSN聊天那樣一應一答。

至於“控制元件”、“事件”這些全部是 ASP.NET 變的魔術而已。

關於 HTTP 稍微詳細地介紹,你可以先看下:http://baike.baidu.com/view/9472.htm