詳解ASP.NET開發(fā)
開發(fā)完一個項目后,如果能夠很好的對這個項目做個總結(jié),對我們以后的項目開發(fā)以及個人技術(shù)的積累都會有很大的幫助。最近在外派公司做完一個系統(tǒng),在此進行一下深入的總結(jié),也希望給讀者帶來一些個啟示。
一.系統(tǒng)介紹
本系統(tǒng)是某一跨國公司北京Site的班車預(yù)訂系統(tǒng)(班車超多,往返于北京和天津之間)??蛻簦ü締T工)能夠在本系統(tǒng)中已經(jīng)發(fā)布的班車路線里預(yù)訂座位;如果沒有相應(yīng)的班車(座位已滿),可以提交申請,讓Travel Clerk新建立班車路線;能夠?qū)ο到y(tǒng)運行進行各種的統(tǒng)計生成報表,比如班車運行效率,司機出車情況等等。
二.應(yīng)用的開發(fā)技術(shù)和工具
ASP.NET 2.0, ASP.NET Ajax, SqlServer 2000, C#, NHibernate, Crystal Report
使用的是常用的技術(shù),我認為開發(fā)一個系統(tǒng)不一定要用***的技術(shù),這要看項目開發(fā)的需求,以及參與開發(fā)人員掌握的情況。如果項目緊的話,就需要采用成熟(傳統(tǒng)ASP.NET技術(shù))的技術(shù)進行有效的開發(fā)。系統(tǒng)的業(yè)務(wù)層和數(shù)據(jù)訪問層在此系統(tǒng)實際上歸為了一個層里,都由Nhibernate實現(xiàn)。Nhibernate是一個.Net實現(xiàn)的面向?qū)ο蟮目蚣?,即ORM. 我覺得和Linq很類似。
三.項目開發(fā)中遇到的實際問題
令我印象最深刻的就是,在開發(fā)中系統(tǒng)需求一直在變化,因此一聽到要改東西,心里就窩火。
要知道需求頻繁的變更,對于開發(fā)來說打擊很大,殊不知不斷的改代碼,系統(tǒng)會變得脆弱些,當(dāng)然這樣應(yīng)當(dāng)加大測試的力度。
在開發(fā)之前的設(shè)計中也有一個失誤,沒有把業(yè)務(wù)考慮全,造成在開發(fā)中要費很大的力量進行彌補(在此提一下設(shè)計的失誤之處,一般情況下班車是不跨天運營的,在開發(fā)中期,客戶竟然提出班車有可能跨天,比如晚上11點出發(fā),后半夜12點半去機場接人),超郁悶。
在技術(shù)上基本上沒有什么障礙,在組員的互相交流中很快搞定。
四.開發(fā)中值得一提的幾個技術(shù)點
1. 模板頁的應(yīng)用
當(dāng)然了既然用ASP.NET開發(fā),基本上會用到模板頁的,但是使用的深度不同。比如說Master Page和Content Page之間(雙向的)的相互訪問。一般情況下是Content Page訪問Master Page,然而反過來呢?在次提出一個建議,當(dāng)Master Page訪問Content Page時應(yīng)當(dāng)是松散耦合的, 可以在Master Page中生成事件讓Content Page來訂閱。
還有一點值得一提,因為Master Page是一個Naming Container,所以在它之下的控件的ID之前是要墜上Master Page的ID的,此外Content Place Holder和GridViewRow等等都是Naming Container,因此在應(yīng)用FindControl時要注意,此函數(shù)是不能穿透Naming Container來尋找指定Control的。
2. 跨頁提交
跨頁提交是ASP.NET 2.0的一個新特性,當(dāng)提交頁面要向另外一個頁面?zhèn)鬟f大量數(shù)據(jù)時,可以考慮用跨頁提交技術(shù)。因為其他技術(shù)都不怎么合適,比如Session,QueryString(地址欄參數(shù)***限制為2K)等等。
3. 動態(tài)生成控件以及響應(yīng)事件
在頁面中有時需要動態(tài)生成很多的控件,這些還要相應(yīng)事件。在這種情況下要注意,如果不做好處理,當(dāng)頁面進行回發(fā)時,動態(tài)控件會丟失。我們需要在每次在頁面的Init事件里生成這些動態(tài)控件。
4. Javascript和Css
開發(fā)這個系統(tǒng)沒有用到什么流行的技術(shù),但是Javascript和Css要求很高。因此在這兩方面有所提高。在次提一下,做ASP.NET開發(fā)的人員有相當(dāng)一部分人員是由桌面開發(fā)轉(zhuǎn)來的,因此大家的Javascript和Css功底一般不深,老是認為這些是美工他們的工作,心理存在某些個抵制,看不起Javascript。這是一個認識上的問題,做Web開發(fā),不管.NET有多精深,ASP.NET最終要做的還是要把html標(biāo)記推送到客戶的瀏覽器里。如果不懂html, javascript, css,我可以說ASP.NET開發(fā)是永遠做不到精益求精的。啟示做Web開發(fā)要求掌握很多的東西, http協(xié)議,IIS,web技術(shù),服務(wù)器部署等等。還是那句話,學(xué)海無涯,技術(shù)無止境!
5. Nhibernate
開發(fā)這個系統(tǒng)對Nhibernate有了一定的認識,ORM框架用起來確實很方便,我們用對象去考慮問題,不必再寫那些個繁瑣的Sql語句,當(dāng)然些hql還是要懂得sql才行。Linq的目的也在此。但是對于復(fù)雜的統(tǒng)計功能,我覺得Nhibernate就不合適了,因此這個系統(tǒng)在這方面還是用的Sql。
6. 高效率使用Google查詢
這個項目確實很緊,做Web開發(fā)離開互聯(lián)網(wǎng),離開Google不可想象。也許也應(yīng)了這句話,Web開發(fā)來源于互聯(lián)網(wǎng),回報于互聯(lián)網(wǎng)。如果能高效的借助Google快速找到自己要解決問題的方案,會加快項目的開發(fā)。請在這里閱讀本人的Google搜索心得。以上介紹ASP.NET開發(fā)
【編輯推薦】