亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

淺析MVC模式與三層架構的區別

2019-11-17 01:47:48
字體:
來源:轉載
供稿:網友
淺析MVC模式與三層架構的區別

三層架構和MVC是有明顯區別的,MVC應該是展現模式(三個加起來以后才是三層架構中的UI層)三層架構(3-tier application) 通常意義上的三層架構就是將整個業務應用劃分為:表現層(UI)、業務邏輯層(BLL)、數據訪問層(DAL)。區分層次的目的即為了“高內聚,低耦合”的思想。1、表現層(UI):通俗講就是展現給用戶的界面,即用戶在使用一個系統的時候他的所見所得。 2、業務邏輯層(BLL):針對具體問題的操作,也可以說是對數據層的操作,對數據業務邏輯處理。 3、數據訪問層(DAL):該層所做事務直接操作數據庫,針對數據的增添、刪除、修改、更新、查找等。MVC是 Model-View-Controller,嚴格說這三個加起來以后才是三層架構中的UI層,也就是說,MVC把三層架構中的UI層再度進行了分化,分成了控制器、視圖、實體三個部分,控制器完成頁面邏輯,通過實體來與界面層完成通話;而C層直接與三層中的BLL進行對話。mvc可以是三層中的一個表現層框架,屬于表現層。三層和mvc可以共存。三層是基于業務邏輯來分的,而mvc是基于頁面來分的。MVC主要用于表現層,3層主要用于體系架構,3層一般是表現層、中間層、數據層,其中表現層又可以分成M、V、C,(Model View Controller)模型-視圖-控制器

