1. 程式人生 > >B/S構架MVC系統設計模式

B/S構架MVC系統設計模式

一. 目的  
  提高程式碼重用、增加開發速度和減少維護修改量已經成為現軟體開發模式中日益提升的需求。框架、模型和介面也就隨此孕育而生。  
  MVC是一個設計模式,它強制性的使應用程式的輸入、處理和輸出分開。使用MVC應用程式被分成三個核心部件:模型、檢視、控制器。它們各自處理自己的任務。使用MVC設計模式能夠使得開發人員可以把精力集中在如何解決實際業務問題上。  
  為什麼要使用   MVC  
  大部分Web應用程式都是用像JSP,ASP,PHP,或者CFML這樣的過程化語言來建立的。它們將像資料庫查詢語句這樣的資料層程式碼和像HTML這樣的表示層程式碼混在一起。經驗比較豐富的開發者會將資料從表示層分離開來,但這通常不是很容易做到的,它需要精心的計劃和不斷的嘗試。MVC從根本上強制性的將它們分開。儘管構造MVC應用程式需要一些額外的工作,但是它給我們帶來的好處是無庸質疑的。  
  首先,最重要的一點是多個檢視能共享一個模型,正如我所提及的,現在需要用越來越多的方式來訪問你的應用程式。對此,其中一個解決之道是使用MVC,無論你的使用者想要Flash介面或是   WAP   介面;用一個模型就能處理它們。由於你已經將資料和業務規則從表示層分開,所以你可以最大化的重用你的程式碼了。  
  由於模型返回的資料沒有進行格式化,所以同樣的構件能被不同介面使用。例如,很多資料可能用HTML來表示,但是它們也有可能要用Macromedia   Flash和WAP來表示。模型也有狀態管理和資料永續性處理的功能,例如,基於會話的購物車和電子商務過程也能被Flash網站或者無線聯網的應用程式所重用。  
  因為模型是自包含的,並且與控制器和檢視相分離,所以很容易改變你的應用程式的資料層和業務規則。如果你想把你的資料庫從MySQL移植到Oracle,或者改變你的基於RDBMS資料來源到LDAP,只需改變你的模型即可。一旦你正確的實現了模型,不管你的資料來自資料庫或是LDAP伺服器,檢視將會正確的顯示它們。由於運用MVC的應用程式的三個部件是相互對立,改變其中一個不會影響其它兩個,所以依據這種設計思想你能構造良好的鬆偶合的構件。  
  對我們來說,控制器的也提供了一個好處,就是可以使用控制器來聯接不同的模型和檢視去完成使用者的需求,這樣控制器可以為構造應用程式提供強有力的手段。給定一些可重用的模型和檢視,控制器可以根據使用者的需求選擇模型進行處理,然後選擇檢視將處理結果顯示給使用者。  
  二. B/S   構架MVC設計模式圖  
        無法顯示,使用文字簡單描述:  
        資訊層:關係資料庫  
        資料持久化層:   DAO  
        模型層:業務物件(Business   Object)、業務邏輯、業務代理介面、控制器  
        檢視層:檢視  
        客戶層:IE  
   
  三. 設計模式描述  
  根據上圖B/S三層構架設計模式,我們把資料庫資訊層單獨放置為底層,資料持久化層、模型層和控制器層視為中間層,檢視層為客戶端顯示操作介面,處於最上層,也是程式直接接受操作層。  
  3.1.     資料的持久化  
  持久化意味著通過手工或者其他方式輸入到應用中的資料能夠在應用結束執行後依然存在。這就需要資料被持久化到資料庫或磁碟檔案。  
  面向物件的開發方法是當今的主流,但是同時不得不使用關係型資料庫,在企業級開發的環境中,物件——系的對映(Object   -   Relation   Mapping,   簡稱ORM)也就成為持久化操作的一個重要環節。圍繞ORM和持久化資料的訪問,在軟體領域中發展起來了一種資料訪問物件(Data   Access   Object,   簡稱DAO)設計模式。  
  對於java   應用,可以直接通過JDBC   程式設計來訪問資料庫,在企業級應用開發中,可以通過JDBC程式設計來開發自己的DAO   API,把資料訪問操作封裝起來,供業務層統一呼叫。  
  3.2.   業務物件  
  業務物件(Business   Object,   簡稱   BO),即是對真實世界的實體的軟體抽象。它可以代表業務領域中的人、地點、事物或概念。業務物件包括狀態和行為。  
  如果一個類可以作為業務物件,那麼它應該具有以下特徵:  
  a、包含狀態和行為  
  b、代表業務領域的人、地點、事物或概念  
  c、可以重用  
  業務物件可分為三種類型:  
  a、實體業務物件  
  b、過程業務物件  
  c、事件業務物件  
  通過不同型別的業務物件相互組合呼叫,構成業務邏輯層,是模型層核心部分。  
  3.3.   業務代理介面  
  業務代理介面直接訪問、組合業務物件和持久化框架,處理實際的業務邏輯,使用業務代理介面,可以讓控制器使用這些代理介面,而不必直接和持久化框架互動。這種做法有助於消弱上層web應用和持久化框架之間的關係,提高持久化框架和模型的相對獨立性。  
  此外,還需要採用DAO模式來消弱應用的業務邏輯和資料庫訪問邏輯的關係,當使用持久化框架的時候,DAO模式可以把業務物件和持久化框架分開,當持久化機制發生改變時,這種改變不會對業務物件產生影響。  
  3.4.   控制器  
  控制器接受使用者的輸入並呼叫模型和檢視去完成使用者的需求。所以當單擊Web頁面中的超連結和傳送HTML表單時,控制器本身不輸出任何東西和做任何處理。它只是接收請求並決定呼叫哪個模型構件去處理請求,然後用確定用哪個檢視來顯示模型處理返回的資料。控制器負責統一控制程式流轉和計算,相當於CPU的功能。當客戶端傳送操作請求後,由控制器接收請求並根據請求呼叫業務代理介面來完成請求,最後返回請求結果。  
  Struts   框架是一種位於MVC模式開發中扮演控制器角色的web框架應用。它位於程式的控制層,不負責具體實現業務邏輯,只負責建立和呼叫模型介面來實現業務邏輯的請求。Struts   框架可以做到統一控制流程,在統一控制中又細分出單個事件的請求控制。  
  把控制層和檢視、模型層分開的好處是,無論是業務邏輯和檢視中的哪個元件發生改變,他們都只需要改變本身的那部分,而不需要設計其他的層次。  
  3.5.   檢視  
  檢視是使用者看到並與之互動的介面。對老式的Web應用程式來說,檢視就是由HTML元素組成的介面,在新式的Web應用程式中,HTML依舊在檢視中扮演著重要的角色。  
  如何處理應用程式的介面變得越來越有挑戰性。MVC一個大的好處是它能為你的應用程式處理很多不同的檢視。在檢視中其實沒有真正的處理髮生,不管這些資料是聯機儲存的還是一個僱員列表,作為檢視來講,它只是作為一種輸出資料並允許使用者操縱的方式。  
  Struts   框架也提供了檢視元件,基於Struts   的檢視   API,可以使程式開發速度提高,機構嚴禁,最重要的是可以把控制器和檢視完全分開,以消弱檢視中混合控制的機制,達到真正的模組獨立。  
  3.6.   總結  
  現在我們總結MVC的處理過程,首先控制器接收使用者的請求,並決定應該呼叫哪個模型來進行處理,然後模型用業務邏輯來處理使用者的請求並返回資料,最後控制器用相應的檢視格式化模型返回的資料,並通過表示層呈現給使用者。  
  四. 層次間關係  
  從檢視層到持久化層,他們只能呼叫在它下一層的介面,不允許跳躍式呼叫,從而使各層次間相對獨立,以達到增加重用、減少維護、修改工作量和模組化的目標。  
  五. 軟體專案開發流程圖  
        此處無法顯示  
  六. 應用實現技術  
  資訊層:Oracle  
  持久化層:自定義DAO框架、java   EJB   實體Bean  
  業務物件:自定義class或第三方API,java   EJB   Session   Bean  
  業務代理介面:   interface  
  控制器:   Struts   Action  
  檢視:   Struts   taglib,   自定義taglib,   JavaScript  
  七. 團隊  
  需求分析師:負責業務需求分析  
  系統構架師:負責系統構架每個模組  
  系統設計師:負責設計模組的業務物件和業務邏輯框架  
  軟體工程師:負責實現業務邏輯、控制器和檢視控制  
  介面設計時:負責介面設計  
  八. 開發模式  
  無論是軟體整體構架還是分模組構架,都必須有個明確的團隊分工合作,以下簡單說明模組開發中的流程  
  需求分析師   ——   進行業務邏輯分析,完成後交給系統構架師。  
  系統構架師   ——   在得到需求分析後,系統構架師根據需求首先進行設計概念模型,在此步工作中,需要把業務物件細緻地抽象出來,並設計出整體模組的框架,完成後交給系統設計師。  
  系統設計師   ——   在獲取模組設計框架後,根據設計把概念模型抽象成業務物件模型,並且需要根據需求設計出整個模組的業務邏輯框架和介面。完成後分別把邏輯框架和介面交給負責完成業務邏輯的軟體工程師和負責控制器檢視設計的軟體工程師。  
  各個軟體工程師在得到設計文件後可以開始同步完成程式碼編輯工作和檢視設計程式設計工作。  
  軟體工程師完後工作後把程式釋出,交給測試工程師,測試工程師根據檢視完成測試用例編寫,並開始測試,完成後需要編寫測試報告。如果有BUG則退回軟體工程師,如果有業務邏輯改變,則有軟體工程師退回給系統設計師重新設計或改寫業務邏輯。無問題後由軟體工程師完成自己負責的模組使用者手冊。  
  至此,模組開發完畢,交付。  
  九. 參考文獻  
  本文參考以下文件  
  a、CSDN中發表的技術文章  
  b、孫衛琴的《精通Struts:基於MVC的Java   Web設計與開發   》 

