1. 程式人生 > >ASP.NET網路程式設計學習第一步:清晰概念

ASP.NET網路程式設計學習第一步:清晰概念

    在開始文章之前,先講一些閒言。之所以學習.net網頁程式設計,主要是因為自己喜歡製作網頁的過程,並且享受用html程式碼來完成突如其來的idea的過程,但是完成了網頁別人不能使用也是一種遺憾,所以就得靠其他知識了,其中就包括使用.net進行網頁製作。需要說明的是,我是一個初學者,在弄清楚這部分知識之後,將自己對於這部分知識的理解以及學習過程中遇到的問題寫下來,供大家參考。必不可免,自己會有一些學習上的錯誤,如果讀者在參考過程中發現這些錯誤,歡迎指正。

    第一步的學習,必須清晰相關概念。

    首先,傳輸相關概念的解讀。相對而言,網站網頁比較容易理解,網站是指網頁的集合,可以方便地對網頁進行管理。網頁是用html等工具製作的用於展示特定內容的文件,其可分為靜態頁和動態頁。

靜態頁內容是預先確定的,並存儲在Web伺服器或者本地計算機/伺服器之上。動態網頁,是取決於由使用者提供的引數,並根據儲存在資料庫中的網站上的資料中建立的頁面。通俗地講,靜態頁是照片,每個人看都是一樣的,而動態頁則是鏡子,不同的人(不同的引數)看都不相同。

    本地客戶端或本地瀏覽器均是指使用者(也就是我們)正在使用的電腦上的瀏覽器,比如ie、firefox、Google等;web伺服器一般指網站伺服器,是指駐留於因特網上某種型別計算機的程式,可以向瀏覽器等Web客戶端提供文件,也可以放置網站檔案,讓全世界瀏覽;可以放置資料檔案,讓全世界下載。目前最主流的三個Web伺服器是Apache、Nginx、IIS。(web

伺服器概念是我從百度百科上貼上過來的,概念中的web客戶端指的是上文所說的本地客戶端或本地瀏覽器)簡單來說,使用者訪問一個網頁的過程如下圖所示:

    圖中的文件一般是指網頁,所以我們在完成一個頁面(比如說index.html)之後,為了讓其他人可以瀏覽,必須將其上傳至特定web伺服器。其他使用者通過使用瀏覽器,向伺服器發出web請求,伺服器找到index.html檔案,然後將其傳送到使用者的瀏覽器,瀏覽器通過解釋html程式碼,將整個頁面呈現出來。而我們使用網頁編輯工具,比如sublime text或者Dreamweaver編輯好頁面之後,直接在本地瀏覽器上觀看的過程和上述過程沒有任何聯絡,初學者需要注意。

    讀到這裡,應該比較清楚知道web伺服器的作用了。Web伺服器是一段程式,在客戶端請求之後為客戶端提供文件或其他資料檔案。這種簡單解釋對於之後理解Apache和IIS會有幫助。

    之前所說,三個主流web伺服器分別是Apache、IIS和Nginx,Nginx適用於linux和Unix系統,故此本文將不介紹。IIS支援ASP語言環境,本文將重點介紹IIS,並對Apache和IIS進行比較。

    IIS(Internet InformationServer,網際網路資訊服務)是微軟公司的web伺服器,其是一種Web(網頁)服務元件,其中包括Web伺服器、FTP伺服器、NNTP伺服器和SMTP伺服器,分別用於網頁瀏覽、檔案傳輸、新聞服務和郵件傳送等方面,它使得在網路(包括網際網路和區域網)上釋出資訊成了一件很容易的事。

    Apache和IIS比較:

    如果是基於Linux平臺的話,那不必多說自然是Apache了,因為IIS只能在Windows環境下執行,而Linux+Apache的整體效能、安全性、通用性也都強於Windows 2003+IIS 6.0,不過如果在Windows 2003的伺服器上,IIS 6.0和Apache 2.2.6到底哪個效能最好呢?有大神做過測試,如果一個網站的大部分頁面都是靜態頁面,那麼Apache和IIS兩者效能基本相同。而如果動態頁面居多,那如果都在windows 2003伺服器上,微軟IIS比Apache效能好,但是Apache比較穩定,而IIS有時假死。對於其功能的詳細說明和比較,本文將不再贅述,有興趣的讀者可以參考“一夢三四年”的部落格:“web伺服器之IIS,apache,tomcat三者之間的比較”,地址為:http://1035054540-qq-com.iteye.com/blog/1278803.

    IIS配置:

