999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

初探ASP.NET MVC設計模式

2018-12-28 20:41:40侯永剛
科學與財富 2018年30期

侯永剛

摘要:MVC是一種軟件架構的思想,該設計模式目前在很多領域都有著廣泛的應用前景,2009年,ASP.NET MVC1.0正式版上市,到目前已發(fā)展到了MVC5。ASP.NET MVC非常強調“關注點分離”的概念,而且從開發(fā)上來看就很容易讓開發(fā)人員做到“關注點分離”,這個優(yōu)勢是Web Form完全無法匹敵的。本文簡要闡述了ASP.NET MVC設計模式的概念,基本思想及其應用。

關鍵詞:設計模式;ASP.NET MVC;MVC;控制器;視圖

一、MVC設計模式概述

MVC不是一種程序語言,嚴格說起來也不算是個技術,而是開發(fā)時所使用的一種“架構(框架)”。它就像是一種開發(fā)觀念,或是一個存在已久的設計模式。

MVC最早是在1979年由Trygve Reenskaug所提出,并且應用于當時火紅的Smalltalk程序語言中。之所以會提出MVC的概念,主要目的就在于簡化軟件開發(fā)的復雜度,以一種概念簡單卻又權責分明的架構,貫穿整個軟件開發(fā)流程,通過“商業(yè)邏輯層”與“數(shù)據(jù)表現(xiàn)層”的切割,讓這兩部分的信息切割開來,用以撰寫出更模塊化、可維護性高的程序代碼。

MVC是一種軟件架構的思想,將一個軟件按照模型、視圖、控制器進行劃分。其中,模型用來封裝業(yè)務邏輯,視圖用來實現(xiàn)表示邏輯,控制器用來協(xié)調模型與視圖(視圖要通過控制器來調用模型,模型返回的處理結果也要先交給控制器,由控制器來選擇合適的視圖來顯示處理結果)。

模型:負責定義信息格式與信息訪問的界面,包括商業(yè)邏輯與信息驗證。

視圖:負責用戶界面(UI)相關呈現(xiàn),包括輸入與輸出。

控制器:負責控制系統(tǒng)運行的流程、跟瀏覽器如何交互、決定網(wǎng)頁操作的流程與動線、響應客戶端的各種要求、錯誤處理。

二、初探ASP.NET MVC

ASP.NET WebForm時,常用的開發(fā)模式也將整個應用程序分解為三個層次分別是表示層、事務層、數(shù)據(jù)訪問層,那么ASP.NET MVC的三層與原三層架構的關系是什么呢?

ASP.NET MVC僅僅是對原三層架構中的表示層進行解耦,主要實現(xiàn)HTML與C#代碼的分離。因此,其三層的功能主要如下:

View:視圖層,負責所有呈現(xiàn)在用戶面前的東西,最簡單的說法就是輸出與輸入。輸出工作就是呈現(xiàn)在瀏覽器上的界面,例如HTMl等;輸入工作就是將用戶輸入的數(shù)據(jù)傳回服務器,例如,在瀏覽器上呈現(xiàn)表單讓用戶輸入。

Model:模型,負責定義信息格式,對應應用狀態(tài)和業(yè)務功能的封裝,可以將它理解為同時包含數(shù)據(jù)和行為的領域模型(Domain Model)。Model接受Controller的請求并完成相應的業(yè)務處理。

Controller:控制器,接收用戶的請求、決定呈現(xiàn)哪個View(視圖)、接收用戶輸入的數(shù)據(jù)。

1.控制器

MVC模式中的控制器(Controller)主要負責響應用戶的輸入,并且在響應時修改模型(Model)。通過這種方式,MVC模式中的控制器主要關注的是應用程序流、輸入數(shù)據(jù)的處理,以及對相關視圖(View)輸出數(shù)據(jù)的提供。

過去的Web服務器支持訪問以靜態(tài)文件存儲在磁盤上的HTML頁面。隨著動態(tài)網(wǎng)頁的盛行,Web服務器也支持由存儲在服務器上的動態(tài)腳本生成的HTML頁面。MVC則略不同。URL首先告知路由機制去實例化哪個控制器,調用哪個操作方法,并為該方法提供需要的參數(shù)。然后控制器的方法決定使用哪個視圖,并對該視圖進行渲染。

URL并不與存儲在Web服務器磁盤上的文件有直接對應關系,而是與控制器類的方法有關。ASP.NET MVC對MVC模式中的前端控制器進行了改進,路由子系統(tǒng)在前面,之后才是控制器。

理解MVC模式在Web場景中工作原理的簡單方法就是記住:MVC提供的是方法調用結果,而不是動態(tài)生成(又名腳本)頁面。

2.模型

模型這個詞在軟件開發(fā)領域被多次引用,代表數(shù)百種不同的概念,如成熟度模型、設計模型、威脅模型和進程模型等。很少有開發(fā)會議會自始自終都不談一兩種模型的。即便把“模型”這個術語的范圍限定在MVC設計模式的上下文中,也仍然可以探討面向業(yè)務的模型對象和面向視圖的模型對象哪個更具有優(yōu)勢。

