摘要
微軟發布了ASP.NET 3.5 Extensions的第一個CTP版本,它包含ASP.NET 3.5的一個重要的extensions:ASP.NET MVC Framework。本系列文章擬使用ASP.NET MVC和LINQ建立一個簡單的Blog系統,在第一部分,Keyvan介紹了MVC模式、ASP.NET MVC Framework以及簡單Blog系統的基本原理。
原文地址:Building a Simple Blog Engine with ASP.NET MVC and LINQ - Part 1
內容
- 簡介
- 什麼是MVC?
- 什麼是ASP.NET MVC Framework?
- KBlog基礎
- 建立項目
- 開始
- 進一步閱讀
- 小結
簡介
幾周前發布了ASP.NET 3.5 Extensions的第一個CTP版本,它包含了ASP.NET MVC Framework的第一個公用版本。網路上已經有了很多教程、博文和Web Cast,它們都是學習這個MVC Framework的優秀資源。
我打算寫幾篇關於ASP.NET MVC Framework的文章,使用MVC和LINQ來建立一個簡單的Blog系統。我將為您呈現所有步驟的細節,並對一些深層次的話題展開討論。我現在還沒有完成該系統,我將在撰文的同時編寫代碼。
這個簡單的應用程式套件含在ASP.NET MVC Toolkit中,但還沒有詳細的描述。為什麼在已經有了相似教程的情況下,我還要寫這個系列呢?在我看來,學習MVC Framework的曲線必須遵循幾個步驟,建立一個簡單Bolg系統並且描述其過程,將是學習ASP.NET MVC Framework的一個非常好的例子。
本文是該系列文章(我將在幾周內完成這個系列)的第一篇,主要介紹一些基本資料。
什麼是MVC?
是啊,什麼是MVC呢?其他人已經更好的闡述了這個概念,但我想用自己的語言來複述。
MVC是一個方法論,它基於將實現劃分為Model、View和Controller三種角色的理念來構建應用。
讓我們再來看看上面的句子。我們認為MVC是一個方法而非技術,因此在微軟將它用於ASP.NET前已經有了許多應用。我強調這一點是因為曾經看到一些傢伙認為MVC是一種專為ASP.NET設計的技術。
我仍然需要簡單的介紹一下這三個角色:
- Model:維持狀態的角色。通常是描述資料庫中資料的類。
- View:通過使用者介面向終端使用者呈現資料的角色。它可能是一組使用者介面元素,如文字框、編輯器或按鈕。
- Controller:負責接收使用者輸入並進行處理的角色。事實上,Controller實現當前邏輯以處理使用者請求。
要設計依賴於資料互動的應用,使用MVC是一個非常好的方法。MVC最大的優點是可以輕鬆的實現單元測試。通過Controller可以很方便的對MVC應用進行單元測試以及實現測試驅動的流程(Red-Green-Refactor)。
圖1展示了MVC模式的結構,Model獨立於Controller和View,這使得Model的測試更加容易。另一方面,Model、View和Controller的分離可以使開發人員輕鬆的測試MVC應用。實際上,將作為使用者介面元素的View和Controller、Model分離是非常重要的,它簡化了測試過程。
圖1 MVC結構
對於MVC我不再進行過多的討論,你可以參考Scott Guthrie's post和Wikipedia,這些足夠你入門了。
什麼是ASP.NET MVC Framework?
ASP.NET MVC Framework是微軟將MVC在ASP.NET中的應用,在ASP.NET 3.5中,提供了建立基於MVC的Web應用所必須的特性。
ASP.NET MVC Framework目前仍在構建中,並且作為ASP.NET 3.5 Extensions CTP的一部分,只有一個公用版本可供下載。
當你下載並安裝了這個組件,你就可以感受到來自ASP.NET Extensions方方面面的優點,它還在Visual Studio 2008上自動安裝了一些項目模板。
與這個下載組件一起的,還有一個MVC toolkit package,它提供了開發MVC時一些有用的工具。在本系列文章中我也將使用它們。
KBlog基礎
在本系列文章中,我將建立一個簡單的Bolg工具,我稱之為KBlog。
該Bolg系統支援Blog發布、評論和分類。一篇Blog只能有一個種類,但可以有任意多的評論。該系統只面向單一使用者,並且包含一些URL模式以處理公用和私人頁面。所有這些都包括自己的ID。簡便起見,KBlog不支援將name作為URL的一部分。
作為第一步,我將使用SQL Express作為資料庫。我手工填入一些資料,在完成公用頁面的討論之後,我將介紹管理頁面,使用者可以通過管理頁面輸入資料。
建立項目
顯然,第一步是在Visual Studio中建立一個項目。如果成功安裝了ASP.NET 3.5 Extensions CTP,在Web類別下,可以看到"ASP.NET MVC Web Application"項目。我將該系統命名為KBlog(圖2)。
圖2 建立一個ASP.NET MVC Web Application項目
之後,Visual Studio將按照預定義的模板和結構產生項目。
開始
Visual Studio產生了一個結構簡單的ASP.NET Web Application項目。
圖3 ASP.NET MVC解決方案結構
該項目包含一些引用,最重要的一個是System.Web.Extensions裝配件。另外還包括四個檔案夾,Content、Controllers、Models和Views。
- Content檔案夾僅儲存一個預設的CSS樣式檔案。
- Controllers檔案夾儲存Controller類。
- Models檔案夾儲存Model類。
- View儲存視圖檔案,並且包含一些含有aspx和master檔案的檔案夾。
正如你所見,Controllers、Models和Views對我們來說更重要一些,因為它們是用來儲存Controller、Model和View的。這樣的命名並不是定死的,你可以用自己的結構來替代。
除此之外,還有一些眾所周知的ASP.NET檔案夾,它們的額外定義稍後會介紹。
需要說明的一點是檔案Default.aspx,正如它的內容所描述的那樣,為了使IIS在使用者訪問到該頁時為應用程式啟用MVC,你不能刪除該檔案。
本文介紹到這裡已經差不多了。循序漸進地,我將在接下來的文章中為該項目添加一些實現。
進一步閱讀
下面的列出了一些非常優秀的Blog資源,你可以閱讀以進一步瞭解ASP.NET MVC Framework,它們已經包含了有關ASP.NET MVC的極好的資料。這項技術對於ASP.NET來說是全新的,因此目前的資源並不是很多,但幸運的是,MVC在開發中已經十分流行,在這短短几周中,我們已經看到了業內的強烈反響。
- Scott Guthrie
- Scott Hanselman
- Phil Haack
- Rob Conery
- Brad Abrams
小結
在該ASP.NET MVC Framework系列文章的第一篇中,我想您介紹了MVC模式、MVC的基本原理、ASP.NET MVC Framework以及將在該系列文章中編寫的簡單Blog系統的基本資料。我還在ASP.NET MVC中保留了MVC解決方案的結構。
在接下來的部分中,我將逐步建立這個Blog系統,並介紹有關ASP.NET MVC Framework的原則和技術。