相關推薦

B/S構架MVC系統設計模式

一. 目的     提高程式碼重用、增加開發速度和減少維護修改量已經成為現軟體開發模式中日益提升的需求。框架、模型和介面也就隨此孕育而生。     MVC是一個設計模式,它強制性的使應用程式的輸入、處理和輸出分開。使用MVC應用程式被分成三個核心部件:模型、檢視、控制器。它們各自處理自己的任務。使用MVC設計

什麼是基於B/S、c/s架構的系統設計

第一、什麼是C/S結構。 C/S(Client/Server)結構,即大家熟知的客戶機和伺服器結構。它是軟體系統體系結構,通過它可以充分利用兩端硬體環境的優勢,將任務合理分配到Client端和Server端來實現,降低了系統的通訊開銷。目前大多數應用軟體系 統都是Clien

時間觸發嵌入式系統設計模式 第19章 筆記 按鍵開關

時間觸發嵌入式系統設計模式 第19章 筆記 按鍵開關 E:\Nu_LB_Nuc140\Nu_LB_NUC140_BSP\SampleCode\Nu-LB-NUC140\Sched_LED_SWITCH\KEIL 程式碼: // // GPIO_LED : G

時間觸發嵌入式系統設計模式 第18章 筆記 通過RS-232與 PC通訊

