新聞中心
從ASP遷移到ASP.NET程序員肯定不少,我就是其中一個(gè),然而要從熟練的ASP程序員轉(zhuǎn)變?yōu)槭炀毜腁SP.NET程序員并不容易,這不僅僅要求你學(xué)習(xí)非常多的新東西,還要求你丟棄非常多的舊東西。對(duì)于沒學(xué)過ASP的人來(lái)說,或許這還容易些,因?yàn)樗麄儽緛?lái)就做好了苦學(xué)的準(zhǔn)備,也沒多少需要丟棄;對(duì)于熟練的ASP程序員來(lái)說則比較痛苦了,因?yàn)樵酒谕约涸瓉?lái)的知識(shí)都可以平滑過渡輕松用上ASP.NET,結(jié)果發(fā)現(xiàn)現(xiàn)實(shí)與期望的差距是那么的大。

創(chuàng)新互聯(lián)專注于呼和浩特網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供呼和浩特營(yíng)銷型網(wǎng)站建設(shè),呼和浩特網(wǎng)站制作、呼和浩特網(wǎng)頁(yè)設(shè)計(jì)、呼和浩特網(wǎng)站官網(wǎng)定制、微信小程序開發(fā)服務(wù),打造呼和浩特網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供呼和浩特網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
在發(fā)現(xiàn)這個(gè)差距之后,沒有人應(yīng)該停下來(lái)然后倒退回去ASP的時(shí)代,知難而上把ASP.NET用到和ASP一樣熟練才是我們的目標(biāo),因此才有了這個(gè)系列的文章。在系列的***篇里,我們先來(lái)討論ASP程序員缺了什么,什么是應(yīng)該優(yōu)先補(bǔ)上的,只有把這些知識(shí)補(bǔ)上了,我們才能夠把自己稱作ASP.NET程序員。
Web Standards / Web標(biāo)準(zhǔn)
做Web應(yīng)用首先要懂做Web,現(xiàn)在提倡的是Web Standards,其所涉及的XHTML、CSS、JavaScript是一定要懂的。很多ASP程序員可能已經(jīng)熟悉老式的表格排版方式,但這是應(yīng)該被丟棄的東西。很多宣揚(yáng)Web Standards的文章都給出了不少表格排版的壞處,那些我就不多說了,我要說的是不使用Web Standards對(duì)ASP.NET程序員最致命的一個(gè)壞處。由于MS也向Web Standards靠攏了,所以ASP.NET 2.0被設(shè)計(jì)為兼容Web Standards的,這時(shí)候所有的控件都被設(shè)計(jì)為語(yǔ)義與表現(xiàn)分離。如果你不遵守此分離規(guī)則去分工,那么隨著你和你的美工輪流編織這張Web,最終有一天這張Web就會(huì)把你和你的美工給綁死。
要學(xué)好XHTML+CSS的設(shè)計(jì),不僅僅需要觀念上的轉(zhuǎn)變,還需要開發(fā)工具上的更換。很多人無(wú)法適應(yīng)Web Standards的設(shè)計(jì)觀念,是因?yàn)樗麄冞€在用老工具,于是總是覺得用舊觀念設(shè)計(jì)更方便效果更好。因?yàn)槲蚁嘈牛挥挟?dāng)你適應(yīng)了新的工具,體驗(yàn)到新工具帶來(lái)的便利和高效,你才會(huì)樂意接受觀念上的轉(zhuǎn)變。
說到開發(fā)工具,我假設(shè)熟練的ASP程序員都能夠完全脫離WYSIWYG的編輯器而以純文本方式編寫XHTML和CSS,因?yàn)閄HTML+CSS的開發(fā)要求你和你的美工都具有這樣的能力。以往美工可以安樂地對(duì)著Photoshop,這是他們最習(xí)慣使用的工具,操作起來(lái)有精確性的同時(shí)又可視化,他們可能有一半的時(shí)間是用眼睛思考的。然而現(xiàn)在改用CSS就沒這樣的好事情了,能夠好像Photoshop那樣設(shè)計(jì)CSS的軟件還沒有誕生,修改任何一條CSS規(guī)則都會(huì)應(yīng)用到所有頁(yè)面上,至于每一個(gè)頁(yè)面哪些元素會(huì)匹配這條CSS規(guī)則這需要美工用腦袋記著,不再是可視化。雖然改一下CSS規(guī)則然后看一下幾個(gè)頁(yè)面的預(yù)覽這也是一種選擇,然而這比Photoshop中調(diào)整參數(shù)時(shí)的即時(shí)預(yù)覽要差多了,所以讓美工學(xué)會(huì)在腦袋里進(jìn)行預(yù)覽是很重要的,這樣才能寫出好的CSS來(lái)。
如果要推薦一些工具的話,我會(huì)選擇Visual Studio 2005 + Expression Web Beta 1,前者開發(fā)人員自己用,后者是美工用來(lái)設(shè)計(jì)或修改Web頁(yè)面用的。
OOP / 面向?qū)ο蟪绦蛟O(shè)計(jì)
OOP可以說是ASP.NET的基礎(chǔ),沒有OOP就沒有ASP.NET控件這個(gè)概念,也就沒有了ASP.NET與ASP最巨大的差別。
從最原始的CGI開始,Web應(yīng)用開發(fā)者無(wú)非就在設(shè)計(jì)著這樣一種邏輯——根據(jù)輸入的Request生成輸出的Response,大多數(shù)情況下兩者都是平板的純文本字符串,除非設(shè)計(jì)上傳/下載文件。ASP引入了Request和Response對(duì)象,讓處理稍微顯得立體了一些,你不再需要手動(dòng)分析 Request文本,它能夠幫你將提交上來(lái)的Form、QueryString、Cookies等參數(shù)提取出來(lái)供你使用。Session和 Application對(duì)象的引入讓你在不了解細(xì)節(jié)的情況下進(jìn)行特定目的的存儲(chǔ),Server對(duì)象的引入則為你提供了很多有用的函數(shù)。
ASP遇到的***問題是,立體的Request提供出來(lái)的數(shù)據(jù)卻是平板的,整個(gè)處理過程也是平板的。那就說,在處理過程中的任何一個(gè)步驟,都可以訪問任何一個(gè)Request數(shù)據(jù)項(xiàng),然后把結(jié)果輸出到Response中,這導(dǎo)致程序代碼的耦合度很高。如果輸出的Response有問題,你沒辦法明確指出處理過程中的哪一段應(yīng)該對(duì)它負(fù)直接責(zé)任。
ASP.NET嘗試通過引入控件的概念來(lái)解決這個(gè)問題。每一個(gè)控件都是一個(gè)獨(dú)立的邏輯單元,它僅僅對(duì)自己內(nèi)部的邏輯負(fù)責(zé),并且盡可能減低對(duì)外部環(huán)境的依賴性。控件不再像普通的ASP邏輯那樣它可以亂訪問Request和Response,它的能力應(yīng)該受到限制:
一個(gè)控件僅僅應(yīng)該讀取它生成的HTML元素提交回來(lái)的數(shù)據(jù),否則應(yīng)該考慮通過其他控件的屬性來(lái)獲取,而不是從Request獲取。詳細(xì)說明如下:
◆IPostBackDataHandler和IPostBackEventHandler就是為控件處理自己生成的HTML有關(guān)的參數(shù)與事件而設(shè)計(jì)的。
◆如果控件要獲取的數(shù)據(jù)來(lái)自子控件,則應(yīng)該通過子控件的屬性獲取。
◆如果控件要獲取的數(shù)據(jù)來(lái)自外部控件,則應(yīng)該請(qǐng)求父控件或環(huán)境幫忙獲取。
一個(gè)控件生成的HTML應(yīng)該是環(huán)境無(wú)關(guān)的,也就是無(wú)論其他控件生成怎樣的HTML都不會(huì)和此控件生成的HTML沖突。詳細(xì)說明如下:
◆Render用于生成本控件的HTML。
◆如果控件要生成的HTML存在可能引起沖突的情況,則應(yīng)該請(qǐng)求父控件或環(huán)境處理。例如最常見的生成腳本,為了避免同一段腳本多次輸出就應(yīng)該向ClientScriptManager注冊(cè)腳本,然后讓它來(lái)覺得腳本的輸出。
當(dāng)然,上面這些規(guī)則你喜歡怎么違反都行,沒有人規(guī)定你一定要這樣做的。但只有遵守了這些規(guī)定,你才算得上是一個(gè)ASP.NET程序員,否則就僅僅是一個(gè)使用著ASP.NET框架的ASP程序員。
要遵守這些規(guī)則,首先要把OOP學(xué)好,這樣你才會(huì)明白為什么要遵守以及如何去遵守。因?yàn)橐?guī)則是死的,而我們面對(duì)的情況可能是靈活多變的,當(dāng)面對(duì)一個(gè)新的情形時(shí)應(yīng)該選擇如何設(shè)計(jì)呢?顯然你不一定能夠從上面的規(guī)則中找到一條來(lái)參考,這時(shí)候你的OOP思想及價(jià)值觀就起決定性作用了。
HTTP協(xié)議
HTTP協(xié)議其實(shí)沒什么好說的,一個(gè)熟練的ASP程序員必須懂的東西,而且可能從你學(xué)習(xí)ASP的那天起它就沒改變過。只不過對(duì)于ASP程序員來(lái)說,這東西是透明的,因?yàn)槲覀冎苯邮褂肦equest,這和直接處理HTTP協(xié)議沒太大的區(qū)別。但是到了ASP.NET,Request已經(jīng)被隱藏起來(lái)了,你應(yīng)該避免使用它,這時(shí)候你就需要重視HTTP協(xié)議了,否則底層通訊發(fā)生了什么你完全不知道。
總結(jié)
雖然看起來(lái)我只列了3個(gè)學(xué)習(xí)要點(diǎn),但我們的目標(biāo)是熟練,所以每一樣你都至少用上一年半載才算學(xué)到點(diǎn)東西,這一點(diǎn)兒都不簡(jiǎn)單。
本系列的下一篇將討論“忘記什么”,如果你明白了“學(xué)習(xí)什么”,卻發(fā)現(xiàn)學(xué)習(xí)進(jìn)度不理想,那就證明你有些包袱沒有拋下了。
當(dāng)前文章:如何遷移到ASP.NET程序員
網(wǎng)頁(yè)鏈接:http://fisionsoft.com.cn/article/cdpscso.html


咨詢
建站咨詢
