構建asp

來源:互聯網
上載者:User
構建asp_net邏輯構件庫
概要
使用asp.net開發高重用,松耦合,架構良好的web 應用程式。並且可以形成高可用的構件庫。

對象
本文主要針對使用asp.Net開發BS系統的開發人員、專案經理以及負責軟體品質的領導。

背景以及解決之道
背景,應用軟體的特點:1、看重業務,業務繁雜,客戶獨特要求很多,版本眾多,有些公司對每個客戶都要產生一個新的版本,很少有人瞭解所有版本之間的差別,如此之多的版本成為公司的繁重負擔,2、產品功能耦合嚴重,功能很難複用,3、軟體修改任務繁重,也許這是最讓人頭疼的,一個項目開發完之後,客戶不斷的提出修改意見,很多開發人員長期的陷入修改任務中。這些特點和問題使公司開發部門象雪球一樣越滾越大,工作量越來越重。

解決之道:

針對以上問題,應用軟體開發可以使用以下方法解決問題:

1、 提取構件,提高重用。

2、 介面換膚,容易修改,介面多變。

3、 指令碼傳參,避免耦合。



內容
架構:包括頁面、構件庫、資料群組件庫、資料群組件工廠四個部分。頁面負責網站整體外觀並且載入構件庫,構件庫提供邏輯功能,資料群組件庫提供業務資料、資料群組件工廠負責產生資料對象。這四個部分可以概括為兩庫兩紐帶。頁面是構件庫和使用者的紐帶,資料群組件工廠是構件庫和資料群組件的紐帶。



1、 頁面
頁面負責網站整體外觀並且載入構件庫。

頁面是網站整體UI的表現,主要工作是圖片製作,頁面切割,載入構件,並且給構件傳遞參數,並且要負責網站導航。

分工: 美工和熟練html的人員開發。



2、 構件庫
這個是架構的核心,我們使用使用者控制項(user control )可以方便,快捷的完成這3點:

1、提取構件,提高重用。

2、介面換膚,容易修改,介面多變。

3、指令碼傳參,避免耦合。

1.提取構件,提高重用。

把有一定邏輯功能的處理部分封裝成使用者控制項,這很容易,主要是怎麼重用,一般我們主要在同一個工程中使用使用者控制項,但是只有跨工程使用,才能實現重用,其實,codeBihand技術是一種繼承關係,使用者介面繼承自類庫,所以把使用者控制項所在類庫引用到工程中,並且把使用者控制項的ascx代碼放入工程下的目錄中,就可以像使用同一個工程中的使用者控制項一樣了。

另外,如果需要調試,可以原始碼放入使用者控制項所在目錄,即可跟蹤調試。

2. 介面換膚,容易修改,介面多變。
使用者控制項的介面很容易修改,這個也要深刻理解CodeBihand技術,多個ascx檔案(控制項ui代碼)可以對應同一個cs檔案(控制項類代碼)。我們也需要這樣做,例如:



這是一個登入構件,功能是接受使用者輸入,驗證使用者,返回登陸資訊,如果成功,導向其他頁面。 這個構件完成之後,我們發現還需要一個能夠放在導航條上的登陸構件,這是我們有3個選擇,1,建立一個,複製代碼,代碼複用,不過代碼重複帶來到的問題是相當麻煩的。2,擴充構件功能,通過一個參數決定怎麼顯示。這有一個問題,要修改程式,是程式變得複雜,並且使用代碼控制顯示往往在以後的維護階段很麻煩,動不動就需要修改程式,3,作一套皮膚,程式員輕鬆了,代碼不用改動,並且皮膚是可以方便修改的,維護也容易。




這個就是導航條上的登陸構件。

讓這2個UI部分對應同一cs代碼,是個好主意。



在Microsoft Visual Studio .NET 2003開發工具中,對這個支援的不是很好,它沒有很好的對這種代碼的組織形式,看上去其中一個控制項的cs代碼好像丟了一樣。如圖:



GCon_lineLLogin.ascx 的代碼看上去關聯不上,不過不影響使用。

可能是微軟也沒有想到,不過我們確實需要這樣用,並得到了實惠。

分工:軟體工程師在經過詳細設計,功能劃分,並且開發出構件,可能不是很美觀,然後,美工可以拿走構件的皮膚,製作出多套不同皮膚的構件。而構件的編碼只有一份,這樣,即實現了構件的多樣化,又避免了多個版本的產生。

3、 指令碼傳參,避免耦合。

控制項的使用就必然涉及到與其他控制項和頁面的互動問題。對於大部分使用者控制項,它與頁面和其他使用者控制項的互動並不是很複雜,比如上面的登入控制項,僅僅需要知道登入成功後,要顯示那個頁面,對於這種簡單的互動就要使用指令碼傳遞參數,就是在頁面中書寫代碼,而不使用codebihand技術。在頁面上寫的代碼更容易改變,降低了強耦合。

下面看一看怎麼寫指令碼代碼:




通過分析,發現頁面部分與codebihand代碼是中繼承的關係。所以我們就可以重載OnInit()方法。在頁面開發執行是就加入我們的操作。採用這種方式傳遞參數,在任何時候改變這個參數的值都很方便,程式也不需要編譯。

錯誤的做法,在使用者控制項中直接決定匯入哪個頁面,不留參數,這個使用者控制項會因為這個小小的舉動,完全失去靈活性,也失去了重用的可能。







附加:

使用者構件的活用,

asp.net 使用者構件的作用非常大,使用者構件首先是一個伺服器構件,它具有伺服器端的構件的優點,另外開發方便,非常適合應用軟體開發人員的需要。

要想活用使用者構件,需要瞭解以下幾點:

1, 深入瞭解Codebehind,它帶來的不僅僅是像開發win form 程式一樣開發應用。

2, 嘗試給使用者構件加屬性,事件,方法。充分擴充和理解使用者構件的功能。

3, 嘗試讓使用者構件繼承一個自訂的介面,介面是非常強大的,我們不得不用。

4, 動態載入使用者構件。同一個頁面上的多個使用者構件可以全部是動態載入的。

5, 載入使用另一個dll中的使用者構件,這中可以重用使用者構件, 構建我們自己的構件庫的基礎。

6, 讓美工給一個編譯好的使用者空間更護不同的皮膚(編輯ascx中的html代碼即可),可以發現因為ascx代碼的改變,使用者構件將有各種各樣的面孔,形成多樣的介面系列。

7, 不通過改變頁面的cs代碼給使用者構件傳遞參數,這樣就可以實現構件和頁面的松耦合,頁面上添加,減少構件, 傳遞參數,統統不編譯器。





總結:

使用C#開發業務構件和構件工廠,這裡暫時沒有寫出, asp.net構件庫和業務構架庫共同配合可以統一完成優質的開發流程,包括美工和程式員的分工,形成美工素材庫等,積累起公司的資源。





相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.