(轉)MVC設計模式學習總結

来源:http://www.cnblogs.com/banmengbanxing/archive/2016/01/05/5102888.html
-Advertisement-
Play Games

原文 :chenchun的博客http://www.cnblogs.com/jobscn/archive/2011/11/08/2240725.html------------------------------隨著Web應用的商業邏輯包含逐漸複雜的公式分析計算、決策支持等,使客戶機越來越不堪重負,...


原文  :

chenchun的博客

http://www.cnblogs.com/jobscn/archive/2011/11/08/2240725.html

------------------------------

隨著Web應用的商業邏輯包含逐漸複雜的公式分析計算、決策支持等,使客戶機越 
來越不堪重負,因此將系統的商業分離出來。單獨形成一部分,這樣三層結構產生了。 
其中‘層’是邏輯上的劃分。 
三層體繫結構是將整個系統劃分為如圖2.1所示的結構[3] 


(1)表現層(Presentation layer):包含表示代碼、用戶交互GUI、數據驗證。 
該層用於向客戶端用戶提供GUI交互,它允許用戶在顯示系統中輸入和編輯數據,同時 
系統提供數據驗證功能。 
(2)業務邏輯層(Business layer):包含業務規則處理代碼,即程式中與業務 
相關專業演算法、業務政策等等。該層用於執行業務流程和制訂數據的業務規則。業務邏 
輯層主要面向業務應用,為表示層提供業務服務。 
(3)數據持久層(Persistence layer):包含數據處理代碼和數據存儲代碼。數 
據持久層主要包括數據存取服務,負責與資料庫管理系統(如資料庫)之間的通信。 
三個層次的每一層在處理程式上有各自明確的任務,在功能實現上有清晰的區分, 
各層與其餘層分離,但各層之間存有通信介面。 
採用三層軟體設計架構後,軟體系統在可擴展性和可復用性方面得到極大提高,在 
資源分配策略設計合理運用的同時,軟體的性能指標也得到提升,系統的安全性和易管東北 
理性也得到改善。 
三層體繫結構對Web應用的軟體架構產生很大影響,促進了基於組件的設計思想, 
產生了許多開發Web層次框架的實現技術。較之兩級結構來說,三層結構修改和維護上 
更加方便。目前開發B/S結構的Web應用系統廣泛採用這種三層體繫結構。 


設計模式起源: 
1994 年,由 Erich Gamma,Richard Helm,Ralph Johnson 和 John Vlissides(即所謂的“四人幫’,GoF:Gang of Four)合作的以《設計模式:可復用的面向對象軟體的基本原理》為題目的書藉出版了。這本書解釋了模式的用處,同時也使得設計模式得到廣泛普及。在書中,他們四人記錄了他們長期工作中發現的經典 23 個設計模式。 
IoC模式 
IoC 模式是 Apach Avalon 項目創始人之一 Stefano Mazzocchi 提出的一種代碼調用模式,後被 MartinFowlcr 改名為 Dependency Injection(依賴註入),也就是將類和類,方法和方法之間的關係通過第三方(如配置文件)進行“註入”,不需要類或者方法自己去解決彼此間的調用關係。 IoC(Inversion of Control, 控制反轉), 是一種用來解決組件(也可以是簡單的 Java類)之間依賴關係、配置及生命周期的設計模式,它可以解決模塊間的耦合問題。IoC模式它是把組件之間的依賴關係提取(反轉)出來,由容器來具體配置。這樣,各個組件之間就不存在代碼關聯,解決了調用方與被調用方之間的關係問題,任何組件都可以最大程度的得到重用。 

IoC 模式實現的技術途徑 
表 2.1 列舉出了 IoC 的三種實現方式。本文中設計並實現的伺服器端數據驗證組件就是採用了第一種類型的 IoC 實現方式。 


MVC模式 : 
MVC 是 Model-View-Control 的簡稱,即模型-視圖-控制器。它是一個存在於伺服器 
表達層的模型,它將應用分開,改變應用之間的高度耦合。 
MVC 是在 20 世紀 80 年代發明的一種軟體設計模式,至今已被廣泛使用,最近幾年 
被推薦為 Sun 公司 J2EE 平臺的設計模式。 

