有關(guān)ASP.NET代碼分離的一些討論
關(guān)于ASP.NET代碼分離(code-behind)的討論的由來:
Visual Studio .NET(VS.NET)為Visual Basic的開發(fā)人員提供了一個(gè)非常直觀的Web開發(fā)環(huán)境。VB的開發(fā)人員已經(jīng)有很多年都習(xí)慣于把他們的可視化接口拖放到設(shè)計(jì)接口上,然后在需要編寫代碼控制某個(gè)元素的時(shí)候雙擊這個(gè)元素。我認(rèn)為,VS.NET的最高成就在于:它已經(jīng)采納了Windows的軟件設(shè)計(jì)和信息回圈模型(message loop paradigm),并把它們映射到了像Web這樣的無狀態(tài)環(huán)境里。一旦你開始編寫需要交付使用的應(yīng)用程序,你就會(huì)發(fā)現(xiàn)這個(gè)映射并不完美,但是VS.NET能夠把Windows的程序員迅速帶入到Web開發(fā)的能力絕對(duì)是值得肯定的。
當(dāng)然有很多Web程序員會(huì)使用Visual Interdev、Visual Notepad或者其他Web開發(fā)的工具編寫動(dòng)態(tài)服務(wù)器頁(yè)面(Active Server Page)。這些程序員中的許多人在變動(dòng)到VS.NET世界的時(shí)候有過一段艱難的時(shí)期。他們?cè)瓉砹?xí)慣于將其應(yīng)用程序分割成一系列ASP的頁(yè)面,這些頁(yè)面會(huì)同時(shí)封裝可視化接口以及這個(gè)接口的行為。
如果你看一下許多.NET還在beta版時(shí)期由ASP開發(fā)人員使用Framework SDK(在VS.NET正式上市以前)編寫的代碼示例,你能夠看到的主要是行內(nèi)(inline)代碼示例。這是因?yàn)樗麄冞€是按照ASP開發(fā)時(shí)的習(xí)慣編寫代碼。事實(shí)上,開發(fā)人員能夠最先得到的主要ASP.NET應(yīng)用程序之一是iBuySpy Portal和Store。這些應(yīng)用程序在發(fā)表的時(shí)候就是以代碼分離的形式呈現(xiàn)給VB.NET和C#開發(fā)人員的,并且還是的單頁(yè)ASP.NET實(shí)現(xiàn)。很多還是偏好單個(gè)文件ASP.NET應(yīng)用程序的開發(fā)人員把iBuySpy的作為繼續(xù)編寫行內(nèi)代碼的過渡。
ASP.NET代碼分離有什么好處?
使用ASP.NET進(jìn)行開發(fā)的每個(gè).NET開發(fā)機(jī)構(gòu)一定會(huì)碰到一些問題:我們是把C#還是VB.NET作為我們的核心開發(fā)語(yǔ)言?我們是不是要把行內(nèi)ASP.NET的開發(fā)進(jìn)行標(biāo)準(zhǔn)化,或是我們要嚴(yán)格地強(qiáng)制使用代碼分離的文件?第一個(gè)問題的答案最后要看原有開發(fā)人員的經(jīng)驗(yàn)和習(xí)慣,因?yàn)槭褂檬煜さ恼Z(yǔ)言會(huì)把你培訓(xùn)和適應(yīng)語(yǔ)言的費(fèi)用降到最低。但是,關(guān)于代碼分離的爭(zhēng)論還不是很明確。盡管有一些參考資料堅(jiān)持認(rèn)為代碼分離是開發(fā)ASP.NET應(yīng)用程序的正確道路,但是我還沒有在微軟出版的資料上看到任何關(guān)于這一點(diǎn)的建議。所以你該如何決定呢?
ASP.NET代碼分離之關(guān)于結(jié)構(gòu)的爭(zhēng)論
從結(jié)構(gòu)的角度來講,代碼分離的文件允許更加簡(jiǎn)潔的系統(tǒng)實(shí)現(xiàn)。代碼分離的文件允許開發(fā)人員把用戶界面(UI)的顯示從UI的處理分離出來。ASPX文件里只允許存在的代碼是專門用來服務(wù)顯示的代碼。在代碼分離的文件里重新使用代碼比在帶有行內(nèi)代碼的單個(gè)文件里要簡(jiǎn)單一些(盡管仍然不簡(jiǎn)單)。把設(shè)計(jì)和開發(fā)功能分離開來也是有可能的,只需要允許設(shè)計(jì)人員使用ASPX的文件和編碼器進(jìn)行代碼分離的開發(fā)就行了。使用行內(nèi)代碼實(shí)現(xiàn)這一點(diǎn)要困難得多。
ASP.NET代碼分離之關(guān)于環(huán)境的爭(zhēng)論
盡管VS.NET允許你使用行內(nèi)代碼創(chuàng)建應(yīng)用程序,但是其使用代碼分離文件將UI處理低層進(jìn)行抽象化的模型卻直觀得多。在你使用代碼分離而不是編寫行內(nèi)代碼的時(shí)候,其編譯器還能夠進(jìn)行類型檢查和允許完全的IntelliSense。對(duì)行內(nèi)代碼有錯(cuò)誤的應(yīng)用程序進(jìn)行也是可能的,而這在以前只會(huì)在最終代碼被執(zhí)行的時(shí)候才能進(jìn)行。當(dāng)你編譯這個(gè)應(yīng)用程序的時(shí)候,放置在代碼分離文件里含有錯(cuò)誤的相同代碼會(huì)被截獲。
ASP.NET代碼分離之行內(nèi)代碼有沒有其他的正確用途?
我已經(jīng)在前面列出了兩個(gè)關(guān)于使用代碼分離文件的主要爭(zhēng)論,我想在下面指出的是可能要使用逐行代碼的兩種情況,這樣才公平。
ASP.NET代碼分離的相關(guān)談?wù)搩?nèi)容就向你介紹到這里,希望對(duì)你了解ASP.NET代碼分離技術(shù)有所幫助。
【編輯推薦】