曾把MVC模式和Web開發中的三層結構的概念混為一談,直到今天才發現一直是我的理解錯誤。MVC模式是GUI界面開發的指導模式,基于表現層分離的思想把程序分為三大部分:Model-View-Controller,呈三角形結構。Model是指數據以及應用程序邏輯,View是指 Model的視圖,也就是用戶界面。這兩者都很好理解,關鍵點在于Controller的角色以及三者之間的關系。在MVC模式中,Controller 和View同屬于表現層,通常成對出現。Controller被設計為處理用戶交互的邏輯。一個通常的誤解是認為Controller負責處理View和 Model的交互,而實際上View和Model之間是可以直接通信的。由于用戶的交互通常會涉及到Model的改變和View的更新,所以這些可以認為是Controller的副作用。MVC是表現層的架構,MVC的Model實際上是ViewModel,即供View進行展示的數據。 ViewModel不包含業務邏輯,也不包含數據讀取。而在N層架構中,一般還會有一個Model層,用來與數據庫的表相對應,也就是所謂ORM中的O。這個Model可能是POCO,也可能是包含一些驗證邏輯的實體類,一般也不包含數據讀取。進行數據讀取的是數據訪問層。而作為UI層的MVC一般不直接操作數據訪問層,中間會有一個業務邏輯層封裝業務邏輯、調用數據訪問層。UI層(Controller)通過業務邏輯層來得到數據(Model),并進行封裝(ViewModel),然后選擇相應的View。MVC本來是存在于Desktop程序中的,M是指數據模型,V是指用戶界面,C則是控制器。使用MVC的目的是將M和V的實現代碼分離,從而使同一個程序可以使用不同的表現形式。比如一批統計數據你可以分別用柱狀圖、餅圖來表示。C存在的目的則是確保M和V的同步,一旦M改變,V應該同步更新。MVC如何工作MVC是一個設計模式,它強制性的使應用程序的輸入、處理和輸出分開。使用MVC應用程序被分成三個核心部件:模型、視圖、控制器。它們各自處理自己的任務。視圖V視圖是用戶看到并與之交互的界面。對老式的Web應用程序來說,視圖就是由HTML元素組成的界面,在新式的Web應用程序中,HTML依舊在視圖中扮演著重要的角色,但一些新的技術已層出不窮,它們包括Macromedia Flash和象XHTML,xml/XSL,WML等一些標識語言和Web services.如何處理應用程序的界面變得越來越有挑戰性。MVC一個大的好處是它能為你的應用程序處理很多不同的視圖。在視圖中其實沒有真正的處理發生,不管這些數據是聯機存儲的還是一個雇員列表,作為視圖來講,它只是作為一種輸出數據并允許用戶操縱的方式。模型M模型表示企業數據和業務規則。在MVC的三個部件中,模型擁有最多的處理任務。被模型返回的數據是中立的,就是說模型與數據格式無關,這樣一個模型能為多個視圖提供數據。由于應用于模型的代碼只需寫一次就可以被多個視圖重用,所以減少了代碼的重復性??刂破鰿控制器接受用戶的輸入并調用模型和視圖去完成用戶的需求。所以當單擊Web頁面中的超鏈接和發送HTML表單時,控制器本身不輸出任何東西和做任何處理。它只是接收請求并決定調用哪個模型構件去處理請求,然后再確定用哪個視圖來顯示返回的數據。模型Model 模型是應用程序的主體部分。模型表示業務數據,或者業務邏輯. 實現具體的業務邏輯、狀態管理的功能。視圖View 視圖是應用程序中用戶界面相關的部分,是用戶看到并與之交互的界面。 就是與用戶實現交互的頁面,通常實現數據的輸入和輸出功能??刂破鱟ontroller 控制器工作就是根據用戶的輸入,控制用戶界面數據顯示和更新model對象狀態。起到控制整個業務流程的作用,實現View層跟Model層的協同工作。3層架構指:表現層(顯示層) 業務邏輯層 數據訪問層(持久化)如果大家非要“生搬硬套”把它和MVC扯上關系話那我就只能在這里"強扭這個瓜"了即:V 3層架構中"表現層"aspx頁面對應MVC中View(繼承的類不一樣)C 三層架構中"表現層"的aspx.cs頁面(類)對應MVC中的Controller,理解這一點并不難,大家想一想我們以前寫過的 Redirect,當然它本身就是跳轉了一些鏈接頁面,而MVC中的Controller要做的更爽,它控制并顯示輸出了一個視圖。即然所起到的作用都是對業務流程和顯示信息的控制,只不過是實現手段不同而已。M 3層架構中業務邏輯層和數據訪問層對應MVC中Model(必定View和Controller已找到“婆家”剩下Model只能是業務邏輯層和數據訪問層了)為什么要使用 MVC大部分Web應用程序都是用像ASP,php,或者CFML這樣的過程化(自PHP5.0版本后已全面支持面向對象模型)語言來創建的。它們將像數據庫查詢語句這樣的數據層代碼和像HTML這樣的表示層代碼混在一起。經驗比較豐富的開發者會將數據從表示層分離開來,但這通常不是很容易做到的,它需要精心的計劃和不斷的嘗試。MVC從根本上強制性的將它們分開。盡管構造MVC應用程序需要一些額外的工作,但是它給我們帶來的好處是無庸質疑的。首先,最重要的一點是多個視圖能共享一個模型,現在需要用越來越多的方式來訪問你的應用程序。對此,其中一個解決之道是使用MVC,無論你的用戶想要 Flash界面或是 WAP 界面;用一個模型就能處理它們。由于你已經將數據和業務規則從表示層分開,所以你可以最大化的重用你的代碼了。由于模型返回的數據沒有進行格式化,所以同樣的構件能被不同界面使用。例如,很多數據可能用HTML來表示,但是它們也有可能要用Adobe Flash和WAP來表示。模型也有狀態管理和數據持久性處理的功能,例如,基于會話的購物車和電子商務過程也能被Flash網站或者無線聯網的應用程序所重用。因為模型是自包含的,并且與控制器和視圖相分離,所以很容易改變你的應用程序的數據層和業務規則。如果你想把你的數據庫從MySQL移植到Oracle,或者改變你的基于RDBMS數據源到LDAP,只需改變你的模型即可。一旦你正確的實現了模型,不管你的數據來自數據庫或是LDAP服務器,視圖將會正確的顯示它們。由于運用MVC的應用程序的三個部件是相互獨立,改變其中一個不會影響其它兩個,所以依據這種設計思想你能構造良好的松耦合的構件。對我來說,控制器也提供了一個好處,就是可以使用控制器來聯接不同的模型和視圖去完成用戶的需求,這樣控制器可以為構造應用程序提供強有力的手段。給定一些可重用的模型和視圖,控制器可以根據用戶的需求選擇模型進行處理,然后選擇視圖將處理結果顯示給用戶。拿一個簡單的登陸模塊說,需求是你輸入一個用戶名、密碼,如果輸入的跟預先定義好的一樣,那么就進入到正確頁面,如果不一樣,就提示個錯誤信息“你Y別在這兒蒙我,輸入的不對!”。V 這個小小的模塊中,起始的輸入用戶名密碼的頁面跟經過校驗后顯示的頁面就相當于ViewC 而這里還需要一個controller頁面,就是用于接收輸入進來的用戶名密碼,還有經過校驗后返回的一個flg(此flg就是用于判斷你輸入的是否正確,而跳轉到相應的頁面的)M 最后還缺一個Model,那么就是你那個用于校驗的類了,他就是處理你輸入的是否跟預先訂好的一樣不一樣的,之后返回一個flg。這樣就完全實現了邏輯跟頁面的分離,我頁面不管你咋整,反正我就一個顯示,而controller呢也不管你Model咋判斷對不對,反正我給你了用戶名跟密碼,你就得給我整回來一個flg來,而Medol呢,則是反正你敢給我個用戶名跟密碼,我就給你整過去個flgm 提供數據,數據之間的關系,轉化等。并可以通知視圖和控制器自己哪些地方發生了變化。v 提供顯示,能根據m的改變來更新自己c 比如視圖做了點擊一個按鈕,會先發給這個視圖的控制器,然后這個控制器來決定做什么操作(讓模型更新數據,控制視圖改變)mvc是一個復合模式mv,mc都是觀察者模式m內部的組件組合模式vc之間是策略模式(可以隨時更換不同的控制器)

