NET Petshop詳解(四)

.NET Petshop詳解(四):petshop三層結構之PresentationTier
 
在前面的文章中,我們已經就.NET Petshop的數據層和中間的業務邏輯層作了說明,接下來的文章中,我們將就數據展示層作探究。與前面的兩層有着很大的差別的是,.NET Petshop的展示層用了很多Microsoft最新的web Forms技術即Asp.NET。因此,在解說展示層之前,我想就Asp.NET在.NET Petshop的開發中使用到的非常重要的特性做一些說明,以示區別:
(1)       Asp.NET代碼不再是解釋型代碼,可以經由JIT編譯器編譯後運行,並且引入了很好的頁面緩衝機制。
(2)       ASP.Net的配置模型引入了基於XML文件的“零安裝”配置模型。零安裝的含義是隻需將配置文件Web.config,應用程序拷貝到系統指定的目錄下即可,需要更改時直接在文件裏更改並保存。
(3)       安全管理 ASP.Net提供了比傳統ASP更強大可靠的安全管理。Asp.NET提供了三種驗證方式以及兩種類型的授權服務。
(4)       支持代碼和頁面內容的分離。回想以前編寫Asp程序的時候的問題:代碼邏輯混亂,難於管理。
(5)       提供了更好的狀態管理,包括會話狀態的管理和視圖狀態的管理。
(6)       大量的ASP.NET服務器端控件和對用戶控件的開發的支持。
.NET Petshop充分的使用了服務器控件技術和會話狀態管理。展示層的交互界面均採用aspx頁面,後端有分離的邏輯代碼。.NET Petshop共有19個aspx頁面和代碼邏輯。在這裏一一里列出,並說明設置參數和其作用。
 

ASP.NET Web頁面
EnableSessionState
EnableViewState
備註說明
Cart.aspx
true
true
購物清單
Category.aspx
True
false
產品分類的列表
CheckOut.aspx
Readonly
false
訂單確認
CreateNewAccount.aspx
False
true
創建新帳號
Default.aspx
False
false
系統首頁面
EditAccount.aspx
False
true
賬號編輯
Error.aspx
False
false
錯誤處理
Help.aspx
False
false
幫助
OrderAddressConfirm.aspx
readonly
false
訂單地址確認
OrderBilling.aspx
True
true
訂單信息
OrderProcess.aspx
readonly
false
下訂單
OrderShipping.aspx
True
true
訂單地址和姓名
Product.aspx
False
false
產品列表
ProductDetails.aspx
false
false
產品詳細信息
Search.aspx
false
false
搜索
SignIn.aspx
false
false
帳號登陸
SignOut.aspx
true
false
帳號退出
ValidateAccount.aspx
false
false
帳號創建確認
VerifySignIn.aspx
false
false
賬號登陸確認
 
.NET Petshop使用了很多用戶控件,這些控件位於web/Inc目錄下面。表格2對用戶控件作出說明:
 

User Controls
EnableViewState
備註說明
ControlAddress
true
詳細地址列表
ControlBanner
false
頁面底部的banner
ControlCart
true
購物清單
ControlFavList
false
個人Favorites列表
ControlHeader
false
頁面頂部的菜單和鏈接
ControlStaticAddress
false
不能編輯的地址信息
下面列出一段代碼,說明這些參數的設置和用戶控件的引用:
/*  摘自Cart.aspx   */
<%@ Register TagPrefix="PetShop" TagName="Cart" Src="Inc/ControlCart.ascx" %>
<%@ Register TagPrefix="PetShop" TagName="Header" Src="Inc/ControlHeader.ascx" %>
<%@ Page language="c#" Codebehind="CheckOut.aspx.cs" AutoEventWireup="false" Inherits="PetShop.Web.CheckOut" EnableSessionState="readonly" enableViewState="False"%>
 
開始的兩個Registe指令用於引用ControlCartControlHeader的用戶控件,Page指令定義 ASP.NET 頁分析器和編譯器使用的頁特定的屬性。
在控件的排放位置使用下面的代碼既可以顯示該控件了:
<PetShop:Cart id="ctlCart" runat="server" allowedit="false" />
在上面的代碼中allowedit一項是向實例化的ctlCart傳遞參數。我個人認爲用戶控件是一個很好的東西,可以簡化web頁面的開發模型又可以達到代碼複用的目的,而且其開發非常簡單,與aspx的開發基本是一樣的。圖1說明了設計模式下和運行時的用戶控件。
 
 
圖1:設計模式和運行時的ctlCart用戶控件
 
接下來的文章我們將就係統配置和安全管理作進一步的說明。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章