在配置完成之後,在瀏覽器輸入欄中輸入:192.168.191.1:81(本機ip+埠,埠預設為80,此處我將其設計為81,對測試結果不影響),就可以預覽之前完成的頁面。此時,用另一臺電腦,ip任意,都可訪問該網頁。(注意:必須關閉配置電腦的防火牆,其他電腦才可訪問)這個時候,如果用配置電腦中的瀏覽器直接訪問,那麼配置電腦既是web伺服器,也是客戶端;如果用其他電腦訪問,那麼其他電腦是客戶端,配置電腦是伺服器。


    其次,是對程式碼相關概念的解讀。這些概念包括:HTML程式碼、JS程式碼、HTML控制元件、HTML伺服器控制元件、Web伺服器控制元件以及他們的區別。

    1、HTML程式碼:

    HTML是指超文字標記語言,是構成網頁文件的主要語言。HTML的結構包括頭部(Head)、主體(Body)兩大部分,它是一種描述性文字,由HTML命令組成,用來說明文字、圖形、動畫、視訊等在網頁上如何顯示。需要說明的是,HTML程式碼需要瀏覽器來解讀才能將內容顯示給使用者。

    2、JS程式碼:

    JS即Javascript,Javascript是一種由Netscape的LiveScript發展而來的指令碼語言,主要目的是為了解決伺服器終端語言,比如Perl,遺留的速度問題。當時服務端需要對資料進行驗證,由於網路速度相當緩慢,只有28.8kbps,驗證步驟浪費的時間太多。於是Netscape的瀏覽器Navigator加入了Javascript,提供了資料驗證的基本功能。(參考百度百科)

    HTML程式碼和JS程式碼的區別:

    不同點:副檔名不同、執行環境不同(HTML:瀏覽器、JS:JS直譯器)

    相同點:都是客戶端程式碼

    3、HTML控制元件、HTML伺服器控制元件以及Web伺服器控制元件及區別:

    讀完之後,可以大概總結出這樣幾點:

    Html控制元件和html伺服器控制元件主要區別在於:Html伺服器控制元件多了runat=”server”屬性;

    Html控制元件執行在客戶端,html伺服器控制元件執行在伺服器端;當ASP.NET 網頁執行時,會檢查標註有無runat 屬性,如果標註沒有設定,那麼Html標註就會被視為字串,並被送到字串流等待送到客戶端,客戶端的瀏覽器會對其進行解釋;如果Html標註有設定runat="server" 屬性,Page 物件會將該控制元件放入控制器,伺服器端的程式碼就能對其進行控制,等到控制執行完畢後再將Html伺服器控制元件的執行結果轉換成Html標註,然後當成字串流傳送到客戶端進行解釋。

    ASP.NET伺服器控制元件和HTML伺服器控制元件不同點主要在於事件處理模型不同。Html標註和Html伺服器控制元件的事件處理都是在客戶端的頁面上,而Asp.net伺服器控制元件則是在伺服器上,舉例來說:

<span style="font-family:Microsoft YaHei;">< input id="Button4" type="button" value="button"runat="server"/></span>

是Html伺服器控制元件,此時我們點選此按鈕,頁面不會回傳到伺服器端,原因是我們沒有為其定義滑鼠點選事件。
<span style="font-family:Microsoft YaHei;"><input id="Button4" type="button"value="button" runat="server"onserverclick="test" /></span>

我們為Html伺服器控制元件添加了一個onserverclick事件,點選此按鈕頁面會發回伺服器端,並執行test(object sender, EventArgs e)方法。
<span style="font-family:Microsoft YaHei;"><input id="Button4" type="button"value="button" runat="server"onserverclick="test" /></span>

是Asp.net伺服器控制元件,並且我們沒有為其定義click,但是我們點選時,頁面也會發回到伺服器端。

    4、伺服器程式碼和客戶端程式碼的區別:

    客戶端程式碼是指執行在客戶端瀏覽器中的程式碼,如html靜態網頁檔案中的javascript或vbscript指令碼程式碼,使用時要用<scriptlanguage=javascript> 和</script>將程式碼括起來,當用戶訪問到伺服器上的這種檔案時,伺服器會將檔案找到後直接發到客戶端,客戶在瀏覽器中就可以看到這種檔案的結果.

如:

<span style="font-family:Microsoft YaHei;"><html>
<body>
<scriptlanguage=javascript>
  document.write("這是用客戶端指令碼程式碼完成的")
</script>
</body>
</html></span>

    伺服器端程式碼是指執行在伺服器上的檔案中的程式碼,如動態網頁asp檔案,也可以是javascript或vbscript指令碼程式碼,但是程式碼要用<script language=JavaScript runat=Server> 和</script>,或者用<%和%>將程式碼括起來,當用戶訪問這種檔案時,伺服器找到後會先在伺服器上執行該檔案,並將執行的結果動態地生成html檔案,再發送到客戶端,使用者在瀏覽中就能看到它的執行結果了.

如:

<span style="font-family:Microsoft YaHei;"><html>
<body>
<%
  Response.write("這是用伺服器端程式碼完成的")
%>
</body>
</html></span>