-------------------------------------MVC模式是上世紀70年代提出,最初用于Smalltalk平臺上的。MVC是表現模式,是用來向用戶展現的許多組建的一個模式(UI/PResentation Patten)MVC有三種角色:Model:用來儲存數據的組件(與領域模型概念不同,兩者會相互交叉)View:從Model中獲取數據進行內容展示的組件。同樣的Model在不同的View下可展示不同的效果。獲取Model的狀態,而不對其進行操作。Controller:接受并處理用戶指令(操作Model(業務)),選擇一個View進行操作。

MVC概述:協作存在單向引用,例如Model不知道View和Controller的存在。View不知道Controller的存在。這就隔離了表現和數據。View和controller是單向引用。而實際中View和Controller也是有數據交互的。

MVC的重要特點是分離。兩種分離:View和數據(Model)的分離使用不同的View對相同的數據進行展示;分離可視和不可視的組件,能夠對Model進行獨立測試。因為分離了可視組件減少了外部依賴利于測試。(數據庫也是一種外部組件)View和表現邏輯(Controller)的分離Controller是一個表現邏輯的組件,并非一個業務邏輯組件。MVC可以作為表現模式也可以作為建構模式,意味這Controller也可以是業務邏輯。分離邏輯和具體展示,能夠對邏輯進行獨立測試。

