PetShop4.0架构分析

转载 2007年10月11日 12:30:00
 
PetShop4.0架构分析
2007-10-08 15:47

刚开始打开PetShop项目的时候,我们未免会被如此多的项目吓一跳,不过只要用心的去分析,看懂它并不是非常难的事。

首先我们来看一下WEB项目,因为我们做WEB应用程序首先想到的就是看看页面是怎么实现的,然后一路追溯下去,直到看明白程序是如何把数据显示到页面和如何处理页面的数据的。

比如说首页吧,Default.aspx,我们看到首页很简单,大多数是静态的,只显示了一个Categories菜单,下面是对应的HTML代码

<PetShopControl:NavigationControl ID="Categories" runat="server"></PetShopControl:NavigationControl>

而这些PetShopControl,NavigationControl标签是什么呢,我们可以在页面HTML代码的上方看到一行

<%@ Register Src="Controls/NavigationControl.ascx" TagName="NavigationControl" TagPrefix="PetShopControl" %>

指令,通过这行指令我们可以看到Categories菜单是通过NavigationControl.ascx用户控件实现的

那好,我们现在就来打开 NavigationControl.ascx ,NavigationControl.ascx 里面有一个Repeater控件,然后我们来看看NavigationControl.ascx的后台代码 NavigationControl.ascx.cs

页面初绐化Page_Load调用两个函数GetControlStyle();BindCategories();

其中GetControlStyle()是为了实现菜单在首页和其它页面显示不同的风格,BindCategories()方法就是绑定数据了。

BindCategories() {

Category category = new Category();

repCategories.DataSource = category.GetCategories();

repCategories.DataBind();

}

在BindCategories()方法中有个类Category,Category是在BLL项目中实现的,我们可以单击右键点转到定义快速的找到它,category.GetCategories()方法我们也可以快速的找到它的定义

表现层到这就转到业务层了,现在我们来看看业务层如何实现Category类,业务层的GetCategories()方法实现如下

public IList<CategoryInfo> GetCategories() {

return dal.GetCategories();

}

而变量 dal 在类中有定义

private static readonly ICategory dal = PetShop.DALFactory.DataAccess.CreateCategory();

然后我们再看到PetShop.DALFactory.DataAccess.CreateCategory()

在DataAccess类的CreateCategory()方法中我们所看到的并没有具体的数据操作,取而代之的是

string className = path + ".Category";

return (PetShop.IDAL.ICategory)Assembly.Load(path).CreateInstance(className);

我们可以看到 path 的定义

private static readonly string path = ConfigurationManager.AppSettings["WebDAL"];

path是WEB.config中定义的WebDAL节点值,我们来看看Web.config中的WebDAL值,如果装的是SQL数据库的话应该是 “PetShop.SQLServerDAL”

原来语句“Assembly.Load(path).CreateInstance(className)”就是通过Web.config配置来实 例化PetShop.SQLServerDAL集合中的Category类,然后我们才在PetShop.SQLServerDAL.Category看 到方法GetCategories()的具体实现

但是何必运用如此烦杂的步骤来实现对数据的操作呢,细想一下,不同的用户有不同的数据库,例如我们可以使用SQL SERVER,也可以使用Oracle数据库,为了轻松的实现对不同数据库的访问而不修改业务层,降低各层之间的偶合,所以PetShop运用了设计模式 中的抽象工厂模式Factory,而为什么表现层和业务层之间不需要这样做,因为业务层的业务规则一般都是固定的,所以没必要写几个业务层,如果应用程序 中的业务层是时常变动的,或开发的是通用的WEB应用程序,针对不同的企业有不同的业务层,而表现层却一样,也可以运用抽象工厂模式。

PetShop的整体架构就是这样子了,可以说这是经典的三层架构啦!!

由于整体已经有22个项目,所以,对于初学者一看就晕了,所以,我做了分解,可以大体上分几块去理解。

序号

项目名称

描述

1

WEB

表示层

2

Model

业务实体

3

BLL

