版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1第一章網(wǎng)頁程式設(shè)計概論在本書的第一章中,我們將介紹幾個關(guān)於網(wǎng)頁程式設(shè)計有關(guān)的專有名詞,例如:『HTML』、『JavaScript』、『XML』、『ASP.NET』等等。同時因為ASP.NET屬於.NETFramework的一環(huán),故本章也會介紹.NETFramework的觀念,本章內(nèi)容將有助於讀者快速建立網(wǎng)頁程式設(shè)計的整體概觀。2大綱1.1 WWW與HTML1.1.1 WWW1.1.2 Web2.01.1.3 WWW網(wǎng)站架構(gòu)1.2 網(wǎng)頁相關(guān)技術(shù)1.2.1 客戶端技術(shù)1.2.2 伺服器端技術(shù)1.3.NETFramework與VisualStudio1.4ASP.NET與VWD1.5類別/物件1.6本章回顧31.1 WWW與HTML在Internet上有著各式各樣的服務(wù)及應(yīng)用,例如:Email、FTP、WWW等等。其中影響最大的就是WWW?!篧WW』是WorldWideWeb的縮寫,中文翻譯為全球資訊網(wǎng)。4WWW是由歐洲核子研究中心(CERN)所研發(fā)的一種搜尋結(jié)構(gòu),於1993年正式對外開放,它取代了傳統(tǒng)電腦與網(wǎng)路採用樹狀結(jié)構(gòu)搜尋資訊的方式,重新定義了一種網(wǎng)狀的資料搜尋結(jié)構(gòu),如此一來,便免除了樹狀結(jié)構(gòu)搜尋資料失敗時,必須返回原搜尋點再往下搜尋的缺點。
除此之外,WWW可以連結(jié)各種Internet的其他種類服務(wù)(例如HTTP、FTP協(xié)定),並由於我們可以在WWW之上,建立起圖文並茂的超文件(HyperText)及超媒體(HyperMedia)網(wǎng)頁,透過超鏈結(jié)(HyperLink)功能,建立起網(wǎng)頁與網(wǎng)頁溝通的橋樑,因此帶動了網(wǎng)路的流行,現(xiàn)在大家使用瀏覽器來瀏覽的網(wǎng)路服務(wù)就是建構(gòu)在WWW的基礎(chǔ)之上。
近年來,以Google為首的各種廠商逐漸推出以瀏覽器為執(zhí)行環(huán)境的Web軟體(例如WebMail),搭配雲(yún)端運算架構(gòu)的流行與網(wǎng)路頻寬的加大,使得未來所有的桌面軟體都可能出現(xiàn)Web模式的類似軟體。因此,WWW對於資訊產(chǎn)業(yè)而言,它是不斷在成長與轉(zhuǎn)變的。1.1.1 WWW51.1.2 Web2.0全球資訊網(wǎng)歷經(jīng)10年演變,其中包含了.com網(wǎng)站公司的崛起與泡沫化?,F(xiàn)今,全球資訊網(wǎng)正進行著新型態(tài)的演化,在『聚沙成塔』的觀念下,符合Web2.0精神的網(wǎng)站逐漸成為次世代全球資訊網(wǎng)的主流,也提供了每個人參與網(wǎng)路的無限想像空間?!篧eb2.0』一詞在2004年首度出現(xiàn),它代表著WWW上的新型態(tài),其中包含了一些新型態(tài)的網(wǎng)站、內(nèi)容及服務(wù),也包含了一些新的技術(shù)。事實上,Web2.0在W3C(管理WWW標(biāo)準(zhǔn)的機構(gòu))並無明確的定義,但實際上已被大眾所接受。Web2.0最主要的精神是『參與、互動、分享』,例如現(xiàn)在流行的部落格(Blog)、影音分享網(wǎng)站YouTube、眾人聯(lián)合編輯的維基百科等等,都是Web2.0典型的範(fàn)例。61.1.3 WWW網(wǎng)站架構(gòu)在WWW上最常見的架構(gòu)就是Client/Server架構(gòu),一個最簡單的Client/Server架構(gòu)如圖1-1,瀏覽器(Browser)代表的是客戶端(Client),網(wǎng)頁伺服器(WebServer)代表的就是伺服器端(Server)。圖1-1網(wǎng)頁伺服器架構(gòu)一(只負(fù)責(zé)傳送HTML網(wǎng)頁)71.1.3 WWW網(wǎng)站架構(gòu)瀏覽器具有解讀HTML文件,並將之轉(zhuǎn)換為HTML網(wǎng)頁的能力;HTML是一種網(wǎng)頁設(shè)計語言,一份HTML文件其實就是一個網(wǎng)頁,換句話說,我們所看到的網(wǎng)頁就是HTML文件經(jīng)由解讀後的結(jié)果。最簡單的網(wǎng)頁伺服器至少必須具備以下3種能力:可接收透過HTTP協(xié)定所傳來的網(wǎng)頁要求。能夠搜尋與讀取伺服器端所存放的HTML檔案。具有透過HTTP協(xié)定將網(wǎng)頁回傳給客戶端(瀏覽器)的能力。當(dāng)網(wǎng)頁伺服器安置妥當(dāng)後,一旦我們在瀏覽器網(wǎng)址列中輸入所要求的網(wǎng)址及網(wǎng)頁名稱,瀏覽器便建立連線並發(fā)出HTTP需求,請求遠(yuǎn)端的網(wǎng)頁伺服器回傳網(wǎng)址所標(biāo)示的HTML檔案。網(wǎng)頁伺服器接收到此需求後,便搜尋檔案系統(tǒng),並將所要求的HTML檔案以HTTP方式回傳給瀏覽器,接著切斷此次連線。最後,瀏覽器依據(jù)所取得的HTML檔案內(nèi)容加以解讀成為我們所看到的網(wǎng)頁,這就是使用者瀏覽網(wǎng)頁時,瀏覽器與網(wǎng)頁伺服器的工作流程。81.1.3 WWW網(wǎng)站架構(gòu)除了提供HTML檔案傳輸?shù)年柎壕W(wǎng)頁伺服器外,有些功能比較強大的伺服器,還可以執(zhí)行PHP、ASP、ASP.NET、JSP、CGI等伺服器端的程式,其網(wǎng)頁伺服器結(jié)構(gòu)則如圖1-2。圖1-2網(wǎng)頁伺服器架構(gòu)二(先執(zhí)行傳統(tǒng)ASP程式,再回傳HTML網(wǎng)頁)91.1.3 WWW網(wǎng)站架構(gòu)通常要求我們在瀏覽網(wǎng)頁時必須輸入使用者代號與密碼的網(wǎng)站大多屬於這一類型的網(wǎng)頁伺服器,其原理與單純的網(wǎng)頁伺服器類似,同樣是透過HTTP協(xié)定來要求伺服器做某些事並回傳一個HTML格式的封包。只不過此時所要求的服務(wù),可能不只是一個單純的HTML檔案,而是一個ASP、ASP.NET、PHP或JSP檔案,伺服器會先執(zhí)行這個ASP、ASP.NET、PHP或JSP檔案內(nèi)的程式碼或編譯後的程式碼例如程式碼中可能要求從資料庫中取得使用者代號與密碼等資料,所以此類網(wǎng)頁伺服器通常具有與資料庫連接的能力,無論如何,當(dāng)這些程式碼執(zhí)行完畢之後,必須產(chǎn)生一個HTML格式的資料,並交由網(wǎng)頁伺服器透過HTTP協(xié)定傳回這些HTML格式的資料,這是因為瀏覽器除了HTML格式的資料外,其他格式的資料一律無法解讀。在上述的範(fàn)例中,我們可以瞭解2件事(1)瀏覽器可以解讀HTML格式的資料(2)有些程式碼必須由伺服器端執(zhí)行。101.1.3 WWW網(wǎng)站架構(gòu)事實上,並非任何形式的程式碼都無法被瀏覽器解讀或執(zhí)行,為了減輕伺服器的負(fù)擔(dān),專家們發(fā)展了一些可以由瀏覽器執(zhí)行的程式,此類程式最著名的有JavaScript/JScript與VBScript等,不過,由於這些程式是交由客戶端瀏覽器來執(zhí)行,為了保障每一個瀏覽者的電腦安全,因此這類程式必須取消部分功能(例如:不允許建立檔案),雖然如此,JavaScript/VBScript程式仍然造就了網(wǎng)頁多樣化的效果,尤其是JavaScript搭配新的AJAX技術(shù)可完成的網(wǎng)頁功能與效果更為豐富,不但降低了網(wǎng)站伺服器的負(fù)擔(dān),也使得Web2.0型態(tài)的網(wǎng)站更容易製作。
除此之外,為了使得伺服器端能夠獲得客戶端的某些資料,因此瀏覽器也必須具有送出表單(form)資料的能力。我們將瀏覽器與網(wǎng)頁伺服器的功能整理如表1-1。111.1.3 WWW網(wǎng)站架構(gòu)表1-1網(wǎng)頁架構(gòu)軟體分析121.1.3 WWW網(wǎng)站架構(gòu)聯(lián)合化資訊交換(syndication)聯(lián)合化資訊交換(syndication)是一種資訊傳播方法,透過feeds格式與REST架構(gòu)(WWW採用的建構(gòu)模型)進行傳送,它的優(yōu)點是改善閱讀的時間與效率。
目前較普遍syndication規(guī)格有兩種,分別是2002年推出的RSS2.0與2003年/05年推出的Atom0.3/1.0,兩種格式都使用XML做為資料傳輸格式。Atom擁有比RSS更強大的支援功能和更嚴(yán)謹(jǐn)?shù)亩x,但由於推出時程較晚,目前syndication分享仍以RSS2.0為主。【W(wǎng)eb2.0常用的技術(shù)】Web2.0常使用到的技術(shù)為syndication與AJAX兩種。使用這兩種技術(shù)建置的網(wǎng)站,且該網(wǎng)站符合Web2.0主要精神『參與、互動、分享』,則一般都將之視為Web2.0網(wǎng)站。131.1.3 WWW網(wǎng)站架構(gòu)在各大新聞網(wǎng)站或部落格都可以見到使用RSS的應(yīng)用。例如當(dāng)您訂購了某個新聞網(wǎng)站的RSS之後,則它會自動下載新聞的標(biāo)題,您若對該標(biāo)題感興趣,則可以瀏覽該篇新聞,而不用瀏覽一些不感興趣的新聞,使得我們得以節(jié)省閱讀新聞的時間。AJAXAJAX(AsynchronousJavaScriptandXML),全名是『非同步JavaScript和XML』,它是一種互動式的網(wǎng)頁開發(fā)技術(shù)。AJAX也可以看成是一種撰寫網(wǎng)路應(yīng)用程式的新思維,它使得不用打斷使用者的操作(傳統(tǒng)上會因為等待伺服器回應(yīng)而被打斷),就能動態(tài)地更新網(wǎng)頁內(nèi)不同區(qū)塊的內(nèi)容,而不需更新整個網(wǎng)頁。我們將於第18章深入介紹AJAX以及利用工具製作包含AJAX技術(shù)的網(wǎng)頁。141.2 網(wǎng)頁相關(guān)技術(shù)網(wǎng)頁技術(shù)可分客戶端與伺服器端技術(shù),我們將在本節(jié)中分別加以簡介。151.2.1 客戶端技術(shù)客戶端代表的是瀏覽器,此處所指的客戶端技術(shù)代表可由瀏覽器解讀的格式或可由瀏覽器執(zhí)行的程式。161.2.1 客戶端技術(shù)HTML標(biāo)示語言HTML是一種標(biāo)示語言(MarkupLanguage),也是一種標(biāo)籤語言(TagLanguage)。HTML的標(biāo)示碼以標(biāo)籤來表示,利用標(biāo)籤形容所包含的資料要顯示哪種格式或哪種效果(例如<a>標(biāo)籤代表超鏈結(jié)效果、<b>標(biāo)籤代表粗體格式)。而瀏覽器能夠解讀這些標(biāo)籤所代表的意義,將之轉(zhuǎn)換為實際所看到的網(wǎng)頁效果。
瀏覽器可以直接解讀本地端的HTML網(wǎng)頁,也能夠解讀由網(wǎng)頁伺服器下載的HTML網(wǎng)頁,下面是HTML文件經(jīng)由瀏覽器轉(zhuǎn)換成網(wǎng)頁型式的範(fàn)例。【註】:若欲閱讀由伺服器端回傳給客戶端瀏覽器的HTML格式碼,可以利用【快顯功能表】的【檢視原始碼】指令來達(dá)成。17181.2.1 客戶端技術(shù)撰寫HTML網(wǎng)頁可使用純文字編輯器(例如:記事本),因為HTML文件本身是一個文字檔,但一般我們使用專業(yè)的網(wǎng)頁編輯器來編輯HTML(例如Dreamweaver),因為透過所見即所得的方式配置網(wǎng)頁內(nèi)容比較快速也比較容易。單純的HTML文件,其副檔名為『.htm』或『.html』,而不是『.txt』,若設(shè)定為『.txt』,則瀏覽器會將之視為單純的純文字檔,而顯示標(biāo)籤與內(nèi)容。只有在設(shè)定為『.htm』或『.html』檔時,瀏覽器才會將之視為網(wǎng)頁檔,顯示內(nèi)容與標(biāo)籤效果而不會顯示標(biāo)籤原文。191.2.1 客戶端技術(shù)XML與XHTMLXML(eXtensibleMarkupLanguage)中文翻譯為可延伸標(biāo)記語言。1998年,W3C正式公佈XML的Recommendation1.0版語法標(biāo)準(zhǔn),由表面上看來,XML是標(biāo)記語言的一種,但是嚴(yán)格來講,XML最大的用途為定義其他語言的語法系統(tǒng)。這也正是XML功能強大,受到各方重視的緣故。透過結(jié)構(gòu)和資訊導(dǎo)向,它為不同領(lǐng)域(產(chǎn)業(yè)界、學(xué)術(shù)界和研究單位)的文件,提供統(tǒng)一的描述語法,讓不同領(lǐng)域之間資訊交換的效率大大提升,並且能夠跨平臺進行資訊的整合與資源的共用。XML特別適用於電子商務(wù)應(yīng)用,因為XML擁有自我定義的機制,使得資料在網(wǎng)路傳輸時能夠很容易地在傳送端與接收端做資料交換。此外,由於XML也可使用於資料描述,因此,您可以將它視為一種資料描述語言(metalanguage)。例如:用它來制定元件、記錄以及其他種類的資料結(jié)構(gòu)(例如另一個語言)。201.2.1 客戶端技術(shù)XML也和HTML一樣屬於標(biāo)示語言(MarkupLanguage),但XML不同於HTML對於所有的標(biāo)籤都定義了顯示格式的意義,對於XML而言,顯示格式並不是最重要的,相對地,資料所代表的意義才是最重要的,因此,XML並不負(fù)責(zé)標(biāo)籤顯示的格式。因為XML與HTML是由兩種不同的設(shè)計目的所衍生發(fā)展的兩套語言。使用XML,您可以透過標(biāo)籤來描述資料的結(jié)構(gòu),並且它還允許使用者視描述資料的需要,隨意地制定不同名稱的標(biāo)籤,這和HTML有著極大的差別。
XML身為資料描述語言(metalanguage),因此常用來制定各類文件格式。有些軟體使用XML取代原本使用ini檔來描述文件。例如新版Office、NETFramework的web.config檔都是以XML作為基礎(chǔ)設(shè)定的描述格式,其他軟體無法理解該XML檔案內(nèi)容,但軟體本身可以理解該XML檔案內(nèi)容。除此之外,XML也可以制定軟體間的資料傳送格式,只要雙方軟體能夠解讀標(biāo)籤意義即可,例如製作webservice以及RSS。211.2.1 客戶端技術(shù)<configuration><system.web><membership><providers><addname="WebAdminMembershipProvider"type="System.Web.Administration.…………"/></providers></membership><httpModules><addname="WebAdminModule"type="System.Web.Administration.…………"/></httpModules><authenticationmode="Windows"/><authorization><denyusers="?"/></authorization><identityimpersonate="true"/></system.web></configuration>表1-2使用XML製作的web.config檔(.NETFramework軟體懂得各標(biāo)籤意義)22表1-3使用XML製作的新聞RSS(只有Yahoo網(wǎng)站與RSS閱讀器懂得各標(biāo)籤的意義)<?xmlversion="1.0"encoding="utf-8"?><rssversion="2.0"xmlns:atom="http:////Atom"xmlns:cf="http://.../rss/core/2005"xmlns:blogChannel="http://backend/blogChannelModule"><channelxmlns:cfi="http:///rss/core/2005/internal"cfi:lastdownloaderror="None"><titlecf:type="text">Yahoo!奇摩新聞-運動</title><link>http:////sports/</link><descriptioncf:type="text">Yahoo!奇摩新聞-運動</description><language>zh-tw</language><lastBuildDate>Wed,01Jun201114:55:01GMT</lastBuildDate><atom:updated>2011-06-01T14:55:01Z</atom:updated><ttl>20</ttl><image><url>/i/tw/news/v2/mh_small.gif</url><title>Yahoo!奇摩新聞-運動</title><link>http://</link><width>144</width><height>28</height></image><item><titlexmlns:cf="http://..."cf:type="text">NBA總決賽首場熱火8分之差(中廣)</title><link>http://2sk61.html</link>
</item><item></item><item></item></channel></rss>231.2.1 客戶端技術(shù)除了用來制定文件格式之外,XML甚至可以用來制定另一種語言,例如早期的HTML(HTML4.01版之前)都是採用SGML描述語言制定,而新版的XHTML則是以XML來制定。目前大多數(shù)的瀏覽器與網(wǎng)頁編輯軟體都能夠正確解讀XHTML標(biāo)籤的意義,因為XHTML與HTML標(biāo)籤的意義相同,只不過XHTML規(guī)定的更嚴(yán)格而已。
本書使用VisualWebDevelopers工具開發(fā)的網(wǎng)頁,實際回傳到瀏覽器的HTML標(biāo)籤都是以XHTML為標(biāo)準(zhǔn)的。而ASP.NET的標(biāo)籤則符合XML的規(guī)定?!驹]】簡而言之,XHTML就是新版的HTML,也是規(guī)定較嚴(yán)格的HTML。241.2.1 客戶端技術(shù)JavaAppletJava是一種物件導(dǎo)向程式語言,由Sun公司開發(fā),執(zhí)行Java程式是將Java程式先編譯為中間碼(即ByteCode)的類別檔,待執(zhí)行時,再透過Java虛擬機器(JavaVirtualMachine;簡稱JavaVM或JVM)加以執(zhí)行,由於Sun提供了各種平臺的Java虛擬機器,因此,Java是一種跨平臺的程式語言。
Java提供了Applet機制,程式設(shè)計者可以將程式設(shè)計並編譯為類別檔後獨立於HTML文件外,使用者可以從遠(yuǎn)端下載到瀏覽器並在網(wǎng)頁中加以執(zhí)行,唯一的前提是,瀏覽器必須先安裝Java虛擬機器(JVM)。當(dāng)瀏覽器向Web伺服器要求一個包含JavaApplet的HTML網(wǎng)頁時,首先會將該HTML網(wǎng)頁下載到客戶端,解讀HTML後發(fā)現(xiàn)有<applet>標(biāo)籤,代表要執(zhí)行一個JavaApplet,接著依照標(biāo)籤屬性的指示向伺服器要求下載JavaApplet的類別檔,下載完畢,最後由瀏覽器中的JVM在網(wǎng)頁中執(zhí)行JavaApplet的類別檔,如下圖所示。251.2.1 客戶端技術(shù)圖1-3JavaApplet由客戶端瀏覽器執(zhí)行261.2.1 客戶端技術(shù)【JavaApplet與ActiveX】早期JavaApplet與ActiveX都是在網(wǎng)頁中執(zhí)行複雜程式的機制,其中JavaApplet為Sun發(fā)展的Java所支援,而ActiveX則是由微軟提出的對應(yīng)機制。換句話說,兩者原處於競爭對手。初期,JavaApplet的普及領(lǐng)先ActiveX,因為各類瀏覽器都可以執(zhí)行JavaApplet,而只有在IE瀏覽器中可同時支援兩種機制。
後來微軟自行修改了IE中的JVM,只支援以MicrosoftJ++(一種極類似於Java的程式語言)方式開發(fā)成的JavaApplet,而這種程式無法在非IE的瀏覽器上正確執(zhí)行,並且IE的JVM也無法完全支援以Sun版本開發(fā)的JavaApplet。在此同時,IE瀏覽器的市佔率持續(xù)提高,使得大多數(shù)開發(fā)「網(wǎng)頁中程式」的程式設(shè)計師採用了ActiveX機制。此時,JavaApplet大多只用在網(wǎng)頁中顯示動畫的應(yīng)用。
隨著Flash的流行與普及,JavaApplet連製作動畫的市場也逐漸失去,並且在WindowsXP之後,微軟又不主動提供JavaVM的下載。這使得JavaApplet幾乎完全退出市場。271.2.1 客戶端技術(shù)JavaScript/VBScript/JScriptScript有人將之翻譯為『腳本』,事實上,它與直譯程式的概念更為接近,Script其實指的是一份未經(jīng)編譯的程式原始碼,只有在需要被執(zhí)行時,才透過翻譯程式針對Script中的每一個指令進行解讀及執(zhí)行。Script程式並未限制使用於客戶端或伺服器端,但一般我們?nèi)糁恢vScript程式,通常指的是客戶端使用的JavaScript、VBScript或JScript。JavaScript看似與Java有關(guān),但實際的功能則比Java精簡許多,我們應(yīng)該將兩者視為不同的語言,JavaScript比Java簡單很多,使得一般非程式專精的網(wǎng)頁開發(fā)者也能夠透過JavaScript強化網(wǎng)頁的功能。281.2.1 客戶端技術(shù)VBScript與JScript都是由微軟發(fā)展,VBScript是由傳統(tǒng)VB語法精簡而來,而JScript則是微軟為了與Sun的Java抗衡所自行設(shè)計的Java-like語法,就現(xiàn)實面來說,幾乎所有的瀏覽器都支援JavaScript,而IE則支援JavaScript、VBScript及JScript。而這三種Script都可以內(nèi)嵌在HTML文件中,也可以獨立存在,再透過特殊的HTML標(biāo)籤引入。目前大多以JavaScript為主,尤其是AJAX流行後,JavaScript已經(jīng)站穩(wěn)客戶端程式的重要地位?!綱B與VBScript】本書所提之VB與VBScript可能有三種,其中,VBScript是IE瀏覽器可直譯執(zhí)行的程式語言。VB或傳統(tǒng)VB則指的是舊版VisualBasic6程式語言,VB.NET則指的是架構(gòu)在.NetFramework的新版VB程式語言?!綣avaScript為物件基礎(chǔ)語言】JavaScript雖然也可以使用物件的屬性與方法,但它不提供繼承機制,所以JavaScript只能算是物件基礎(chǔ)語言,而非物件導(dǎo)向語言。291.2.1 客戶端技術(shù)CSSCSS(CascadingStyleSheet)是一種樣式表,由W3C制定標(biāo)準(zhǔn),目前的標(biāo)準(zhǔn)為CSS3,不過最新的IE8/9只支援部份的CSS3,因此大多數(shù)網(wǎng)站仍使用CSS2來設(shè)計樣式。CSS樣式表可以彌補HTML的不足,所謂『樣式表』其實是一堆網(wǎng)頁效果設(shè)定的集合,透過HTML的特殊標(biāo)籤或?qū)傩跃涂梢砸眠@些事先定義好的設(shè)定值,享受相同設(shè)定重複使用的優(yōu)點。在本書中,我們將會發(fā)現(xiàn),ASP.NET大量使用CSS來設(shè)計網(wǎng)頁元件的顯示細(xì)節(jié)。例如按鈕或文字標(biāo)籤的位置、以及文字的大小等等。301.2.1 客戶端技術(shù)AJAXAJAX也屬於客戶端的技術(shù)之一,但它並不是單一的技術(shù),而是一系列相關(guān)技術(shù)的總稱,包含XHTML、CSS、JavaScript、XML、DOM、XMLHttpRequest等等,其主要程式皆由JavaScript開發(fā),搭配某些特殊的元件來完成。其中大多數(shù)的技術(shù)已經(jīng)在前面解釋過了,而DOM與XMLHttpRequest的解釋如下:DOM:DOM是一種文件模型,提供了以樹狀結(jié)構(gòu)與節(jié)點的存取模式,使得JavaScript的程式碼更精簡,並更有效率地存取文件資料。例如存取XML檔案就可以透過XMLDOM來完成。XMLHttpRequest:XMLHttpRequest是一個物件,可用來與Web伺服器進行非同步數(shù)據(jù)交換。暫時我們對AJAX的解釋到此為止,其餘的介紹留待第18章時再進行詳盡的介紹,現(xiàn)在您只要先理解AJAX是一些客戶端技術(shù)的總稱即可。事實上,ASP.NET2.0並未包含AJAX,而是另外以ASPNETAJAX存在,直到ASP.NET3.5才將之納入。但AJAX嚴(yán)格來說,仍屬於客戶端技術(shù)。311.2.2 伺服器端技術(shù)伺服器端代表的是網(wǎng)頁伺服器(WebServer),此處所指的伺服器技術(shù)代表由網(wǎng)頁伺服器執(zhí)行的各類技術(shù),但實際上不論您採用的是哪一種技術(shù),其最後產(chǎn)生的結(jié)果都是HTML(可內(nèi)嵌其他客戶端技術(shù))格式的文件,然後將此文件回傳給瀏覽器,解讀為我們看到的網(wǎng)頁型式。CGICGI(CommonGatewayInterface)被翻譯為『共同閘道介面』,它是早期由伺服器端執(zhí)行程式的一種策略。嚴(yán)格來說,CGI是一種介面,用來在HTTP伺服器與閘道程式之間進行溝通,因為每個傳送到伺服器的資料都會由一個閘道程式來處理,CGI就是負(fù)責(zé)這兩者之間的資料傳輸介面。
在使用CGI技術(shù)的伺服器網(wǎng)站中,CGI程式屬於一種外部程式,您可以使用熟悉的語言(例如C/C++)進行開發(fā),而這個程式同樣必須先經(jīng)過編譯為執(zhí)行檔,存放在伺服器端以備執(zhí)行。321.2.2 伺服器端技術(shù)以C/C++語言所開發(fā)的CGI程式為例,傳統(tǒng)C/C++程式的標(biāo)準(zhǔn)輸入裝置(stdin)為鍵盤,標(biāo)準(zhǔn)輸出裝置(stdout)為螢?zāi)?,而CGI程式由於是透過CGI介面?zhèn)鬏斮Y料,因此,標(biāo)準(zhǔn)輸出入裝置(stdin與stdout)則改為CGI介面,程式可以由CGI介面取得使用者透過表單(Form)傳送過來的資料,也可以透過CGI介面取得相關(guān)的環(huán)境變數(shù)(EnvironmentVariables),同時也會將回傳的HTML文件寫入到CGI介面,然後由網(wǎng)頁伺服器回傳給瀏覽器。其架構(gòu)如圖1-4所示。圖1-4CGI運作架構(gòu)圖331.2.2 伺服器端技術(shù)
ASP/JSP/PHP/ASP.NET相對於CGI而言,ASP/JSP/PHP是中期比較流行的伺服器網(wǎng)頁程式技術(shù)。JSP(JavaServerPage)使用的是Java語法,並且能夠匯入(import)眾多Java的類別函式庫;而PHP則使用的是C或C++語法,並且提供大量存取MySQL資料庫的函式庫。至於ASP.NET則可以說是最新的伺服器網(wǎng)頁程式技術(shù)。
ASP(ActiveServerPage)是由微軟所發(fā)展,正如同前面所說的,廣義的Script並不侷限於客戶端或伺服器端,在ASP中,您可以選擇使用VBScript或JScript語法來撰寫程式,但大多以VBScript語法來撰寫ASP網(wǎng)頁程式。ASP最終的版本為3.0(本書稱之為傳統(tǒng)ASP),而新一代的ASP則改為ASP.NET,版本則由1.0,1.1,2.0,3.5,發(fā)展到現(xiàn)今的ASP.NET4.0版(也就是本書重點)。
ASP.NET能夠使用VB.NET、C#等由.NETFramework所提供的程式語法來開發(fā)。在副檔名方面,傳統(tǒng)ASP使用的是『.asp』,而ASP.NET使用的則是『.aspx』。
1.2.2 伺服器端技術(shù)在這裡還是要提醒讀者,無論您在伺服器端使用哪一種技術(shù)來撰寫程式,其結(jié)果都必須回傳給瀏覽器,而回傳給瀏覽器的內(nèi)容則必定為HTML格式(當(dāng)然也可以內(nèi)附一些由客戶端執(zhí)行的JavaScript/VBScript程式碼),因為瀏覽器只認(rèn)得HTML標(biāo)籤與屬性。例如下面的ASP範(fàn)例(ch1_01.asp)將會回傳與1-7頁相同的HTML標(biāo)籤與屬性。3435<%Response.write("<html>")Response.write("<head>")Response.write("<title>HTML網(wǎng)頁效果示範(fàn)</title>")Response.write("</head>")Response.write("<bodybgcolor='PINK'style='BACKGROUND-COLOR:#FFFFCC'>")Response.write("<b><fontsize='5'color='#0000FF'>陳錦輝的著作</font></b>")Response.write("<ul>")Response.write("<li><b><fontcolor='#9966FF'size='4'>程式設(shè)計類</font></b></li>")Response.write("<ul>")Response.write("<li><fontcolor='#CC0066'>C語言初學(xué)指引</font></li>")Response.write("<li><fontcolor='#CC0066'>C/C++初學(xué)指引</font></li>")Response.write("<li><fontcolor='#CC0066'>Java初學(xué)指引</font></li>")Response.write("<li><fontcolor='#CC0066'>資料結(jié)構(gòu)初學(xué)指引</font></li>")Response.write("</ul>")Response.write("<br/>")Response.write("<li><b><fontcolor='#9966FF'size='4'>網(wǎng)頁設(shè)計系列</font></b></li>")………………Response.write("</ul>")Response.write("</body>")Response.write("</html>")%>表1-4傳統(tǒng)ASP(ch1_01.asp)文件內(nèi)容【回傳的資料同1-7頁】361.3 .NETFramework
與VisualStudioASP.NET屬於.NETFramework的一環(huán),而.NETFramework則是一個程式開發(fā)與執(zhí)行的環(huán)境架構(gòu),它能夠同時包含視窗程式與網(wǎng)頁程式的開發(fā)。長期以來,C++與Java佔據(jù)絕大多數(shù)的物件導(dǎo)向程式語言市場,Microsoft為了增加市場佔有率,在2002年提出了.NETFramework,目前的版本為4.0版或稱為2010版,其架構(gòu)如下圖。圖1-5.NETFramework的視窗程式與網(wǎng)頁程式架構(gòu)圖371.3 .NETFramework
與VisualStudio在圖1-5中,我們可以發(fā)現(xiàn),對於一般Windows環(huán)境而言,執(zhí)行的程式為視窗應(yīng)用程式,而.NETFramework以WindowsForms(Form代表表單)提供此功能。至於網(wǎng)路作業(yè)環(huán)境,則透過網(wǎng)路傳輸,在伺服器端執(zhí)行ASP.NET程式為主,它會產(chǎn)生一些格式回傳給客戶端,這些格式又分為包含HTML的WebForms以及不包含HTML的WebServices兩種。其中,瀏覽器可解讀HTML,因此通常在瀏覽器中要求讀取的.aspx網(wǎng)頁就是採用WebForms來開發(fā)。
至於如何產(chǎn)生WindowsForms、WebForms、WebServices等成果,則是透過.NETFramework的類別庫以及CLR來完成,實際與作業(yè)系統(tǒng)進行溝通的為CLR,它可以視為一種虛擬機器,提供各類.NETFramework程式的執(zhí)行環(huán)境。
事實上,.NETFramework一共包含三個層次,第一層為WindowsForm與ASP.NET,第二層則為類別庫,最底層則為CLR,其中各層所包含的元件如下圖所示。381.3 .NETFramework
與VisualStudio圖1-6.NETFramework架構(gòu)圖391.3 .NETFramework
與VisualStudio.NETFramework的元件配置如圖1-6,而.NETFramework的視窗應(yīng)用程式(WindowsForms)又應(yīng)該以何種程式語言的語法來撰寫呢?答案是沒有限制,因為.NETFramework採用兩段式翻譯方式(與Java類似),它會先將原始程式(各種語言的程式碼)編譯為微軟的中間碼MSIL(MicrosoftIntermediateLanguage),這個中間碼與組合語言的格式類似,可將之視為.NET平臺CLR上的組合語言,這些MSIL格式的程式碼以及一些中繼資料將被置於可攜式執(zhí)行檔(portableexecutablefile;PE檔)中。當(dāng)真的要執(zhí)行時,再由執(zhí)行環(huán)境以JIT(JustinTime)的方式將PE檔內(nèi)的MSIL程式碼編譯成可執(zhí)行的原生碼(nativecode)來執(zhí)行。其過程如圖1-7所示,而後半段的編譯行為由ilasm.exe(MSILAssembler)來執(zhí)行,微軟將此軟體稱之為組譯器(Assembler),這是因為MSIL比較像是CLR上的組合語言。401.3 .NETFramework
與VisualStudio圖1-7a.NET程式的開發(fā)流程411.3 .NETFramework
與VisualStudio圖1-7b.NET程式的開發(fā)流程421.3 .NETFramework
與VisualStudio微軟在推出.NETFramework時,保證這是一個跨語言與跨平臺的架構(gòu),因此,理論上.NETFramework的視窗應(yīng)用程式可以使用各種語言來開發(fā),同時能夠在各種平臺上執(zhí)行但實務(wù)上則大多以VB.NET與C#語法為最多,這是因為微軟提供的開發(fā)工具VisualStudio.NET僅提供將VisualBasic.NET(簡稱VB.NET)、VisualC#、VisualJ#、VisualC++.NET等幾種語言的緣故。換句話說,VisualStudio.NET僅提供某幾種程式語言轉(zhuǎn)換為MISL中間碼的功能(也就是VB.NET編譯器/vbc.exe與C#編譯器/csc.exe),而非各種程式語言的編譯器。圖1-8VisualStudio.NET架構(gòu)圖431.3 .NETFramework
與VisualStudio在跨平臺上的實作上,微軟提供的CLR也只能運行於Windows作業(yè)系統(tǒng)(包含XP、Server、Vista等),而不能運行於Unix-like與Mac-OS的作業(yè)系統(tǒng)。但有一個名為Mono的OpenSourceProject則實際完成了跨語言與跨平臺的目標(biāo)?!綧ono:OpenSourceProject】Mono提供了C#、Java、VisualBasic.NET、JavaScript、PHP、ObjectPascal、Python以及其他語言的編譯器,並且也能夠安裝在Linux、SunSolaris(Unix)、BSD(含F(xiàn)reeBSD)、MacOSX(含iPhoneOS)、MicrosoftWindows甚至是Wii等機器上。但由於是OpenSourceProject,故本書不多加介紹,有興趣的讀者可以連至下列網(wǎng)址查詢。/441.3 .NETFramework
與VisualStudioVisualStudio是微軟提供程式設(shè)計師開發(fā)程式的一套IDE整合開發(fā)環(huán)境,對於開發(fā).NETFramework的程式而言(例如VB.NET、C#、ASP.NET),使用的是VisualStudio.NET版本。而VisualStudio.NET又分為Express版、使用者端版(含專業(yè)版、企業(yè)版、企業(yè)旗艦版)、品管人員版與伺服器端及其他產(chǎn)品版(含TEAMFOUNDATIONSERVER/TEAMEXPLOREREVERYWHERE/LABMANAGEMENT版)等。其中,Express版是提供給初學(xué)者(例如學(xué)生)使用,是一個免費的版本並且可以由微軟網(wǎng)站下載,網(wǎng)址如下:/express/451.3 .NETFramework
與VisualStudio請下載圖1-9/express/(下載VWDExpress2010中文版)461.3 .NETFramework
與VisualStudio本書使用的為Express2010中文版而Express版包含四種開發(fā)軟體,VisualBasic、VisualC#、VisualC++以及VisualWebDeveloper等。要開發(fā)ASP.NET程式則請安裝VisualWebDeveloper2010(簡稱VWD2010)。註:下載完畢,請一同下載最新的ServicePack。471.4 ASP.NET與VWD除了視窗應(yīng)用程式之外,Web應(yīng)用程式也被包含在.NETFramework的規(guī)範(fàn)中,也就是ASP.NET。ASP.NET包含開發(fā)WebForms與WebServices兩類,在本書開發(fā)的ASP.NET網(wǎng)頁程式都屬於WebForms。要開發(fā)ASP.NET程式則請安裝VisualWebDeveloper2008(簡稱VWD2008)。
簡言之,本書所使用的工具包含IDE、.NETFramework(含CLR)、SQLServerExpress資料庫、Web伺服器等,其中IDE即為VWD2010,而在安裝VWD完成後,也同時安裝了.NETFramework與SQLServerExpress資料庫(需勾選)。至於Web伺服器,在VWD2005以前都必須搭配IISWeb伺服器來執(zhí)行,但VisualStudio或VWD2008以後的版本則本身已經(jīng)內(nèi)建虛擬的Web伺服器(稱之為ASP.NET程式開發(fā)伺服器),因此不需要安裝IIS也能夠開發(fā)Web應(yīng)用程式。481.4 ASP.NET與VWDASP.NET的編譯與執(zhí)行ASP.NET可以使用VB.NET或C#語法來開發(fā)程式,本書使用的是VB.NET語法。ASP.NET程式碼的副檔名為.aspx,當(dāng)使用者第一次要求網(wǎng)站執(zhí)行ASP.NET網(wǎng)頁(.aspx檔)時,會自動使用編譯器編譯為中間碼組件檔。通常它會對每個應(yīng)用程式目錄(例如App_Code)建立組件,也會為主目錄建立一個組件(若使用不同程式設(shè)計語言所撰寫,則會為每一種語言建立不同的組件),這些組件檔會被存放在暫時目錄,此動作稱之為自動編譯,速度較慢一些。
1.4 ASP.NET與VWD當(dāng)編譯完成後,實際執(zhí)行時,則由CLR執(zhí)行中間碼產(chǎn)生HTML格式碼回傳給客戶端(其流程如圖1-10a所示)。至於之後其他使用者欲連上此ASP.NET網(wǎng)頁時,則不必再進行編譯,CLR可直接執(zhí)行中間碼產(chǎn)生HTML格式碼回傳給客戶端,因此速度較快(而這些已編譯的中間碼則被視為快取檔案),流程如圖1-10b。而傳統(tǒng)ASP網(wǎng)頁,則必須每一次都經(jīng)由asp.dll直譯ASP原始碼,故ASP.NET的平均效率比單純直譯的ASP與PHP還要好。49501.4 ASP.NET與VWD圖1-10aASP.NET執(zhí)行過程(第一次執(zhí)行ASP.NET)51圖1-10bASP.NET執(zhí)行過程(非第一次執(zhí)行ASP.NET)【ASP.NET的彈性部署】由於第一次會自動進行編譯的特性,因此,若您想要將ASP.NET網(wǎng)頁部署到其他的Web伺服器(例如IIS),直接複製原始程式檔即可。不過如果您可以選擇先行編譯,也就是在部署網(wǎng)站前,使用ASP.NET編譯器工具(ASPNET_Compiler.exe)先行編譯網(wǎng)站,就可以部署組件取代原始程式碼。而ASP.NET編譯器工具提供了包含就地編譯、非可更新的完全先行編譯、可更新的先行編譯等選項。521.5 類別/物件VB.NET或C#都是物件導(dǎo)向程式語言(OOPL;Object-OrientedProgramLanguage),而ASP.NET由於採用這兩種語法,因此ASP.NET是一個物件導(dǎo)向型式的網(wǎng)頁程式設(shè)計,所謂物件導(dǎo)向的設(shè)計理念,就是利用軟體模擬現(xiàn)實生活中實體所擁有的特性與行為,這些實體就是物件,而每一個物件都擁有各自的屬性(Property)、方法(Method)及事件(Event),物件導(dǎo)向程式設(shè)計就是依照物件的方法產(chǎn)生互動以完成要求。由於ASP.NET採用物件導(dǎo)向式設(shè)計,因此在繼續(xù)之後的學(xué)習(xí)之前,我們應(yīng)該先對物件導(dǎo)向程式設(shè)計有基本的認(rèn)識,重點說明如下:531.5 類別/物件物件(Object)真實世界中所有具體或抽象的事物,都可以將之視為一個『物件』。例如:您可以把一架戰(zhàn)鬥機想像成是一個物件(Object);而戰(zhàn)鬥機的零件(例如:座椅、引擎、操縱桿)則是較小的物件,明顯地,這些物件仍舊可以再細(xì)分為更小的物件(例如:螺絲釘)。ASP.NET的物件則是一些程式碼和資料組合,物件必須能夠單獨成為一個完整單元,也可以組合成更大的物件。例如:一個按鈕或一個Page都是一個物件,但Page網(wǎng)頁物件內(nèi)可以包含按鈕物件。屬性(Property)物件擁有許多特性,這些特性代表了一個物件的外觀或某些性質(zhì),例如:戰(zhàn)鬥機物件的最高速度就代表了該戰(zhàn)鬥機的一種特性。這些特性在物件導(dǎo)向程式設(shè)計中稱之為屬性(Property)541.5 類別/物件事實上,有的時候在取得物件的某些屬性時,所得到的也可能是另一個(子)物件。例如:戰(zhàn)鬥機的引擎也是一個物件,而且它仍舊可以由更多更小的零件來組成,同時引擎物件也存在自己的方法(Method),例如:引擎點火。
本書的ASP.NET網(wǎng)頁使用VB.NET語法,而在VB.NETT中,每個物件同樣也具備某些特性,這些特性亦稱為欄位或?qū)傩裕纾喊粹o物件的屬性包含按鈕長寬大小、按鈕背景顏色、按鈕文字等等。大多數(shù)物件的欄位都有某些預(yù)設(shè)值,在程式設(shè)計或執(zhí)行階段,我們可以藉由改變欄位值來改變整個物件的某些特性,完成我們想要的物件表示形式。例如:將飛機物件的機殼漆成紅色,將按鈕背景顏色設(shè)為藍(lán)色。註:VB.NET的屬性除了具有欄位資料的特性之外,也可以設(shè)定set與get程序的內(nèi)容以進行該項資料的存取。551.5 類別/物件類別(Class)不同的物件也可以擁有相同的屬性,而我們可以依照物件所擁有的屬性將物件加以分類,此分類的結(jié)果稱之為『類別』。事實上,在物件導(dǎo)向程式設(shè)計中類別與物件的關(guān)係,是先有類別,然後才有該類別下衍生出來的各個物件,而同屬一個類別的物件擁有相同的屬性(定義於類別中),透過屬性值的不同,就可以製造該類別下各種型式的物件。例如:『飛機』是一個類別,而「民航機」和「戰(zhàn)鬥機」都是該類別下所衍生的物件,因為兩者都具有速度、爬升力、重量、載重量…等等的屬性,但由於屬性值的不同,因此我們可以區(qū)分出民航機物件與戰(zhàn)鬥機物件。
1.5 類別/物件以ASP.NET程式設(shè)計而言,假設(shè)某一個Page網(wǎng)頁中包含許多按鈕,則每一個按鈕都是一個物件,隸屬於按鈕類別之下,但是由於按鈕的名稱不同,因此視為不同且獨立的物件,而按鈕類別並不需要由我們來設(shè)計,因為它屬於ASP.NET內(nèi)定類別庫的類別。在本書中,我們幾乎不會自行設(shè)計類別,只會使用現(xiàn)成的類別產(chǎn)生物件,並且控制項類的物件也是以拖拉方式來完成宣告,而不需要自行撰寫宣告物件的語法。56571.5 類別/物件方法(Method)每個物件都擁有不同數(shù)量的『方法』(同一類別下的物件則擁有相同名稱的方法,但方法的細(xì)節(jié)內(nèi)容則可以不同)。所謂方法(Method),就是為了完成該物件某些目標(biāo)的處理方式。例如:戰(zhàn)鬥機物件有許多方法使得戰(zhàn)鬥機變得有些用途,這些方法如起飛、降落、逃生等等。每個方法都有許多的細(xì)節(jié),例如起飛,可能包含『發(fā)動引擎、、、、直到拉動操縱桿』,這些就是起飛方法的細(xì)節(jié)。
ASP.NET提供了許多物件的方法(ASP.NET完成了這些方法的細(xì)節(jié)),這樣的好處就在於我們並不需要了解這些方法的細(xì)節(jié),就能夠完成目標(biāo),例如亂數(shù)物件(RandomObject)提供了取亂數(shù)的Next方法,我們只要
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 簡易供料合同范例
- 跨國勞動合同范例
- 汽車租借賃合同范例
- 收購種植地塊合同范例
- 二年級數(shù)學(xué)計算題專項練習(xí)
- 加工木床廠轉(zhuǎn)讓合同范例
- 理療購銷設(shè)備合同范例
- 2024至2030年標(biāo)準(zhǔn)全自動打包機項目投資價值分析報告
- 離婚協(xié)議書(2024精簡版)
- 完工質(zhì)保金合同范例
- 金融理論與政策(華南農(nóng)業(yè)大學(xué))-中國大學(xué)MOOC答案2023版
- 2024年《論教育》全文課件
- 節(jié)能改造合同協(xié)議
- 國家開放大學(xué)??啤斗ɡ韺W(xué)》(第三版教材)形成性考核試題及答案
- (正式版)SHT 3158-2024 石油化工管殼式余熱鍋爐
- MOOC 創(chuàng)業(yè)基礎(chǔ)-暨南大學(xué) 中國大學(xué)慕課答案
- 水廠管網(wǎng)工程施工管理工作報告doc
- 綜合美食廣場招商方法
- 排序算法集成-杉杉
- 產(chǎn)品報價審批表
- 基于s7200狹窄隧道汽車雙向行的plc控制
評論
0/150
提交評論