ASP.NET組件設(shè)計(jì)淺析
ASP.NET組件設(shè)計(jì)一、什么是組件?
查看MSDN,微軟是這樣給組件定義的:在 .NET Framework 中,組件是指實(shí)現(xiàn) System.ComponentModel.IComponent 接口的一個(gè)類,或從實(shí)現(xiàn) IComponent 的類中直接或間接派生的類。這是從純語言(技術(shù))角度下的定義,通俗的講,組件是“可獨(dú)立運(yùn)作的軟件單元”,這里強(qiáng)調(diào)獨(dú)立運(yùn)作,也就代表著組件必須擁有低耦合性、高重用性等特點(diǎn)。微軟將軟件劃分為兩部分:其一是Component,意指具備特定功能、可獨(dú)立運(yùn)作、不具備UI接口的單元;其二是Control,也就是我們常說的控件,意指具備特定功能、可獨(dú)立運(yùn)作的UI接口單元。
ASP.NET組件設(shè)計(jì)二、學(xué)習(xí)ASP.NET組件需要掌握的知識(shí)
任意掌握一門.net語言,建議使用C#,C#是一門全新的語言,但又借鑒了C++和JAVA的語法,同時(shí)引入了一些新概念,在程序員中口啤不錯(cuò)。
理解IIS的運(yùn)行機(jī)制和ASP.NET的運(yùn)行模式。
熟練掌握J(rèn)avaScript,該腳本語言強(qiáng)大的功能在處理客戶端動(dòng)作時(shí)表現(xiàn)非常出色,基本上所有的自定義組件都離不開JavaScript,同時(shí),CSS和DHTML也是要心知肚明的。沒辦法,他們很少會(huì)單獨(dú)出現(xiàn),總是喜歡集體演出。
ASP.NET組件設(shè)計(jì)三、組件設(shè)計(jì)的難度
這個(gè)問題不用問,也許您猜出了幾分,一個(gè)字:難。
您也許會(huì)有所察覺,在編寫asp.net應(yīng)用程序時(shí),很少會(huì)對viewstate作深入的研究,原因很簡單,因?yàn)閂iewState本身設(shè)計(jì)的用戶對象本來就不是應(yīng)用程序員,而是組件設(shè)計(jì)員。如果不是因?yàn)榭蛻舳诵枰?,您也不?huì)在asp.net中編寫大量的javascript腳本,而在組件設(shè)計(jì)中,很難逃脫干系。不止這些,是否設(shè)計(jì)成服務(wù)器組件?我們的組件是繼承Control、還是繼承WebControl或是繼承Component?在組件中,需要自定義Attribute嗎?需要實(shí)現(xiàn)數(shù)據(jù)綁定嗎?如何繪制組件的外觀?如何和IIS通訊?需要post-back嗎?很多很多的問題,都需要組件設(shè)計(jì)者——辛苦的您去一一考慮。
所以,如果您不屑一顧地說:不就是設(shè)計(jì)一個(gè)組件嗎?這有何難!那么,我會(huì)嘿嘿一笑,因?yàn)槲抑溃欢ㄔ陂_玩笑。
但是,千萬別怕,“程序員需要探索精神哦!”
ASP.NET組件設(shè)計(jì)四、基類的選擇
如果我們設(shè)計(jì)的是一個(gè)WEB可視控件,并且構(gòu)成WEB頁的一部分,那么可以繼承Control類或者WebControl類。如果是一個(gè)非可視控件,可以繼承Component,繼承此類的控件設(shè)計(jì)時(shí)不會(huì)出現(xiàn)在頁面上,而是出現(xiàn)在Component Tray中。還記得OpenFileDialog控件嗎?這個(gè)文件打開對話框控件就是出現(xiàn)在Component Tray控件中的。
如果我們只是在已有的控件基礎(chǔ)上增強(qiáng)功能,那么就繼承該已有的控件吧。
ASP.NET組件設(shè)計(jì)的相關(guān)情況就向你介紹到這里,希望對你了解ASP.NET組件設(shè)計(jì)有所幫助。
【編輯推薦】