业务逻辑层

4

DALFactory

数据层的抽象工厂

5

IDAL

数据访问层接口定义

6

SQLServerDAL

SQLServer数据访问层

7

OracleDAL

Oracle数据访问层

8

DBUtility

数据库访问组件基础类

9

CacheDependencyFactory

缓存依赖类的工厂类

10

ICacheDependency

缓存依赖类接口

11

TableCacheDependency

缓存依赖实现类

12

IBLLStrategy

同步/异步处理策略接口(实现在bll根据配置反射选择)

13

MessagingFactory

异时处理消息队列的抽象工厂

14

IMessaging

异时处理消息队列接口定义

15

MSMQMessaging

异时处理消息队列的实现

16

Profile

Profile的数据访问层

17

ProfileDALFactory

ProfileDAL的工厂类(反射创建ProfileDAL)

18

IProfileDAL

Profile的数据访问层接口定义

19

OracleProfileDAL

Oracle的Profile Providers

做用户状态管理

20

SQLProfileDAL

SQL Server 的Profile Providers

做用户状态管理

21

Membership

Membership认证和授权管理

22

OrderProcessor

后台处理进程,处理订单队列

大型网站系统架构分析整理

千万级的注册用户,千万级的帖子,nTB级的附件,还有巨大的日访问量,大型网站采用什么系统架构保证性能和稳定性? 首先讨论一下大型网站需要注意和考虑的问题。 数据库海量数据处理:负载量不大的...
  • Charles0391
  • Charles0391
  • 2015年04月21日 22:38
  • 2738

一次通过系统分析师和系统架构师水平考试的体会

今天查询2013年下半年的系统架构师考试成绩,52/49/48,应该是通过了。2012年上半年曾以55/52/47通过系统分析师考试,但在2013年上半年的信息系统管理师却以50/55/37落败。成败...
  • yangdanbo1975
  • yangdanbo1975
  • 2014年02月06日 22:49
  • 3702

Docker源码分析(一):Docker架构

Docker是PaaS圈内开源的基于LXC的应用容器引擎,基于Go语言开发,遵从Apache2.0协议。 最近一年来,Docker在云计算方面的热度持续升温,社区等活跃度也持续走高,使得大家对于Doc...
  • shlazww
  • shlazww
  • 2014年09月10日 11:09
  • 17938

Microsoft .NET PetShop 4.0 架构与技术分析

1.框架的概要介绍微软刚推出了基于ASP.NET 2.0 下的Pet Shop 4, 该版本有了一个全新的用户界面。是研究ASP.NET 2.0 的好范例啊,大家都知道,一直以来,在.NET ...
  • lowechenwen
  • lowechenwen
  • 2011年01月16日 19:48
  • 194

Microsoft .NET PetShop 4.0 架构与技术分析(七)

六 PetShop之表示层设计 表示层(Presentation Layer)的设计可以给系统客户最直接的体验和最十足的信心。正如人与人的相交相识一样,初次见面的感觉总是永难忘怀的。一件交付给客户使...
  • Jary_starty
  • Jary_starty
  • 2011年11月04日 14:22
  • 1933

petshop4.0架构与技术分析PPT

  • 2015年04月16日 23:16
  • 603KB
  • 下载

PetShop4.0架构分析

  • 2008年12月24日 16:48
  • 451KB
  • 下载

PetShop4.0的系统架构设计分析

  • 2008年12月11日 08:24
  • 872KB
  • 下载

petshop4.0 详解之一(系统架构设计)

前言:PetShop是一个范例,微软用它来展示.Net企业系统开发的能力。业界有许多.Net与J2EE之争,许多数据是从微软的PetShop和 Sun的PetStore而来。这种争论不可避免带有浓厚...
  • lowechenwen
  • lowechenwen
  • 2011年01月16日 19:00
  • 184

PetShop4.0架构设计

  • 2011年07月14日 13:43
  • 633KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PetShop4.0架构分析
举报原因:
原因补充:

(最多只允许输入30个字)