[ASP設計]用MVC模型引導你的WEB設計思路-第二版

來源:互聯網
上載者:User

習慣於過程式的開發,一直嚮往著物件導向。無奈半路出家人,沒有一點內力基礎,看了一大堆物件導向的書也只是看得一頭霧水。對於MVC的概念也是偶然瞭解到的,感覺能和WEB開發結合起來讓項目物件導向化。以下是我一點點心得。
先介紹一下MVC的概念:
MVC(Model-View-Controller),即把一個應用的輸入、輸出、處理流程按照Model、View、Controller的方式進行分離,這樣一個應用被分成三個層——模型層、視圖層、控制層。
 模型(Model):就是商務程序/狀態的處理以及商務規則的制定。即是MVC的主要核心。
 視圖(View):代表使用者互動介面,也就是Web的HTML介面。
 控制(Controller):可以理解為從使用者接收請求, 將模型與視圖匹配在一起,共同完成使用者的請求。

以下以一個簡單的留言板作為分析例子。

1)從上面的概念來看,留言板可以切成三部份。
 模型(M):包含 資料庫連結、產生資料集、資料庫更新操作。
 視圖(V):包含 擷取模型的資料集,將資料集內填充到各種顯示介面內,如(留言板列表,管理控制頁面,添加修改刪除介面等一切使用者看得到的頁面。)
 控制(C):包含 資料庫更新的資料校正,將更新完畢後的結果轉交給視圖進行呈現。

2)三部份已經出來,下面是更進一步的細化。
 模型(M)
  資料連結:資料連結參數、連結失敗處理。
  資料操作:產生固定格式的資料集、運行單行SQL、解析固定格式的資料集更新資料庫(內容包括有:留言記錄,管理員帳號,系統設定)。
  檔案操作:將檔案內部格式封成資料集,並附帶讀取寫入檔案操作。(內容包括有:留言板樣式設定、著作權設定、搜尋引擎關鍵字設定、留言板標題設定)
 視圖(V)
 資料顯示:根據要求授權給控制器[C]向模型[M]請求資料集,然後根據資料集顯示出介面。
 操作結果顯示:根據控制返回的資料資料決定顯示的提示資料
 具體資料包括有:
   留言添加頁:判斷留言者是否管理員、判斷本次留言是回複還是建立留言。
   留言管理頁:大量刪除留言、查詢留言、管理員帳號管理、系統設定等。
   留言顯示頁:判斷留言是否為管理員專用、判斷本留言是否為管理員發布、是否允許回複、是否顯示留言者的敏感資料、留言是否需要審核後再顯示。

 控制(C)
  資料/檔案操作:接收操作資料,校正資料是否符合條件,引用模型的產生資料集類產生指定資料集,然後交給相應的模型操作方法操作,並擷取操作結果以預定好的格式轉交給視圖處理

3)系統基本上細化完畢,下一步就是將以上分析出來的東西封裝成Class
  模型(M):
    資料庫連結和資料操作可以封成一個Class。
    資料庫資料集的結構,可以引用Dictionary控制項與數組完成。其間操作也可以封成一個Class具體可以仿造ASP.net中Dataset對象的部份機構。
    檔案操作部份封裝成一個Class
    檔案結構定義可以封成一個Class以方便控制直接引用,然後轉交給檔案操作Class進行相應的操作。
  視圖(V):
    視圖部可均是以檔案模式出現,也可以將部份代碼封裝後引用。也可以引用現有的模板類實現代碼分離等。
  控制(C):
    資料校正:SQL注入防禦處理、日文字元替換處理、特定常用校正正則式,這個是控制器常用的函數,可以封成Class也可以以函數型式存在獨立檔案,使用時直接引用。
    資料/檔案更新操作:由於直接操作,可以避免使用Class,而是以檔案模式出現,每個檔案處理模型(M)中的某個類。並完成控制(C)的工作。
    視圖[V]模型[C]連結器:接收視圖[V]要求資料集的請求,將請求轉換成模型[M]合適的SQL句,然後交給模型[M]Data Integration生器產生資料集,然後返回給視圖[V],這個處理比較麻煩,如果沒必要作得太嚴謹的話可以直接使用欄位名,並在視圖[V]以SQL標準的條件句進向模型[M]請求資料。

 疑:
  視圖[V]模型[C]連結器,對這個的設定我還是有點遲疑的。因為在MVC中,V對M的請求中是不需要C的摻和的,但是,這個連結器的操作確實很符合C的概念,所以這裡我把它放在了控制器[C]裡。或許他可以放至在視圖[V]內。畢竟這個是視圖[V]的事。這個就看每個人對MVC的理解了。

以上基本完成了留言板的結構分析與類的抽象,有不少的地方比較繁瑣,甚至是囉嗦,一個留言板其實是沒必要這樣,不過,這個例子裡作出來的不少Class可以直接使用在其它更大的項目中去,比如控制器[C]中的資料集請求轉換器,校正部份、模型[M]中的資料庫連結等,之所以遵循MVC模型進行編程不但是為了讓程式設計更靈活,最重要一點是可以很快將項目拆開成一小塊一小塊,然後又將這些小塊再折成更小的塊,一直折到單個類的某個方法某個屬性,等你完成這些小塊代碼後,那系統也就完成了。
其實這個已經是第二版,非常感謝藍色經典裡的5do8[老農],他看了我的第一版之後和我聊了不到十分鐘,讓我重新認識了MVC,更進一步的完善了這篇引導文章。我還在繼續摸索中,也有可能會不斷的更新這篇資料。希望對大家都有所協助。
如果對上面的資料有什麼想法和建議的可以到我的Blog找我,本篇文章的最新版可以到(http://blog.csdn.net/oyiboy/archive/2006/02/09/595164.aspx)查看。

閑話:歡迎各位有手機的朋友到我的“海魚手機加瓦站(http://wwww.fishjava.com)”來轉轉,有不少的免費的手機遊戲和圖片提供給各位,不但可以線上試玩遊戲,直接通過WAP下載遊戲和圖片,還能自己上傳一些好玩的遊戲或圖片上來大家一起來玩。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.