時間觸發嵌入式系統設計模式 第18章 筆記 PC上 軟體 例子: 參考 : Axelson(1998) Serial Port Complete: Programming and Circuits for Rs-232 and Rs-485 Links and Netwo

時間觸發嵌入式系統設計模式 第22章 筆記 控制LCD顯示面板

時間觸發嵌入式系統設計模式 第22章 筆記 控制LCD顯示面板 E:\Nu_LB_Nuc140\Nu_LB_NUC140_BSP\SampleCode\Nu-LB-NUC140\Sched_22_LCD_Time E:\Nu_LB_Nuc140\Nu_LB_NUC140_B

時間觸發嵌入式系統設計模式 第21章 筆記 多路複用LED顯示

時間觸發嵌入式系統設計模式 第21章 筆記 多路複用LED顯示 1111 4個 8位的 數碼管 前兩個顯示小時,後兩個顯示分鐘,不顯示秒 程式碼: unsigned char LED_Table_G[20] = // 0 1 2 3

時間觸發嵌入式系統設計模式 第14章 筆記

1 函式指標 程式碼: /*------------------------------------------------------------------*- Main.C (v1.00) --------------------------

淺談Spring Mvc設計模式

Spring Mvc這個框架給我的第一感覺是大大的優化了web層,特別是配合註解的形式,對於比較中小型的網站,我個人覺得還是比較適合的。 Spring Mvc的底層實現核心是基於Aop的,DispatcherServlet作為攔截器的核心,負責接受所有的攔截請求,這也是Ao

扯兩句 MVC設計模式

一個app開發的主要流程可以簡單概括為: 搭建UI介面—> 請求伺服器資料 —> 把資料展示在UI介面上 –> 處理UI介面的業務邏輯 —> 測試及優化 在程式設計世界裡面大家都知道一句話: 高內聚,低耦合 高內聚,就是指儘量讓一個類或者一個方法它

毫無廢話: 從0開始一點一滴用java開發自己的B/S構架--1.2

來hellochina一下<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 所有程式介紹的書第一個例子恐怕都是helloworld,我們來個hellochian

spring mvc設計模式

使用spring,在web.xml中配置一個DispatcherServlet。 <!--配置 spring 的DispatcherServlet--> <servlet> <servlet-name

J2EE架構下系統設計模式

1.1 J2EE應用模型 J2EE提供了一個企業級的計算模型和執行環境用於開發和部署多層分散式結構的應用模型。該模型具有重用元件的能力、基於擴充套件標記語言(XML)的資料交換、統一的安全模式和靈活的事務控制。它通過提供企業計算環境所必需的各種服務,使得部署在J2EE平臺上

docker,容器,編排,和基於容器的系統設計模式

[toc] 都2020年了,容器,或者說docker容器這個概念,從事網際網路行業的開發者應該都不會感到陌生。無論大廠還是小廠的應用部署現在都首選docker容器。 但是docker雖好,卻並非萬能。docker本身,其實僅僅是提供了一種沙盒的機制,對不同應用進行隔離。映象是它出彩的一個設計,可以讓開發者

請問你知道分散式系統設計模式的最低水位線思想麼?

# 最低水位線(Low-Water Mark) 最低水位線是指在 WAL(Write Ahead Log)預寫日誌這種設計模式中,標記在這個位置之前的日誌可以被丟棄。 ## 問題背景 WAL(Write Ahead Log)預寫日誌維護了對於儲存的每次更新,隨著時間不斷增長,這個日誌檔案會變得無限大。[

基於B/S模式的視訊監控系統設計 [轉

隨著計算機和網路技術的迅猛發展,閉路電視監控系統已經被計算機網路所替代。在計算機網路中的C/S模式和B/S模式的對比中,B/S模式顯示出自己獨特的優勢,並且在視訊監控系統的發展中逐步佔據大部分市場份額。B/S模式的視訊監控系統利用瀏覽器及計算機網路技術,實現廣域網內多使用者同時實時視訊監控現場;利用系統嚴格

基於B/S的輔導員工作管理系統設計--文獻隨筆(二)

一、基本資訊 標題: 2,基於B/S的輔導員工作管理系統設計 時間:2009 出版源:電子科技大學 領域分類:系統設計與實現 二、研究背景 問題定義:在學校輔導員工作方面,我想還沒有一個系統的輔助輔導員工作的軟膠,來提高輔導員工作的效益,不僅要使輔導員教師從繁瑣的事務中解脫出來,而且提供面

文獻綜述十五:基於b/s中小型超市進銷存管理系統的研究與設計

一、基本資訊   標題:基於b/s中小型超市進銷存管理系統的研究與設計   時間:2015   出版源:湘西財經大學   檔案分類:對超市管理系統的研究 二、研究背景   在競爭日益激烈的行業中,儘可能降低運營成本,逐步擴大超市經營規模,並帶動銷售増長。 三、具體內容   論文的內容分為6個部分。分別是緒論、

Java——Web開發之MVC設計模式的學生資訊管理系統(二)

為什麼這個標題為“(二)”,其實是對於上一個特別簡單學生資訊管理系統裡功能的完善。 所謂的“(一)”在這:學生資訊管理系統(一) 系統實現的功能: 實現新增學生 顯示查詢到的學生 刪除學生 更新學生資訊 模糊查詢符合相關資訊的學生

《基於B/S中小型超市進銷存管理系統的研究與設計》論文筆記(十六)

一、基本資訊 標題:基於B/S中小型超市進銷存管理系統的研究與設計 時間:2015 來源:江西財經大學 關鍵詞:需求分析; ASP.NET; B/S; 進銷存管理; 二、研究內容 1.ASP.NET技術:   .NET框架主要有兩大類庫,分別為.NET Framew

B/S模式下ADO.NET資料庫訪問技術的設計及應用》論文筆記(十七)

一、基本資訊 標題:B/S模式下ADO.NET資料庫訪問技術的設計及應用 時間:2014 來源:電子測試 關鍵詞:B/S模式; ADO.NET資料庫訪問技術; 設計; 應用; 二、研究內容 1.ADO.NET資料庫訪問技術的兩種模式: 連線模式下的資料庫訪問技術: