.NET Petshop详解(四):petshop三层结构之PresentationTier

在前面的文章中,我们已经就.NET Petshop的数据层和中间的业务逻辑层作了说明,接下来的文章中,我们将就数据展示层作探究。与前面的两层有着很大的差别的是,.NET Petshop的展示层用了很多Microsoft最新的web Forms技术即Asp.NET。因此,在解说展示层之前,我想就Asp.NET.NET Petshop的开发中使用到的非常重要的特性做一些说明,以示区别:<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

(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共有19aspx页面和代码逻辑。在这里一一里列出,并说明设置参数和其作用。

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说明了设计模式下和运行时的用户控件。

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /><shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></path><lock v:ext="edit" aspectratio="t"></lock></shapetype>

1:设计模式和运行时的ctlCart用户控件

接下来的文章我们将就系统配置和安全管理作进一步的说明。


你可能感兴趣的:(数据结构,.net,F#,asp.net,asp)