穆海明 劉盼 齊斌
摘 要:隨著國內電商平臺的發展,網站的需求變得越來越大,開發網站的技術雖然很多,但真正主流的不過只有幾種,而ASP.NET MVC便是很好的一種選擇。ASP.NET MVC它是微軟的一個web開發框架,融合了敏捷開發的思想與技術和asp.net平臺的精華部分,正是設計網站的最好方式之一。本文將介紹ASP.NET MVC框架的內容,以及如何便捷地開發網站,僅此希望這門技術為IT行業的發展帶來巨大進步。
關鍵詞:MVC;控制器;視圖;模型;路由;三層架構
1 MVC模式
1.1 控制器(Controller)
MVC模式中的控制器(Controller)主要負責響應用戶的輸入,并且在響應時修改模型(model)。通過這種方式,MVC模式中的控制器主要關注的是應用程序流、輸入數據的處理,以及對相關視圖輸出數據的提供。從本質上來講,控制器只是簡單的C#類,在控制器中的每一個public方法都稱為一個動作方法,即可以用某個URL通過web來調用它,以執行一個動作。MVC約定,把控制器都放在一個名為Controller的文件夾中,這是Visual Studio在建立項目時為用戶自動創建的。這項約定雖然不一定要遵循,單遵循著一約定會為開發帶來很大的便捷,也就是常說的約定大于配置。
1.2 視圖(View)
視圖的職責是向用戶提供用戶界面。當控制器針對被請求的URL執行完合適的邏輯后,就將要顯示的內容委托給視圖。不像基于文件的Web框架,比如ASP.NET Web Forms和PHP,視圖本身不會被直接訪問,瀏覽器不能直接指向一個視圖并渲染它。相反,視圖總是被控制器渲染,因為控制器為它提供了要渲染的數據。目前為止控制器操作只是簡單的調用了return View()來進行渲染,還不需要指定視圖的文件名。可以這么做,是因為它們利用了ASP.NET MVC框架的一些隱式約定,這些約定定義了視圖選擇邏輯。記住之前在控制器所說的“約定大于配置”在這里依然適用。這是ASP.NET MVC相對于Form的進步之處,也是它的特色。
Razor視圖引擎是ASP.NET MVC 3中新擴展的內容,并且他是默認視圖引擎,Razor為視圖提供一種精簡的語法,最大限度地減少了語法和額外的字符。這樣就有效地減少了語法障礙,并且在視圖標記語言中也沒有新的語法規則。Razor的設計理念是簡單直觀的,對于大多數應用,我們不必關心語法,只需要在插入代碼時,輸入HTML和@符號。
1.3 模型(Models)
模型是一個比較抽象的概念,主要是利用模型對象來構建ASP.NET MVC應用程序,可以使用C#語言編寫模型定義類,然后根據指定的模型類型使用基架生成應用程序的其他部分。這便是模型最常用也是最基礎的一種存在。
在MVC中,控制器是C#類,通常派生于System.Web.MVC.Controller,開發者自己創建的每一個控制器通常都是從這個Controller派生而來的,派生而來的類中的每一個public方法都稱為一個動作方法,它通過ASP.NET 路由系統與一個可配置的URL相關聯。當一個請求被發送到與一個動作方法相關聯的URL時,便執行控制器類中的語句,以進行域模型上的一些操作,然后選擇一個視圖來顯示給客戶端。這就是控制器、模型及視圖之間的交互。
2 路由
2.1 URL
URI代表統一資源標識符。URL是標識了一個資源的字符串。從技術角度看,所有URL都是URI。W3C認為“URL是一個正式的概念,但它非常有用:URL是URI的一種類型,它通過表示自身的主要訪問機制來標識資源”。換句話說,URI是某種資源的標識符,而URL則為獲取該資源提供了具體的信息。
2.2 URL模式
路由系統用一組路由來實現它的功能。這些路由共同組成了應用程序的URL架構(Schema)或方案(Scheme),這種URL架構(或方案)是應用程序能夠識別并能對之作出響應的一組URL。不需要手動輸入打算支持的各個URL,而是讓每一條路由都包含一個URL模式,用它與一個輸入URL進行比較。如果該模式與這個URL匹配,那么它(URL模式)便被路由系統用來對這個URL進行處理。
3 三層架構的網站設計
所謂的三層指的是,表現層,業務層和數據層,它的優點是每一層僅用少量的代碼實現各層的功能,非常靈活,如果把數據訪問代碼與業務邏輯層分離,當數據庫服務器更改后,你只需要更改數據訪問的代碼,因為業務邏輯層是不變的。邏輯層和數據層的分離后讓你后期的改動變得更加方便,便于開發和后期調試。而且這種架構使得程序員之間可以出現協助工作,這種更高效的開發便是如今的主流,下面具體介紹每層具體的功能。
3.1 表現層(Presentation Layer)
表現層用于用戶接口的展示,以及用業務層的類和對象來“驅動”這些接口。在ASP.NET中,該層包括aspx頁面、用戶控制、服務器控制以及某些與安全相關的類和對象。
3.2 業務層(Business Tier)
業務層用于訪問數據層,從數據層取數據、修改數據以及刪除數據,并將結果返回給表現層。在ASP.NET中,該層包括使用SqlClient或OleDb從SQL Server或Access數據庫取數據、更新數據及刪除數據,并把取得的數據放到DataReader或DataSet中返回給表現層。返回的數據也許只有一個整形數字,比如一個表的行記錄數目,但這也要用數據層的數據進行計算。
3.3 數據層(Data Tier)
數據層是數據庫或者數據源。在.NET中,通常它是一個SQL Server或Access數據庫,但不僅限于此兩種形式,它還可能是Oracle,mySQL,但ASP.NET MVC最好就是用SQL Server。
參考文獻:
[1] Adam Freeman(美).精通ASP.NET MVC4[M].李萍,徐燕萍,林逸,譯.人民郵電出版社,2014.
[2] Jon Galloway,Brad Wilson,K.Scott Allen,David Matson(美) . ASP.NET MVC 5高級編程[M].孫元帥,譯.清華大學出版社,2015.
作者簡介:穆海明(1994—),男,天津人,沈陽理工大學本科在讀。
劉盼(1994—),男,山西運城人,沈陽理工大學本科在讀。
齊斌(1994—),男,遼寧盤錦人,沈陽理工大學本科在讀。