MVC 模式結構 
MVC 模式將應用分為模型、視圖和控制器三個部分: 
1. 視圖:數據的展現。 
視圖是用戶看到並與之交互的界面。視圖向用戶顯示相關的數據,並能接收用戶的輸入數據,但是它並不進行任何實際的業務處理。視圖可以向模型查詢業務狀態,但不能改變模型。視圖還能接受模型發出的數據更新事件,從而對用戶界面進行同步更新。 
2. 模型:應用對象。 
模型是應用程式的主體部分。 模型代表了業務數據和業務邏輯; 當數據發生改變時,它要負責通知視圖部分;一個模型能為多個視圖提供數據。由於同一個模型可以被多個視圖重用,所以提高了應用的可重用性。 
3. 控制器:邏輯處理、控制實體數據在視圖上展示、調用模型處理業務請求。 
當 Web 用戶單擊 Web 頁面中的提交按鈕來發送 HTML 表單時,控制器接收請求並調用相應的模型組件去處理請求,然後調用相應的視圖來顯示模型返回的數據。 

MVC 模式運行機制 
如圖 2.2 所示為 MVC 模式運行機制: 

在 MVC 模式中,Web 用戶向伺服器提交的所有請求都由控制器接管。接受到請求之後,控制器負責決定應該調用哪個模型來進行處理;然後模型根據用戶請求進行相應的業務邏輯處理,並返回數據;最後控制器調用相應的視圖來格式化模型返回的數據,並通過視圖呈現給用戶。 

框架 
軟體開發越來越倚重框架的使用。框架可以縮短應用軟體系統的開發周期,提高軟體生產效率和質量。大大簡化了開發。選擇何種框架、每個框架如何應用在在系統架構中是軟體架構設計的重要環節。 
框架的定義 
在設計模式中,Gamma 等人為框架給出了一個明確定義:“框架(Framework)是一組協同工作的類,它們為特定類型的軟體構築了一個可重用的設計”。 
框架是一組為相互協作的構件(Component)的集合,它能夠處理一個或多個問題域(Domain)中的一系列問題。框架強調的是軟體設計的重用性和系統的可擴充性。它是為了追求重用所帶來的價值量最大化,而將被重用最多的部分封裝成各個組件,輔以回調機制將它們納入框架的控制範圍之內。所以,框架提供了可在應用程式之間共用的可復用的公共結構。 

框架的特性 
框架包含以下幾個關鍵特性: 
1.在應用方面,框架是整個或部分系統的可重用設計,表現為一組抽象構件及構件實例間交互的方法;在目標方面,框架是可被應用開發者定製的應用骨架。 
2.框架是一種軟體,是應用程式的半成品。它可以供系統開發者選用,以完成系統的開發。 
3.框架解決的是某個特定範圍即領域的問題。每個框架都有自己的目標領域,它並不能滿足所有人的所有需求。
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 使用RVM安裝(RubyVersionManager能夠讓你輕鬆的安裝、管理ruby生產力環境,諸如不同版本的解釋器和gem.)0.升級一下源,執行:$ sudo apt-get update 1.rvm需要通過curl工具下載一段安裝腳本來進行安裝,同時下載完的這段腳本還需要用git從GitHub...
  • 看《VC++動態鏈接庫(DLL)編程深入淺出》時,裡面提到使用Visual C++的Depends工具可以查看動態鏈接庫中的導出介面。對於VC6.0,VC所帶的Depends軟體,在VC6安裝目錄下的tools文件夾裡面,可以直接運行。但是VS2010中沒有了Depends工具,如何查看DLL文件的...
  • 題目:Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For example,Given n = 3, there are a total of 5 unique B...
  • Java 1.0 到 1.3 中的 IO沒有而 Java 1.4 中引入的 NIO 有的“改進”:非阻塞IO、緩衝區、通道層、字元集、記憶體數據、Perl(正則表達式之王);下一代 I/O-NIO.2(Java 7)主導:阿蘭·波特曼標準:JSR-203目標:(*說實話-沒太看懂)(1)一個能批量獲取...
  • 題目:Given a binary tree, return the inorder traversal of its nodes' values. For example:Given binary tree {1,#,2,3}, 1 \ 2 / 3return [1,3...
  • ...說實話,我沒太懂……import java.util.Collection;import java.util.HashMap;public class CoinChangeParams { @SuppressWarnings("unused") public static ...
  • https://msdn.microsoft.com/zh-cn/library/hyx1zcd3(v=vs.80).aspx EXPORTS 引入了一個由一個或多個 definitions(導出的函數或數據)組成的節。每個定義必須在單獨一行上。EXPORTS definitions 備註 EXPO...
  • 本人使用環境為windows+eclipse 1,首先當然要到官網下載python https://www.python.org/downloads/windows/ 安裝可以選上自動將路徑加入path,也可以之後手動添加 完了之後在dos里輸入python檢查一下是否成功 2,安裝eclipse插...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...