ASP.NET MVC中討論的是那些發(fā)送信息到數(shù)據(jù)庫,執(zhí)行業(yè)務計算并在視圖中渲染的模型對象。換句話說,這些對象代表著應用程序關注的域,模型就是要顯示、保存、更新和刪除的對象。

為了僅使用模型對象的定義就能構建出應用程序特性,ASP.NET MVC5提供了許多工具和特性?,F(xiàn)在就應該坐下來好好想一想要解決的問題,然后為了呈現(xiàn)涉及的主要對象,就要編寫一些簡單的C#類。準備好了上面的工作,接下來就可以使用MVC提供的工具來為每個模型對象的標準索引、創(chuàng)建、編輯和刪除功能構建控制器和視圖。

3.視圖

開發(fā)人員之所以花費大量的時間來重點設計控制器和模型對象,是因為在這些領域中,精心編寫的整潔代碼是開發(fā)一個可維護Web應用程序的基礎。

但是當用戶在瀏覽器中訪問Web應用程序時,這些工作他們是看不到的。用戶對應程序的第一印象,以及與應用程序的整個交互過程都是從視圖開始的。

視圖實際上就是應用程序的“大使”。顯而易見,如果應用程序的其他部分存在錯誤,那么設計再好,再沒有瑕疵的視圖也不能彌補這方面的不足。同樣,如果創(chuàng)建一個丑陋且難以利用的視圖,那么許多用戶將不會給應用程序提供證明它的功能多么強大、運行多么順暢的機會。

控制器可以返回輸出字符串到瀏覽器。但在一些重大的Web應用程序中,大部分的控制器操作需要以HTML格式動態(tài)顯示信息。如果控制器操作僅僅返回字符串,那么就需要有大量的字符串替換操作,這樣就會變得混亂不堪。因此,模板系統(tǒng)的需要越來越清晰,此時,視圖應運而生。

視圖的職責是向用戶提供界面。當控制器針對被請求的URL執(zhí)行完合適的邏輯后,就將要顯示的內容委托給視圖。

不像基于文件的Web框架,比如ASP.NET Web Forms和PHP,視圖本身不會被直接訪問,瀏覽器不能直接指向一個視圖并渲染它。相反,視圖總是被控制器渲染,因為控制器為它提供了要渲染的數(shù)據(jù)。

在一些簡單的情況中,視圖不需要或需要很少控制器提供的信息。更常見的情況則是控制器需要向視圖提供一些信息,所以它會傳遞一個數(shù)據(jù)轉移對象,叫做模型。視圖將這個模型轉換為一種適合顯示給用戶的格式。在ASP.NET MVC中,完成這一過程由兩部分操作,其中一個是檢查由控制器提交的模型對象,另一個是將其內容轉換為HTML格式。

三、 ASP.NET MVC的開發(fā)觀念

在MVC模式的開發(fā)中,應該具有正確的開發(fā)觀念,強大的工具若沒有正確的觀念支持,就像是給你一臺馬力強又省油的手動檔汽車,而你卻不知道離合器該如何正確使用,也許在開了一段時間之后,覺得車子還是開不快。

1.常見的問題有以下幾點

1)把Model理解成實體類(Entity)

在MVC中Model應該包含兩部分功能,一部分是處理業(yè)務邏輯,一部分是提供View顯示的數(shù)據(jù)。

它應該是業(yè)務邏輯真正的實現(xiàn)層。所以Model實際上是Bussiness Model(業(yè)務模型)。而Controller僅僅起一個“橋梁”作用,它負責把View的請求轉發(fā)給Model,再負責把Model處理結束的消息通知View。Controller的存在是為了使UI界面、UI邏輯、業(yè)務邏輯之間分離。

2)大量業(yè)務邏輯代碼堆積在Controller端

MVC的控制器,內里封裝了通訊,容易變成大而全的高度耦合的集中器。比如將業(yè)務邏輯寫在控制器里。

2.正確的開發(fā)觀念

1)關注點分離

關注點分離的意思就是,當你在進行軟件開發(fā)時,可以只關注于當前的對象上,一次僅關注于一個較容易理解與解決的部分,不要受到相同系統(tǒng)中其他對象的干擾,也包括對對象所做出的修正不會影響到其他對象的動作,能夠專注于完成手邊的工作,不但容易提升軟件質量,也可加快程序代碼理解的速度。

2)以習慣替換配置

以習慣替換配置是一種軟件設計模式,主要目的在于減少開發(fā)人員在架構時所決策的時間以及降低軟件設計過于彈性,而導致太復雜的情況,通過約定俗成的“開發(fā)習慣”,讓同一群人員得以共享同一套設計架構,減少思考時間,降低溝通成本,且不失軟件開發(fā)的彈性。

四、ASP.NET MVC應用中的請求處理

ASP.NET MVC開發(fā)模式不同于WebForm方式,不能直接訪問視圖,必須通過控制器,那么很多人可能會不理解其資源的請求處理方式,以下簡要介紹其請求處理過程。

1.每個HTTP請求的目標是Controller中的一個Action,具體體現(xiàn)為定義在Controller類型中的一個public方法。所以對請求的處理最終體現(xiàn)為對目標Controller對象的激活和對目標Action方法的執(zhí)行。

2.Controller的類型和Action方法的名稱及作為Action方法的部分參數(shù)可以直接通過請求的Url解析出來。

3.通過一個攔截器對抵達Web服務器的HTTP請求進行攔截。這個攔截器根據(jù)當前請求解析出目標Controller的類型和對應的Action方法的名稱,隨后目標Controller被激活,相應的Action方法被執(zhí)行。

4.Action方法執(zhí)行過程中,可以調用Model獲取相應的數(shù)據(jù)及改變其狀態(tài)。在Action執(zhí)行的最后階段一般會創(chuàng)建出一個View,后者最終被轉換為HTML以HTTP響應的形式返回到客戶端。

5.綁定在View上的數(shù)據(jù)被稱為ViewModel,來源于Model或者基于顯示要求進行的簡單邏輯計算。

五、總結

在軟件的開發(fā)中,最常發(fā)生的問題就是需求的變化。經常改變的需求,對于軟件質量與可維護性有很大的殺傷力,但這是事實,我們無法改變。而MVC設計模式以一種概念簡單卻又權責分明的架構,通過商業(yè)邏輯與數(shù)據(jù)表現(xiàn)的分離,可以撰寫出更模塊化、可維護性高的程序代碼。本文介紹了MVC模式的基本概念;ASP.NET MVC的三個基本部件及其間關系;并對ASP.NET MVC開發(fā)的正確觀念與其HTTP請求的處理過程進行了簡要的介紹,便讀者對ASP.NET MVC應用程序的開發(fā)有一個全面而正確的理解與認識。

參考文獻:

[1]黃保翕.ASP.NET MVC4開發(fā)指南[M].清華大學出版社,2013年

[2]鄒瓊俊.ASP.NET MVC企業(yè)級實戰(zhàn)[M]:清華大學出版社,2017年

[3]弗瑞曼[美].精通ASP.NET MVC5[M]:人民郵電出版社,2016年

主站蜘蛛池模板: 国产网站黄| 最新国产麻豆aⅴ精品无| 99久久精品国产综合婷婷| 91区国产福利在线观看午夜| 国产性生大片免费观看性欧美| 久久人人97超碰人人澡爱香蕉 | 99草精品视频| 波多野吉衣一区二区三区av| 日本人妻丰满熟妇区| 试看120秒男女啪啪免费| 国产成人综合亚洲欧洲色就色| 国产99热| 福利视频久久| 国产精品xxx| 国产一区二区色淫影院| 一本大道香蕉久中文在线播放| 日韩小视频网站hq| 都市激情亚洲综合久久| 亚洲国产精品人久久电影| 男女性色大片免费网站| 中文国产成人精品久久| 自慰高潮喷白浆在线观看| 国产成人久久综合777777麻豆 | 久热中文字幕在线| 女同国产精品一区二区| 国产精品私拍在线爆乳| 免费jizz在线播放| 综合网天天| 亚洲视频在线青青| 无码内射中文字幕岛国片| 高清精品美女在线播放| 亚洲国产精品成人久久综合影院| 欧美不卡二区| 久久国产亚洲偷自| 另类欧美日韩| 久草视频精品| 免费av一区二区三区在线| 亚洲Aⅴ无码专区在线观看q| 亚洲欧美一区二区三区蜜芽| 亚洲精品第一页不卡| 国产成人禁片在线观看| 怡红院美国分院一区二区| 亚洲国产中文在线二区三区免| 美女毛片在线| 国产一区二区三区在线精品专区| 亚洲精品无码专区在线观看| a国产精品| 99热这里只有精品5| 91麻豆精品国产91久久久久| 男女性午夜福利网站| 浮力影院国产第一页| 在线观看亚洲天堂| 狠狠色噜噜狠狠狠狠色综合久| 亚洲综合极品香蕉久久网| 999国内精品久久免费视频| 在线亚洲精品自拍| 不卡无码h在线观看| 欧美成人怡春院在线激情| 一级毛片不卡片免费观看| 丝袜国产一区| 天堂网亚洲系列亚洲系列| 亚洲性色永久网址| 色男人的天堂久久综合| 国产精女同一区二区三区久| 在线免费亚洲无码视频| 四虎亚洲精品| 亚洲欧美另类日本| 亚洲伊人久久精品影院| 99人体免费视频| 国产乱码精品一区二区三区中文 | 国内精品91| 亚洲国产成人精品青青草原| 国产精品美人久久久久久AV| 亚洲第一视频网站| 青青操视频在线| 日韩精品一区二区深田咏美| 97国产精品视频自在拍| 综合色天天| 免费午夜无码18禁无码影院| 亚洲精品手机在线| 亚洲成人黄色网址| AV无码无在线观看免费|