<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問(wèn)答1問(wèn)答10問(wèn)答100問(wèn)答1000問(wèn)答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問(wèn)答文章1 問(wèn)答文章501 問(wèn)答文章1001 問(wèn)答文章1501 問(wèn)答文章2001 問(wèn)答文章2501 問(wèn)答文章3001 問(wèn)答文章3501 問(wèn)答文章4001 問(wèn)答文章4501 問(wèn)答文章5001 問(wèn)答文章5501 問(wèn)答文章6001 問(wèn)答文章6501 問(wèn)答文章7001 問(wèn)答文章7501 問(wèn)答文章8001 問(wèn)答文章8501 問(wèn)答文章9001 問(wèn)答文章9501
        當(dāng)前位置: 首頁(yè) - 科技 - 知識(shí)百科 - 正文

        ASP.NET小結(jié)之MVC, MVP, MVVM比較以及區(qū)別(一)

        來(lái)源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 22:38:58
        文檔

        ASP.NET小結(jié)之MVC, MVP, MVVM比較以及區(qū)別(一)

        ASP.NET小結(jié)之MVC, MVP, MVVM比較以及區(qū)別(一):MVC, MVP和MVVM都是用來(lái)解決界面呈現(xiàn)和邏輯代碼分離而出現(xiàn)的模式。以前只是對(duì)它們有部分的了解,沒有深入的研究過(guò),對(duì)于一些里面的概念和區(qū)別也是一知半解。現(xiàn)在一邊查資料,并結(jié)合自己的理解,來(lái)談一下對(duì)于這三種模式思想的理解,以及它們的區(qū)別。歡迎各位高
        推薦度:
        導(dǎo)讀ASP.NET小結(jié)之MVC, MVP, MVVM比較以及區(qū)別(一):MVC, MVP和MVVM都是用來(lái)解決界面呈現(xiàn)和邏輯代碼分離而出現(xiàn)的模式。以前只是對(duì)它們有部分的了解,沒有深入的研究過(guò),對(duì)于一些里面的概念和區(qū)別也是一知半解。現(xiàn)在一邊查資料,并結(jié)合自己的理解,來(lái)談一下對(duì)于這三種模式思想的理解,以及它們的區(qū)別。歡迎各位高

        MVC, MVP和MVVM都是用來(lái)解決界面呈現(xiàn)和邏輯代碼分離而出現(xiàn)的模式。以前只是對(duì)它們有部分的了解,沒有深入的研究過(guò),對(duì)于一些里面的概念和區(qū)別也是一知半解。現(xiàn)在一邊查資料,并結(jié)合自己的理解,來(lái)談一下對(duì)于這三種模式思想的理解,以及它們的區(qū)別。歡迎各位高手拍磚。

        閱讀目錄:

        代碼如下:
        一. MVC, MVP, MVVM誕生的需求?

        二. 一段典型的耦合代碼

        三. MVC模式

             3.1 主動(dòng)MVC

             3.2 被動(dòng)MVC

             3.3 Web應(yīng)用中的MVC框架

             3.4 MVC總結(jié)

        一,MVC, MVP, MVVM誕生的需求?

        軟件中最核心的,最基本的東西是什么? 是的,是數(shù)據(jù)。我們寫的所有代碼,都是圍繞數(shù)據(jù)的。
        圍繞著數(shù)據(jù)的產(chǎn)生、修改等變化,出現(xiàn)了業(yè)務(wù)邏輯。
        圍繞著數(shù)據(jù)的顯示,出現(xiàn)了不同的界面技術(shù)。

        沒有很好設(shè)計(jì)的代碼,常常就會(huì)出現(xiàn)數(shù)據(jù)層(持久層)和業(yè)務(wù)邏輯層還有界面代碼耦合的情況。

        ORM等框架,解耦合了業(yè)務(wù)邏輯和數(shù)據(jù)之間的耦合,業(yè)務(wù)邏輯不再關(guān)心底層數(shù)據(jù)如何存儲(chǔ)和讀取。所有數(shù)據(jù)呈現(xiàn)給業(yè)務(wù)邏輯層的就是一個(gè)個(gè)的對(duì)象。
        而MVC, MVP, MMVM用來(lái)解決業(yè)務(wù)邏輯和視圖之間的耦合。

        二,一段典型的耦合代碼

        代碼如下:
        {

        SqlDataAdapter adapter = new SqlDataAdapter("select * from Table1","server=.;database=db;uid=sa;pwd=password");

        DataSet ds = new DataSet("ds1");

        adapter.Fill(ds);

        this.GridView1.DataSource = ds;

        this.GridView1.DataBind();

        }

        上面的這段代碼中,既包含了數(shù)據(jù)訪問(wèn),還包含的頁(yè)面展示。當(dāng)項(xiàng)目復(fù)雜程度更高,這種代碼就會(huì)變得非常難以維護(hù),層次也不清晰。

        三,MVC模式

        MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫。MVC開始是存在于桌面程序中的,M是指業(yè)務(wù)模型,V是指用戶界面,C則是控制器,使用MVC的目的是將M和V的實(shí)現(xiàn)代碼分離,從而使同一個(gè)程序可以使用不同的表現(xiàn)形式

        3.1 主動(dòng)MVC
        MVC的理論思想對(duì)應(yīng)的是主動(dòng)MVC, 這里的主動(dòng)的意思是, Model會(huì)主動(dòng)通知View更新。而我們使用MVC框架, Struts, asp.net mvc等都不是主動(dòng)MVC(視圖的更新都是通過(guò)Controller完成的)

        Model

        用于封裝與應(yīng)用程序的業(yè)務(wù)邏輯相關(guān)的數(shù)據(jù)以及對(duì)數(shù)據(jù)的處理方法。
        模型中數(shù)據(jù)的變化一般會(huì)通過(guò)一種刷新機(jī)制被公布。為了實(shí)現(xiàn)這種機(jī)制,那些用于監(jiān)視此模型的視圖必須事先在此模型上注冊(cè),從而,視圖可以了解在數(shù)據(jù)模型上發(fā)生的改變。

        View

        視圖層負(fù)責(zé)數(shù)據(jù)的展示。
        在視圖中一般沒有程序上的邏輯。為了實(shí)現(xiàn)視圖上的刷新功能,視圖需要訪問(wèn)它監(jiān)視的數(shù)據(jù)模型(Model),因此應(yīng)該事先在被它監(jiān)視的數(shù)據(jù)那里訂閱Model的事件。

        Controller

        控制器是M和V之間的連接器,用于控制應(yīng)用程序的流程。它處理事件并作出響應(yīng)。“事件”包括用戶的行為和數(shù)據(jù)模型上的改變。

        3.2 被動(dòng)MVC
        下圖是被動(dòng)MVC中的流程,和主動(dòng)MVC不同之處是, View沒有訂閱Model數(shù)據(jù)變化的事件,等待Model來(lái)通知需要根據(jù)新的數(shù)據(jù)來(lái)更新View. 在被動(dòng)MVC中,Controller負(fù)責(zé)通知View, 有數(shù)據(jù)變化,需要更新視圖。

         

         

        被動(dòng)MVC 中,與主動(dòng)MVC的區(qū)別在于:
        1、模型對(duì)視圖和控制器一無(wú)所知,它僅僅是被它們使用
        2、控制器使用視圖,并通知它更新數(shù)據(jù)顯示
        3、視圖僅僅是在控制器通知它去模型取數(shù)據(jù)的時(shí)候它才這么做(視圖并不會(huì)訂閱或監(jiān)視模型的更新) 

        3.3. Web應(yīng)用中的MVC框架
        Web中的MVC框架都是被動(dòng)MVC模式,因?yàn)閣eb應(yīng)用中, 由于http是基于請(qǐng)求和響應(yīng)方式協(xié)同工作的,因此當(dāng)服務(wù)器端的model(數(shù)據(jù))發(fā)生變化時(shí),它不會(huì)立即更新客戶端的view,只有客戶端重新請(qǐng)求或刷新頁(yè)面時(shí)才更新.

        下圖是典型的MVC框架中的MVC一個(gè)請(qǐng)求流程。

        3.4 MVC總結(jié)
        MVC優(yōu)點(diǎn)

        •由于MVC很好的分離了視圖層和業(yè)務(wù)層,所以它具有以下優(yōu)點(diǎn)
        •耦合性低
        •開發(fā)速度快
        •可維護(hù)性高
        •沒有控件的概念,對(duì)html沒有封裝,易于理解
        •和其它平臺(tái)(java, php)等更加相似。便于人才獲取

        MVC使用的誤區(qū)

        1.把Model理解成實(shí)體類(Entity),在MVC中Model應(yīng)該包含2部分功能,一部分是處理業(yè)務(wù)邏輯,一部分是提供View顯示的數(shù)據(jù)
        2.把業(yè)務(wù)邏輯全部放在Controller端

        這兩個(gè)誤區(qū)本質(zhì)上都是對(duì)Model的作用不明導(dǎo)致的。

        Model在MVC架構(gòu)中起的作用非常重要,它應(yīng)該是業(yè)務(wù)邏輯真正的實(shí)現(xiàn)層。所以Model的實(shí)際上是Business Model(業(yè)務(wù)模型)。而Controller僅僅起一個(gè)“橋梁”作用,它負(fù)責(zé)把View的請(qǐng)求轉(zhuǎn)發(fā)給Model,再負(fù)責(zé)把Model處理結(jié)束的消息通知View。Controller是用來(lái)解耦View和Model的,具體一點(diǎn)說(shuō),就是為了讓UI與邏輯分離(界面與代碼分離)。

        引自http://www.techopedia.com/definition/27454/model-mvc-aspnet

        代碼如下:
        Techopedia explains Model (MVC)
        The Model is the part of MVC which implements the domain logic. In simple terms, this logic is used to handle the data passed between the database and the user interface (UI).

        The Model is known as domain object or domain entity.
        The domain objects are stored under the Models folder in ASP.NET. The domain model represents the application perspective for the data to be handled whereas a view model is required to produce the engine that generates the View.

        This definition was written in the context of ASP.NET.

        MVC的缺點(diǎn)

        完美的MVC應(yīng)用場(chǎng)景應(yīng)該是這樣的:

        有個(gè)Student Model, 關(guān)聯(lián)StudentListView,  StudentEditView.
        對(duì)于StudentListView, Student Model提供Student的集合數(shù)據(jù)來(lái)顯示StudentListView
        對(duì)于StudentEditView, Student Model提供單個(gè)Student數(shù)據(jù)來(lái)展示StudentEditView并且響應(yīng)StudentEditView的保存操作。

        但是這只是完美的情況,實(shí)際應(yīng)用中,在ListView上,不單單顯示Student的信息,可能還需要這個(gè)Student的歷史成績(jī),家庭情況,  老師信息。而這些是Student Model不能提供的。
        也許我們可以擴(kuò)展Student Model, 將Student Model能夠提供的信息擴(kuò)展,包含成績(jī)信息等,這本身也可以。但是,如果Student顯示的View,這個(gè)需要只是需要額外的成績(jī)信息,另一個(gè)View只是需要額外的家庭信息,Student Model是不是有些疲于奔命,你能知道還會(huì)有多少個(gè)差異化的View的需求? 而且讓邏輯端代碼這樣不斷的修改來(lái)適應(yīng)View端,好嗎?

        由于MVC的設(shè)計(jì)思想是從Model出發(fā),而沒有考慮到View端的復(fù)雜性,這樣導(dǎo)致的問(wèn)題是Model難以符合復(fù)雜多變的View端變化。
        相對(duì)這點(diǎn),MVP和MVVM就要好得多。它們都獨(dú)立出了Presenter 和ViewModel來(lái)對(duì)應(yīng)每個(gè)View。

        聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        ASP.NET小結(jié)之MVC, MVP, MVVM比較以及區(qū)別(一)

        ASP.NET小結(jié)之MVC, MVP, MVVM比較以及區(qū)別(一):MVC, MVP和MVVM都是用來(lái)解決界面呈現(xiàn)和邏輯代碼分離而出現(xiàn)的模式。以前只是對(duì)它們有部分的了解,沒有深入的研究過(guò),對(duì)于一些里面的概念和區(qū)別也是一知半解。現(xiàn)在一邊查資料,并結(jié)合自己的理解,來(lái)談一下對(duì)于這三種模式思想的理解,以及它們的區(qū)別。歡迎各位高
        推薦度:
        標(biāo)簽: 區(qū)別 mvp mv
        • 熱門焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 你懂的免费在线观看| 爱情岛论坛免费视频| 野花香在线视频免费观看大全| 国产无遮挡裸体免费视频| 亚洲国产无线乱码在线观看| 99爱在线精品免费观看| 亚洲精品电影在线| av免费不卡国产观看| 亚洲人成网站在线观看播放动漫 | 香蕉大伊亚洲人在线观看| 四虎在线免费视频| 亚洲av永久无码精品三区在线4| 日本片免费观看一区二区| 亚洲手机中文字幕| 久久久久久国产精品免费免费| 亚洲欧洲另类春色校园网站| 我想看一级毛片免费的| 亚洲aⅴ天堂av天堂无码麻豆| 免费真实播放国产乱子伦| 亚洲精品国产日韩无码AV永久免费网| 亚洲欧洲日产国码高潮αv| 中文字幕一区二区免费| 日韩精品一区二区亚洲AV观看| 亚洲三级在线免费观看| 亚洲久热无码av中文字幕| 亚洲av无码天堂一区二区三区| 一级毛片人与动免费观看| 亚洲AV一宅男色影视| 色妞WWW精品免费视频| 一级特黄色毛片免费看| 亚洲AV无码成人精品区天堂 | a毛片免费在线观看| 亚洲国产精品久久丫| 大学生a级毛片免费观看| 无码的免费不卡毛片视频| 亚洲欧洲日产国码av系列天堂| 波多野结衣免费在线观看| 最新亚洲人成无码网www电影| 亚洲国产三级在线观看| 卡1卡2卡3卡4卡5免费视频| 日日摸夜夜添夜夜免费视频|