MVC框架的優(yōu)點有哪些?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
成都創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供揭陽網(wǎng)站建設(shè)、揭陽做網(wǎng)站、揭陽網(wǎng)站設(shè)計、揭陽網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、揭陽企業(yè)網(wǎng)站模板建站服務(wù),十載揭陽做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。ASP.NET MVC的主要優(yōu)勢
ASP.NET在商業(yè)上取得了巨大成功,但正如前所述,其它的WEB開發(fā)平臺也在不斷向前發(fā)展。盡管微軟一直在努力把緾繞在WEB Forms上的“蜘蛛網(wǎng)”清除掉,但其內(nèi)在的設(shè)計理念已經(jīng)落伍了。
2007年10月份,在美國德克薩斯州奧斯丁市召開的第一屆ALT.NET會議上,微軟公司副總裁Scott Guthrie發(fā)布并演示了一個基于ASP.NET的嶄新的MVC WEB開發(fā)平臺,明確的被設(shè)計為針對類似Rails這樣的技術(shù)的直接響應(yīng),也是對業(yè)界關(guān)于Web Forms的批評的回應(yīng)。本章的余下部分描述這個新的平臺如何解決Web Forms的種種不足,并令A(yù)SP.NET重返頂峰。
(一) MVC體系結(jié)構(gòu)
把MVC構(gòu)建模式和ASP.NET MVC框架之間的區(qū)別搞清楚是十分重要的。MVC模式并不是新生事物-這要追溯到1978年施樂公司帕洛阿爾托研究中心的Smalltalk項目-之所以在今天的WEB開發(fā)領(lǐng)域廣受歡迎,有以下原因:
MVC應(yīng)用程序的用戶交互符合自然周期:用戶執(zhí)行一個動作,作為響應(yīng),應(yīng)用程序改變它的數(shù)據(jù)模型,并向用戶提供一個更新了的視圖。應(yīng)用程序就一直這樣循環(huán)的運行。這種模式非常適合WEB應(yīng)用程序傳遞
一連串的HTTP請求和響應(yīng)。
WEB應(yīng)用程序必然要涉及若干不同的技術(shù)領(lǐng)域(數(shù)據(jù)庫,HTML,可執(zhí)行代碼),通常這些技術(shù)都分布在不同層面。而MVC的概念很自然的就和這些技術(shù)的組合模式對應(yīng)起來了。
ASP.NET MVC框架實現(xiàn)了MVC模式,而且這樣做,有利于更好分離關(guān)注。實際上,ASP.NET MVC實現(xiàn)了一個特別為WEB應(yīng)用開發(fā)定制的MVC模式。在第4章你將會了解這個體系的更多的理論,并親身體驗。
通過包含和改進(jìn)MVC模式,ASP.NET MVC框架相對于Ruby on Rails這樣的框架具備了強(qiáng)大的競爭力,同時也將MVC模式引入到主流的.NET領(lǐng)域。通過使用其它平臺的開發(fā)者提供的對ASP.NET MVC的體驗評估和實際應(yīng)用中反饋,ASP.NET MVC在許多方面甚至已經(jīng)超越了Rails。
(二) 可擴(kuò)展性
你的桌面型電腦都是由一些相互獨立的部分組成,它們之間通過標(biāo)準(zhǔn)的公開的文檔化的接口相互聯(lián)系。你可以很輕松的把你的顯卡和硬盤換成另一個制造商生產(chǎn)的產(chǎn)品,并確信它們可以插進(jìn)相應(yīng)的槽位并正常工作。MVC框架的原理和PC一樣也是構(gòu)建在一系列相互獨立的組件的基礎(chǔ)之上-如一個可信的.NET接口或繼承抽象基類的用戶類-這樣你就可以輕而易舉的用你自己的實現(xiàn)替換這些組件,諸如路由系統(tǒng),視圖引擎,控制器工廠等等。
ASP.NET MVC設(shè)計者對如何使用MVC框架的每個組件向你提供了三個選擇:
使用默認(rèn)組件實現(xiàn)(對于大部分應(yīng)用來說已經(jīng)足夠了)
從默認(rèn)實現(xiàn)繼承實現(xiàn)一個子類,以對某些行為進(jìn)行微調(diào)
使用新的接口或抽象基類實現(xiàn)替換這些組件
這些看起來有點像ASP.NET 2.0中的供給者模式(provider model),但它更進(jìn)了一步-完全進(jìn)入了MVC框架的核心。從第10章起,你將會了解到各種各樣的組件,并且知道為什么要調(diào)整或替換它們。
(三) 對HTML代碼和HTTP的嚴(yán)密控制力(Tight Control over HTML and HTTP)
ASP.NET MVC知道產(chǎn)生整潔、符合標(biāo)準(zhǔn)的標(biāo)記的重要。它內(nèi)置的HTML helper方法的輸出完全符合標(biāo)準(zhǔn),但同Web Forms相比較其更多的重要變化體現(xiàn)在其設(shè)計哲學(xué)上。以往你對Web Forms自動生成的一大堆令人作嘔的封裝的HTML標(biāo)記只有很小的控制權(quán),作為替代,MVC框架鼓勵你使用CSS設(shè)計簡潔、優(yōu)雅的標(biāo)記。
當(dāng)然,如果你想在你的頁面擺上一些現(xiàn)成的復(fù)合UI元素的小玩意,像日歷或級聯(lián)菜單,ASP.NET MVC中的“無特殊要求”的標(biāo)記方法讓你可以輕易的使用好的UI庫,比如JQuery或雅虎的YUI庫。微軟已經(jīng)把JQuery內(nèi)置為ASP.NET MVC默認(rèn)項目模板的一部分,JavaScript程序員會對ASP.NET MVC和當(dāng)前流行的JQuery庫結(jié)合如此緊密感到欣慰,甚至在微軟自己的內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN)服務(wù)器上你都可以直接引用Jquery.js文件。我們將在第20章涉及到JQuery。
ASP.NET MVC生成的頁面不包含任何視圖狀態(tài)數(shù)據(jù),因此它們比典型的ASP.NET Web Forms頁面會小數(shù)百K。盡管今天的寬帶連接已經(jīng)非常快了,但這種帶寬的節(jié)約依然會給最終用戶帶來巨大的體驗改善。
和Ruby on Rails一樣,ASP.NET MVC和HTTP合作和諧。你對往返于瀏覽器和服務(wù)器之間請求擁有完整的控制權(quán),這樣你就按你的喜好可以微調(diào)你的用戶體驗。AJAX現(xiàn)在實現(xiàn)起來很簡單,而且沒有任何影響客戶端狀態(tài)的自動回發(fā)。關(guān)注Web開發(fā)領(lǐng)域的任何開發(fā)者幾乎肯定會發(fā)現(xiàn),ASP.NET MVC會極大減少工作量,在同樣的時間內(nèi)完成的任務(wù)會更加令人滿意。
(四) 易測試性
MVC使你在應(yīng)用程序的可維護(hù)和可測試方面邁出了一大步,因為你可以自然的根據(jù)程序要實現(xiàn)的不同功能將其分離成許多不同的、相互獨立的軟件塊。然而,ASP.NET MVC的設(shè)計師們并不滿足于到底就止步了。為了支持單元測試,他們在框架中引入了面向組件設(shè)計的概念,并確保每個分離的代碼塊都以滿足單元測試和模擬工具的需要的形式構(gòu)建。
出于為開發(fā)者考慮的角度,他們還在Visual Studio向?qū)е性黾恿藙?chuàng)建單元測試向?qū)?,它可以使用許多開源的單元測試工具,如NUnit和xUnit,甚至微軟自己的MSTest。即使你以前從來沒有寫過單元測試代碼,你也會有一個良好的開始。
本書中,你會看許多為ASP.NET MVC控制器(controller)和行為(action)編寫的簡潔、簡單的單元測試示例,這些示例會使用各種測試和模擬策略來冒充框架組件的實現(xiàn),以確定實際運行中可能出現(xiàn)的任何情況。
易測試性不只是體現(xiàn)在單元測試中,ASP.NET MVC應(yīng)用程序和UI自動化測試工具之間工作也非常好。你可以模擬用戶交互的情景編寫測試腳本,再不用去猜測HTML元素的結(jié)構(gòu),使用的CSS類,或者框架將要生成的ID,也用不著擔(dān)心頁面的結(jié)構(gòu)會出現(xiàn)莫名其妙的變化。
(五) 強(qiáng)大的路由系統(tǒng)
URL的風(fēng)格伴隨著Web應(yīng)用技術(shù)的發(fā)展也在不斷發(fā)展。像下面的URL:
/App_v2/User/Page.aspx?action=show%20prop&prop_id=82742
將會逐漸稀少,它將被一種簡單的、整潔的格式所代替,就像下面的這個:
/to-rent/chicago/2303-silver-street
之所以關(guān)注URL的結(jié)構(gòu)問題,有以下幾個很好的原因:第一,搜索引擎給在URL中搜索關(guān)鍵字分配了很大的權(quán)重。搜索“芝加哥的租金”會更容易匹配上面那個簡單的URL。第二,現(xiàn)在許多網(wǎng)絡(luò)用戶的理解能力足夠搞明白一個URL的意思,而且他們很欣賞在瀏覽器地址欄輸入地址時的智能導(dǎo)航選項。第三,當(dāng)人們理解了一個URL的結(jié)構(gòu),他們更有可能去鏈接它,把它和朋友共享,甚至可以通過電話大聲的讀出來。第四,它不會把你的應(yīng)用程序的技術(shù)細(xì)節(jié),目錄,文件名結(jié)構(gòu)公開到整個互聯(lián)網(wǎng)上,因此,你可以自由的改變底層的實現(xiàn)而不會影響到你已經(jīng)擁有的連接。
早期的框架難以實現(xiàn)精準(zhǔn)的URL,不過ASP.NET MVC默認(rèn)使用System.Web.Routing命名空間很容易提供精準(zhǔn)的URL。它可以讓你控制你的URL的樣式,并將其和你的應(yīng)用相關(guān)聯(lián),為你提供創(chuàng)造一個有意義的、對用戶有用的地址樣式的自由,不需要遵守預(yù)定義的模式。另外,只要你愿意,你完全可以容易的定義時髦的REST風(fēng)格的URL樣式。你會第11章看到一個詳細(xì)的路由方案和關(guān)于URL的很好練習(xí)。
(六) 構(gòu)建于ASP.NET平臺好的部分之上
微軟現(xiàn)有的ASP.NET平臺已經(jīng)為開發(fā)實用和高效的web應(yīng)用程序提供了一整套成熟的、久經(jīng)考驗的組件和工具集。
首先也是最明顯的地方,因為ASP.NET MVC構(gòu)建在.NET平臺之上,所以用戶可以靈活的使用任意.NET語言編寫代碼和訪問相同API功能-不光是MVC里面的,也包括大量的系統(tǒng).NET類庫和浩瀚的第三方.NET庫。
其次,現(xiàn)有的ASP.NET平臺的一些功能-比如母版頁,表單驗證,成員資格,角色,profiles,還有國際化-能夠減少你需要開發(fā)和維護(hù)任意應(yīng)用程序的代碼量,這些功能在MVC框架中同樣有效,因為它本來就是一個杰出的Web Forms項目。你可以在ASP.NET MVC的項目中繼續(xù)使用一部分Web Forms內(nèi)置的服務(wù)器控件,以及你在早期的ASP.NET項目中創(chuàng)建的自定義控件。(不過不能再依賴Web Forms中的特有概念,比如視圖狀態(tài))
開發(fā)和布署是交替進(jìn)行的。ASP.NET不僅和Visual Studio緊密結(jié)合在一起,它也作為一種原生的web編程技術(shù)為Windows XP,Vista,7和服務(wù)器操作系統(tǒng)中安裝的Internet信息服務(wù)(IIS)所支持。IIS7發(fā)布后,將.NET托管代碼它的請求處理管道的原生部分,為其提供第一流的支持,這也是ASP.NET的特殊待遇。因為MVC應(yīng)用基于ASP.NET平臺核心,因此它也會同樣享受這些待遇。第23章我們會詳細(xì)說明如何在Windows服務(wù)器上的IIS中部署MVC應(yīng)用程序。
(六) 現(xiàn)代化的API
自微軟2002年發(fā)布 .NET平臺以來,它一直在持續(xù)的發(fā)展,支持甚至是定義了現(xiàn)代編程技術(shù)頂級水準(zhǔn)。
ASP.NET MVC是專為.NET 4.0打造的,所以它的API可以使用新的編程語言和運行時創(chuàng)新的所有益處,包含擴(kuò)展方法,lambda表達(dá)式,匿名和動態(tài)類型,語言集成查詢(LINQ)。許多MVC框架的API方法和編碼模式盡可能的比早期平臺整潔,更富表現(xiàn)力。
(七) ASP.NET MVC是開源的
和微軟先前的平臺不同,ASP.NET MVC的原始代碼你可以隨意下載,甚至可以對其進(jìn)行修改,重新編譯為你自己的版本。當(dāng)你的調(diào)試足跡深入到一個系統(tǒng)組件內(nèi)部,想對它的代碼進(jìn)行步進(jìn)(甚至閱讀原作者的注釋)時,代碼開源是非常有用的。另外,如果你想構(gòu)建一個更高級的組件,看看可能會發(fā)生什么,或者觀察內(nèi)置組件是如何工作的,這點也非常有幫助。
同時,如果你不喜歡某些工作的實現(xiàn)方式,或者你發(fā)現(xiàn)了一個錯誤,又或者你想訪問一些其它方式無法訪問的東西,開源好處是非常強(qiáng)大的。因為你自己就可以簡單的改變它。
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,的支持。
當(dāng)前文章:MVC框架的優(yōu)點有哪些-創(chuàng)新互聯(lián)
分享鏈接:http://jinyejixie.com/article16/dedigg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、云服務(wù)器、網(wǎng)站排名、電子商務(wù)、網(wǎng)頁設(shè)計公司、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容