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年

主站蜘蛛池模板: 久青草网站| а∨天堂一区中文字幕| 青草视频久久| 狠狠做深爱婷婷久久一区| 九色在线观看视频| av在线无码浏览| 亚洲丝袜中文字幕| 中文字幕欧美日韩高清| 黄片在线永久| 色综合久久无码网| 色哟哟国产精品| 亚洲国产成人无码AV在线影院L | 亚洲熟妇AV日韩熟妇在线| 亚洲中文字幕97久久精品少妇| 久久一本精品久久久ー99| 国产欧美综合在线观看第七页| 亚洲色图欧美视频| 免费全部高H视频无码无遮掩| 国产美女自慰在线观看| 伊人狠狠丁香婷婷综合色| 亚洲综合精品第一页| 91精品久久久无码中文字幕vr| 国产性爱网站| 国产91成人| 高清久久精品亚洲日韩Av| 强奷白丝美女在线观看| 99热最新网址| 亚洲成a人片| 亚洲综合第一区| 国产亚洲欧美在线人成aaaa| 天天躁日日躁狠狠躁中文字幕| 亚洲嫩模喷白浆| 国产午夜无码专区喷水| 成人免费午夜视频| 天天色综合4| 伊人久久精品亚洲午夜| 国产人前露出系列视频| 成人在线欧美| 538国产视频| 美女一级毛片无遮挡内谢| 免费播放毛片| 91无码视频在线观看| 国产美女一级毛片| 色婷婷在线影院| 国产天天色| 亚洲国产精品无码AV| 国产视频资源在线观看| 国产成人综合亚洲欧洲色就色| 久久久久国产精品免费免费不卡| 亚洲丝袜第一页| 五月丁香在线视频| 波多野结衣无码AV在线| 国产成人艳妇AA视频在线| 成人午夜视频在线| 久久男人视频| 国产成人AV综合久久| 欧美区国产区| 伊人久久大香线蕉aⅴ色| 在线观看欧美精品二区| 成人在线不卡视频| 亚洲av无码片一区二区三区| 中文字幕首页系列人妻| 97国内精品久久久久不卡| 萌白酱国产一区二区| 99re精彩视频| 久久久噜噜噜久久中文字幕色伊伊 | 欧美日本在线观看| 亚洲福利视频一区二区| 亚洲色无码专线精品观看| 国产天天色| 国产丝袜精品| 欧美在线观看不卡| 国产精品人莉莉成在线播放| 欧美午夜在线视频| 欧美成人亚洲综合精品欧美激情| 亚洲精品成人片在线观看| 午夜影院a级片| 国产精品免费入口视频| 伊人91在线| 丁香六月激情婷婷| 国产精品自在拍首页视频8 | 久久精品免费看一|