• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      一種基于MVC設計模式的開發(fā)框架

      2015-06-24 13:05:56俞新凱曾光輝毛敏
      軟件導刊 2015年6期

      俞新凱 曾光輝 毛敏

      摘要:MVC設計模式是一種常用的設計模式,其在軟件工程中的復用程度非常高。在系列開發(fā)技術規(guī)范中,有眾多基于MVC設計模式的框架工具。介紹了一種名為DIPO的基于MVC設計模式的開發(fā)架構,其主要特點是能簡化復雜的業(yè)務邏輯,使所有業(yè)務功能模塊的開發(fā)流程都歸結為“數(shù)據(jù)—輸入—處理—輸出”,從而使開發(fā)工作變得簡單、高效。DIPO架構可以為B/S架構的軟件項目開發(fā)提供參考。

      關鍵詞:MVC;開發(fā)框架;軟件復用;DIPO;開發(fā)流程

      DOIDOI:10.11907/rjdk.151549

      中圖分類號:TP303

      文獻標識碼:A 文章編號

      文章編號:16727800(2015)006004103

      作者簡介作者簡介:俞新凱(1975-),男,廣東韶關人,碩士,廣州城建職業(yè)學院機電與信息工程學院講師、系統(tǒng)分析師,研究方向為軟件工程理論與方法、數(shù)據(jù)庫技術與理論、Java Web技術與Android應用開發(fā)。

      0 引言

      在當今以互聯(lián)網(wǎng)技術為主導的軟件業(yè)界中,Web應用軟件在數(shù)量上占據(jù)了相當大的比重,無論是PC端還是移動終端,都可以用瀏覽器來訪問Web服務?;ヂ?lián)網(wǎng)上每天都在發(fā)布大量的Web應用軟件,因此,如何在Web應用開發(fā)過程中采用高效的開發(fā)流程,并且在其后續(xù)的升級改造中也能按照該流程進行持續(xù)性開發(fā),是大多數(shù)軟件企業(yè)和開發(fā)者面臨的問題。

      Web應用軟件采用的軟件架構是典型的B/S模式,前端展現(xiàn)層為瀏覽器,后端為HTTP服務器,如果將應用服務器與數(shù)據(jù)庫服務器分離,則形成三層結構體系,即“瀏覽器—Web服務器—數(shù)據(jù)庫”。

      MVC設計模式是解決三層結構體系的重要設計模式,但MVC也僅是給出抽象的解決方案,而未給出具體實現(xiàn)過程的技術解決方案。不少軟件組織專門為三層結構開發(fā)了基于MVC設計模式的開源架構和工具,如Struts、Spring等。由于這些開發(fā)架構為了滿足大多數(shù)Web應用軟件的開發(fā)需要和眾多的功能技術需求,在不斷的版本升級中變得越來越龐大,而對于某一個應用軟件而言,其使用到的功能只是這些開源框架中的一小部分,為此卻不得不在自己的應用中加入大量依賴插件,使程序變得十分厚重,不便于長期開發(fā)和維護。筆者在總結多年的Web應用軟件開發(fā)的經(jīng)驗基礎上,設計出一套能實現(xiàn)MVC設計模式的輕量級開發(fā)框架,以滿足大多數(shù)輕量級的Web應用程序設計要求。

      1 MVC設計模式

      MVC設計模式的主導思想是將軟件系統(tǒng)分為3層:①Model(模型層):負責實現(xiàn)系統(tǒng)中每個業(yè)務模塊的邏輯細節(jié),對輸入的數(shù)據(jù)進行加工處理,并輸出返回給前端頁面。模型層通常要對數(shù)據(jù)庫進行讀取與存儲操作;②View(視圖層):直接面向用戶的系統(tǒng)界面,負責往后臺業(yè)務層傳遞用戶輸入的參數(shù),并接收從后臺業(yè)務單元返回的結果數(shù)據(jù)。視圖層的主要作用是接收用戶發(fā)出的請求,以及把系統(tǒng)的處理結果展現(xiàn)給用戶;③Controller(控制器):是系統(tǒng)中負責聯(lián)系模型層和視圖層的中間橋梁,起調度作用。在涉及數(shù)據(jù)轉發(fā)、視圖選擇、安全認證、系統(tǒng)環(huán)境配置等方面事務時,通常由控制器負責完成[1]。

      MVC體系結構采用分治的思想,實現(xiàn)了表示層與數(shù)據(jù)層的分離。MVC分層有助于管理復雜的系統(tǒng)邏輯,視圖層和模型層通過數(shù)據(jù)交換接口實現(xiàn)兩者之間的數(shù)據(jù)對接。在視圖層通常采用標簽語言的形式擷取數(shù)據(jù),而在模型層則用控制器提供的數(shù)據(jù)接口接收和輸出數(shù)據(jù)。MVC分層體系還簡化了不同分工的開發(fā)人員的開發(fā)復雜度,使其可以相對獨立地完成開發(fā)任務。開發(fā)視圖層與開發(fā)模型層的人員可以并行工作,只要在同一個控制器下,遵循統(tǒng)一的數(shù)據(jù)標準即可[2]。圖1描述了MVC設計模式的邏輯模型。

      2 DIPO框架介紹

      2.1 DIPO設計理念

      DIPO全稱為“Data—Input—Process—Output”,即“數(shù)據(jù)—輸入—處理—輸出”,它以簡化系統(tǒng)開發(fā)流程、提高軟件復用程度為目標。從開發(fā)者的角度看待系統(tǒng),任何系統(tǒng)的所有功能模塊,都可以歸結為“數(shù)據(jù)—輸入—處理—輸出”這條處理流程,系統(tǒng)中任何一次請求與響應的處理過程,都可以看作是一個Action Unit(活動單元),每個活動單元即是一次“Data—Input—Process—Output”的實施過程。

      因此,無論是從設計上的抽象層到實現(xiàn)中的具體層,還是從軟件的開發(fā)期到運行期,都遵循這樣一個簡單流程,使系統(tǒng)的設計、開發(fā)、維護、升級都變得輕量級且易于擴展。

      DIPO開發(fā)框架采用MVC設計模式[3],可以完成諸如界面呈現(xiàn)、視圖分派、用戶交互、數(shù)據(jù)刷新、定時調度、對象傳輸、安全控制、應用環(huán)境配置等眾多功能;前端采用W3C標準的系列語言,包括HTML、CSS、JavaScript,其中還大量使用了Ajax技術;在數(shù)據(jù)傳輸模式上涵蓋了WebService、HTTP、FTP、DTO(數(shù)據(jù)傳輸對象)、Socket、RMI(遠程方法調用)等,還集成了J2EE技術體系中的眾多部件,可以與不同框架體系的系統(tǒng)進行標準化的數(shù)據(jù)交換。

      2.2 DIPO與MVC的關系

      DIPO框架是實現(xiàn)MVC設計模式的一種具體的框架技術,同時也對MVC作了進一步改造,其中包括:

      (1)DIPO中的Data在MVC模式中未直接體現(xiàn)出來。將Data擴展出來的主要意義在于讓開發(fā)者對所有原始數(shù)據(jù)和加工數(shù)據(jù)予以高度關注。因為數(shù)據(jù)由始至終都代表著用戶對于系統(tǒng)的真正意圖,系統(tǒng)所做的一切都是圍繞著數(shù)據(jù)展開的。因此,Data才是用戶與系統(tǒng)共同關注的核心要素。

      (2)DIPO中的Input和Output對應于MVC中的視圖層,即將MVC中的View分解成輸入——Input,與輸出——Output。在這種設計思想的引導下,開發(fā)者可以清晰地區(qū)分視圖層中哪些是用戶對系統(tǒng)的請求,哪些是系統(tǒng)對用戶的響應,把數(shù)據(jù)來源和去向弄清楚,才能準確無誤地處理好業(yè)務單元。

      (3)DIPO中的Process對應于MVC中的模型和控制器,再度對MVC模式作了簡化。因為控制器是框架提供者在應用系統(tǒng)開發(fā)前,就已按照框架的復用機制定制好的,所以框架的第三方開發(fā)者可以不必關注控制層的具體細節(jié),而將主要開發(fā)精力投入到具體的界面設計和業(yè)務處理邏輯上。

      3 DIPO框架開發(fā)流程

      基于DIPO開發(fā)框架的應用系統(tǒng),在用戶與系統(tǒng)進行任何一次交互動作時,都是以一個Action(活動單元)作為基本粒度。一條常規(guī)的DIPO開發(fā)流程如下(以新增機構交易為例):

      (1)定義該活動的輸入數(shù)據(jù)項(上級機構、機構名稱、機構類型等)、輸出數(shù)據(jù)項(機構名稱、操作結果)。

      (2)為這個交互活動命名一個txcode(交易碼),名為DeptAdd。

      (3)在配置文件actionlist.xml中為交易碼DeptAdd添加一個節(jié)點,指明該交易要調用的程序單元為DeptMng,即一個Java程序,并且指明在程序處理完畢后,要將結果發(fā)布到哪一個視圖中(可以是JSP、HTML、TXT、圖片、導出下載文件等),如DeptList.jsp。

      (4)為DeptAdd交易指定一個觸發(fā)點,分為以下3種情況:①通過系統(tǒng)菜單項,用戶在主界面上點擊對應菜單項即可觸發(fā)該交易;②通過系統(tǒng)中某個頁面中的用戶操作觸發(fā),如按鈕、按鍵、表單提交等;③在執(zhí)行多個交易串行處理過程中,DeptAdd交易是其中一個環(huán)節(jié)。

      新增機構交易DeptAdd屬于上述的第一種方式,即通過系統(tǒng)菜單項獲得該交易的入口點。

      (5)編寫一個Java程序DeptAdd.class作為交易活動處理單元,完成對用戶傳入?yún)?shù)如上級機構ID、本級機構名稱的數(shù)據(jù)處理。如果合法,則向系統(tǒng)添加一條機構數(shù)據(jù)。

      (6)如果DeptAdd交易涉及對數(shù)據(jù)庫的訪問和更新操作,則還需要編寫相關的數(shù)據(jù)庫表以及SQL語句來執(zhí)行完成過程。

      (7)編寫響應(返回)頁面。在本例中,DeptList.jsp是交易處理完畢后的響應(返回)頁面,頁面編寫屬于靜態(tài)界面設計部分,其中的動態(tài)數(shù)據(jù)則由活動單元返回的參數(shù)來實時更新。

      4 結語

      從上述開發(fā)流程可以看出,遵循“Data—Input—Process—Output”的步驟,可以使開發(fā)流程變得十分簡單、清晰,包括“什么樣的數(shù)據(jù)(Data)”、“從哪里傳入(Input)”、“由哪個單元處理(Process)”、“輸出到哪里去(Output)”。

      DIPO開發(fā)框架是一套筆者于2009開發(fā)成型的Web應用開發(fā)框架,并已成功地推廣到多家企業(yè)的Web應用。其基于MVC設計模式,迎合了當今大多數(shù)軟件開發(fā)者的模式取向。同時采用Java程序語言開發(fā)后端程序,采用HTML、CSS、JavaScript和Ajax開發(fā)前端界面,使視圖層、業(yè)務層、數(shù)據(jù)庫可以分別交給不同的開發(fā)人員進行并行開發(fā),而中間的控制層則由DIPO框架自身實現(xiàn),無需第三方開發(fā)者另行開發(fā),從而大大提高了開發(fā)效率。

      參考文獻:

      [1]任廣震,侯進,王獻.MVC模式在B/S結構政務系統(tǒng)的應用研究[J].計算機應用與軟件,2014 (8):5458,74.

      [2]羅麗娟,陳永政.淺談MVC框架模式[J].科學咨詢,2013(2):1213.

      [3]李麗,顧明.基于J2EE的系統(tǒng)設計方法和模式比較[J].計算機應用研究,2002(11):3842.

      [4]周輝,任海軍,馬亮,等.MVC設計模式及其在信息系統(tǒng)開發(fā)中的應用[J].軟件導刊,2012,11(10):120122.

      責任編輯(責任編輯:黃 ?。?/p>

      英文摘要Abstract:The MVC design pattern is a common pattern in software engineering. A project based on MVC pattern is highly reused. There are many framework tools based on MVC in serial of software development standards. This article mainly produces a framework named DIPO based MVC. DIPO aims to simplify business logical and implement detail,put the development process of all business models in a flow,called “Data—Input—Process—Output”. DIPO framework may be a reference to software development project.

      英文關鍵詞Key Words: MVC;Development Framework;Software Reuse;DIPO;Development Process

      邵阳县| 仁布县| 南平市| 岳阳市| 蓬莱市| 绿春县| 宜丰县| 金寨县| 宁陕县| 明光市| 贡山| 桓仁| 崇州市| 广汉市| 泾川县| 滨海县| 贵德县| 布拖县| 旬阳县| 宁河县| 四平市| 哈巴河县| 四川省| 德格县| 清涧县| 翁源县| 江山市| 岐山县| 汨罗市| 鄱阳县| 长乐市| 宜州市| 巧家县| 外汇| 友谊县| 渑池县| 无棣县| 南澳县| 阳春市| 麦盖提县| 翁牛特旗|