Web開發學習體會
發表時(shí)間:2005-2-1
發布人(rén):融晨科技
浏覽次數:39
Web開發學習體會
這(zhè)段時(shí)間一直在(zài)學習使用vss.net做web方面的(de)東西,稍微有些感觸,主要(yào / yāo)是(shì)如下幾方面的(de):
1. web及B/S開發思想、模式
由于(yú)起初對HTML語言沒有多少了(le/liǎo)解,所以(yǐ)剛拿到(dào)一些例子(zǐ),特别是(shì)那些諸如JAVASCRIPT等客戶端腳本無從下手,甚至一個(gè)簡單的(de)頁面都要(yào / yāo)花很長一段時(shí)間來(lái)處理。再者,長時(shí)間受C/S開發模式的(de)影響,在(zài)WEB開發過程中時(shí)常會自覺不(bù)自覺的(de)用C/S的(de)思維考慮一些B/S開發特有的(de)東西,遇到(dào)很多在(zài)C/S模式中看似十分簡單而(ér)到(dào)web編程的(de)時(shí)候就(jiù)感到(dào)特别痛苦,甚至無法實現;正因爲(wéi / wèi)受到(dào)這(zhè)種思想的(de)束縛,我們近期在(zài)開發的(de)《智合論壇系統》遇到(dào)了(le/liǎo)很多麻煩,造成系統整體框架不(bù)合理、系統界面十分醜陋、系統運行效率低下、系統安全性低下等一系列後遺症,但是(shì)在(zài)這(zhè)次論壇開發中我還是(shì)得到(dào)的(de)挺多啓發:
a) Web系統的(de)觀念需要(yào / yāo)正确對待,它已經不(bù)是(shì)單純的(de)一個(gè)技術系統,它涉及了(le/liǎo)html、美工(web設計)、框架設計等,當然國(guó)内外有很多軟件公司是(shì)數據庫、系統代碼、美工、網頁設計等都是(shì)分工合作的(de),但是(shì)我個(gè)人(rén)認爲(wéi / wèi)程序員的(de)能力是(shì)來(lái)自多方面的(de),我想更多的(de)武裝才能有更好的(de)成就(jiù)和(hé / huò)競争力度,所以(yǐ)經常自我提醒,在(zài)以(yǐ)後的(de)開發過程中要(yào / yāo)盡量把以(yǐ)上(shàng)提到(dào)的(de)各個(gè)部分做到(dào)盡善盡美,不(bù)要(yào / yāo)老覺得隻要(yào / yāo)把代碼寫好就(jiù)行,界面是(shì)美工的(de)事;
b) 在(zài)開發web應用的(de)過程中,團隊間的(de)合作更爲(wéi / wèi)重要(yào / yāo),比傳統的(de)C/S開發相互間的(de)協作更多了(le/liǎo),因此交流相當重要(yào / yāo),以(yǐ)這(zhè)次論壇開發爲(wéi / wèi)例,由于(yú)開發前約定的(de)一些事項沒有得到(dào)嚴格執行,造成許多重複勞動,甚至一度導緻系統運行失敗;這(zhè)裏特别提醒在(zài)以(yǐ)後開發中,一些公用的(de)組件、類、控件、接口等最好能由全體組員讨論得出(chū),修改過程一定要(yào / yāo)慎重,有必要(yào / yāo)的(de)外部接口必須加上(shàng)方法級注釋;
c) 采用B/S模式開發應用,對數據安全、并發控制的(de)要(yào / yāo)求十分之(zhī)高,C/S方式沒法比拟,而(ér)我們本次的(de)論壇開發過程中一直采用的(de)是(shì)對數據進行簡單加密,沒有找到(dào)行之(zhī)有效的(de)方法加以(yǐ)解決,系統安全問題是(shì)個(gè)很大(dà)的(de)隐患,希望通過今後學習探索能找到(dào)解決措施;
d) 我個(gè)人(rén)認爲(wéi / wèi)采用web開發模式重要(yào / yāo)的(de)是(shì)理解什麽是(shì)B/S,它的(de)優點以(yǐ)及限制,這(zhè)樣在(zài)實際的(de)應用中才能得心應手。模式是(shì)一些優秀的(de)面向對象方法的(de)總結,這(zhè)些東西要(yào / yāo)靈活使用,不(bù)能爲(wéi / wèi)了(le/liǎo)模式而(ér)模式;
e) 我覺得在(zài)學一門新語言、一個(gè)新開發工具的(de)時(shí)候一定要(yào / yāo)逐步養成一些好習慣,ASP.NET也(yě)不(bù)例外。在(zài)ASP.NET的(de)開發中,可以(yǐ)學習的(de)技巧不(bù)少,但是(shì),一些基本的(de)編程習慣我們一定要(yào / yāo)養成,這(zhè)樣不(bù)但能根本上(shàng)提高程序質量和(hé / huò)開發效率,而(ér)且也(yě)利于(yú)程序的(de)閱讀和(hé / huò)團隊開發。如果自己寫的(de)程序隻有自己可以(yǐ)看懂或者隻有幾個(gè)人(rén)可以(yǐ)看懂,即使程序技巧神乎其技,對于(yú)程序的(de)升級和(hé / huò)維護都是(shì)緻命問題。開發過程中諸如:錯誤處理、字符串的(de)處理、數據庫鏈接及關閉時(shí)機等一些影響到(dào)系統性能的(de)處理一定要(yào / yāo)養成比較好的(de)習慣,特别是(shì)數據庫操作方面的(de)習慣,一定要(yào / yāo)堅持“盡晚開啓,盡早關閉”的(de)原則,因爲(wéi / wèi)WEB應用面對的(de)用戶群體肯定比傳統的(de)C/S要(yào / yāo)大(dà),保證系統性能是(shì)十分重要(yào / yāo)的(de);
2. .net Framework 框架
.net framwork是(shì)一個(gè)龐大(dà)而(ér)完整的(de)類庫,幾乎涵蓋了(le/liǎo)所有的(de)開發領域,裏面不(bù)但有很多可以(yǐ)使用的(de)地(dì / de)方,也(yě)有很多值得學習的(de)地(dì / de)方,比如如何組織各個(gè)類之(zhī)間的(de)協作關系等等。
在(zài)這(zhè)個(gè)框架用的(de)最多的(de)也(yě)就(jiù)是(shì)ADO.NET部分的(de)東西了(le/liǎo),而(ér)說(shuō)到(dào)ADO.NET不(bù)得不(bù)提DataGrid、DataSet、DataReader、DataAdapter一些重量級的(de)控件、類,這(zhè)使許多數據交互提供了(le/liǎo)極大(dà)的(de)便利,這(zhè)次開發過程中用到(dào)的(de)東西有限,主要(yào / yāo)DataSet、DataGrid、DataReade反複使用,而(ér)且值得檢讨的(de)是(shì)一直沒深入研究這(zhè)幾個(gè)好東西,不(bù)過關于(yú)DataGrid在(zài)使用過程中學到(dào)了(le/liǎo)一些比較好的(de)用法,比如模闆列、分頁功能等,功能的(de)确強大(dà),細節上(shàng)的(de)東西就(jiù)不(bù)在(zài)這(zhè)贅述了(le/liǎo)。
3. 在(zài)實際開發過程中的(de)一些小問題
在(zài)開發過程中,通過摸索查資料,收集了(le/liǎo)一些值得提出(chū)來(lái)的(de)經驗:
a) 相對于(yú)原來(lái)的(de)for語句foreach具有更好的(de)執行效率,foreach的(de)平均花費時(shí)間隻有for的(de)30%。通過測試結果在(zài)for和(hé / huò)foreach都可以(yǐ)使用的(de)情況下,我們推薦使用效率更高的(de)foreach。另外, 用for寫入數據時(shí)間大(dà)約是(shì)讀取數據時(shí)間的(de)10倍左右;
b) 在(zài)asp.net程序中,使用sa賬号的(de)是(shì)一種非常不(bù)安全的(de)做法,它具有在(zài)數據庫上(shàng)執行任何操作的(de)權限。黑客可以(yǐ)調用類似于(yú)xp_cmdshell這(zhè)樣的(de)擴展存儲過程進行攻擊;
c) 在(zài)處理數據交互的(de)時(shí)候,盡量将組織SQL語句的(de)處理放到(dào)中間層(比如專門的(de)數據操作類、存儲過程等),這(zhè)是(shì)防止注入式攻擊的(de)有效方法;
d) 避免到(dào)服務器的(de)不(bù)必要(yào / yāo)的(de)往返過程。使用 Page.IsPostBack 避免對往返過程執行不(bù)必要(yào / yāo)的(de)處理;
e) 一定要(yào / yāo)禁用調試模式;
f) 一般情況下,讀取大(dà)量數據,對返回數據不(bù)做大(dà)量處理用SqlDataReader.對返回數據大(dà)量處理用DatSet比較合适.對SqlDataReader和(hé / huò)DataSet的(de)選擇取決于(yú)程序功能的(de)實現;
g) 數據綁定建議使用<%# ctype(Container.DataItem,DataRowView).Row("字段名") %>。數據量大(dà)的(de)時(shí)候可提高幾百倍的(de)速度;
以(yǐ)上(shàng)僅僅是(shì)個(gè)人(rén)的(de)部分收集,個(gè)人(rén)觀點很不(bù)全面,有些内容還顯得十分空洞,或許還有錯誤,希望在(zài)以(yǐ)後的(de)學習實踐中繼續進步、繼續積累。