MVC和三層架構MVC與三層架構類似么?View-UI Layer | Controller-Bussiness Layer | Model-Data access Layer其實這樣是錯誤的MVC是表現模式(Presentation Pattern)三層架構是典型的架構模式(Architecture Pattern)三層架構的分層模式是典型的上下關系,上層依賴于下層。但MVC作為表現模式是不存在上下關系的,而是相互協作關系。即使將MVC當作架構模式,也不是分層模式。MVC和三層架構基本沒有可比性,是應用于不同領域的技術。MVC模式與三層架構:ui (view)←(contorller)*****↓********↓*******bl (model)***********************da轉自:http://blog.csdn.net/wanglei_samrtfish/article/details/7274673


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品视频在线观看| 国色天香2019中文字幕在线观看| 国产精品流白浆视频| 欧美洲成人男女午夜视频| 国产小视频91| 久久成人这里只有精品| 国产精品91久久| 日韩中文字幕免费看| 国产欧美日韩91| 欧美日本精品在线| 日韩有码在线视频| 久久九九精品99国产精品| 国产婷婷成人久久av免费高清| 色香阁99久久精品久久久| 欧美日韩中文字幕在线| 欧美亚洲另类在线| 亚洲xxx视频| 精品久久久久久中文字幕| 日韩电影免费观看在线观看| 久久天天躁狠狠躁夜夜av| 国产精品丝袜久久久久久高清| 91欧美精品午夜性色福利在线| 欧美一级高清免费播放| 一色桃子一区二区| 亚洲欧洲日本专区| 欧美中文字幕在线播放| 国产999在线观看| 久久国产一区二区三区| 午夜精品福利视频| 国产精品视频自在线| 日韩少妇与小伙激情| 91精品国产自产91精品| 日韩小视频在线观看| 日韩hd视频在线观看| 欧美性20hd另类| 日韩美女写真福利在线观看| 日韩中文娱乐网| 国产亚洲欧美一区| 2019中文在线观看| 奇米一区二区三区四区久久| 久久久国产精彩视频美女艺术照福利| 欧美性xxxx极品高清hd直播| 欧美电影免费观看高清| 国产啪精品视频| 97在线精品国自产拍中文| 欧美精品videossex性护士| 日韩免费观看高清| 欧美成人精品在线播放| 欧美激情一区二区三区高清视频| 久久久久久成人| 久久久久亚洲精品| 亚洲国产精彩中文乱码av| 最近中文字幕2019免费| 久久91精品国产91久久久| 日韩欧美一区二区三区| 国产精品电影观看| 性欧美暴力猛交69hd| 亚洲自拍偷拍一区| 久久久久久免费精品| 亚洲最大福利视频网| 国产精品久久久久av免费| 国产欧亚日韩视频| 成人在线国产精品| 92看片淫黄大片看国产片| 成人中心免费视频| 欧美专区在线播放| 成人a在线观看| 亚洲视频电影图片偷拍一区| 91禁国产网站| 欧美综合国产精品久久丁香| 国产精品黄页免费高清在线观看| 欧美有码在线观看| 亚洲欧美综合区自拍另类| 亚洲精品视频免费| 久久99久久99精品中文字幕| 国产91对白在线播放| 成人免费自拍视频| 国产啪精品视频| 欧美多人爱爱视频网站| 亚洲精品久久久久中文字幕二区| 欧美大片免费观看| 成人羞羞国产免费| 欧美电影免费观看高清| 久久久91精品国产| 国产精品丝袜白浆摸在线| 成人免费网站在线观看| 九九综合九九综合| 亚洲欧美综合精品久久成人| 欧美一级免费看| 日本精品一区二区三区在线播放视频| 性欧美暴力猛交69hd| 久久久久久久亚洲精品| 国产国语videosex另类| 亚洲国产欧美久久| 色悠悠久久88| 日韩国产在线播放| 欧美视频免费在线| 欧美国产高跟鞋裸体秀xxxhd| 日本久久中文字幕| 日韩综合中文字幕| 日韩中文第一页| 国产精品自产拍在线观看| 91高清免费在线观看| 国产日韩欧美在线看| 欧美日韩精品在线视频| 中文字幕亚洲情99在线| 久久综合88中文色鬼| 亚洲成人免费在线视频| 欧美激情一区二区三区在线视频观看| 国产精品影片在线观看| 黄网站色欧美视频| 日韩www在线| 午夜精品久久久久久久久久久久久| 国语自产精品视频在线看| 一区三区二区视频| 日本韩国在线不卡| 欧美第一黄网免费网站| 久久天天躁狠狠躁老女人| 国产亚洲精品久久| 成人综合国产精品| 国产在线高清精品| 在线电影中文日韩| 97碰在线观看| 欧美性生活大片免费观看网址| 91精品久久久久久久久| 亚洲国产精品国自产拍av秋霞| 亚洲精品电影网站| 精品国产乱码久久久久久虫虫漫画| 欧美日韩一区二区在线播放| 久久久综合免费视频| 国产精品久久网| 精品一区二区三区电影| 欧美在线视频网| 久久99精品视频一区97| 国产精品久久91| 亚州精品天堂中文字幕| 久久久久久久一区二区三区| 国产日韩专区在线| 国产精品美乳一区二区免费| 91大神福利视频在线| 欧美极度另类性三渗透| 亚洲人永久免费| 国产精品久久久久久久久久久不卡| 亚洲第一精品夜夜躁人人爽| 久久久视频在线| 欧美疯狂做受xxxx高潮| 成人欧美一区二区三区在线| 96sao精品视频在线观看| 欧美日韩中文字幕在线视频| 午夜免费久久久久| 欧美黄色片免费观看| 欧美激情精品久久久久久变态| 国产精品手机播放| 亚洲福利视频专区| 欧美激情综合亚洲一二区| 亚洲精品国精品久久99热| 成人久久一区二区三区| 自拍偷拍亚洲一区| 日韩精品视频免费专区在线播放| 国内揄拍国内精品少妇国语| 国产精品爱啪在线线免费观看| 精品电影在线观看| 中文字幕视频一区二区在线有码| 国产成人av在线|