存档

文章标签 ‘Architecture’

Microsoft .NET Pet Shop 4 架构与技术分析

2009年3月18日 没有评论

1.项目概述与架构分析
微软刚推出了基于ASP.NET 2.0下的Pet Shop 4, 该版本有了一个全新的用户界面。是研究ASP.NET 2.0的好范例啊,大家都知道,一直以来,在.NETJava之间争论不休,到底使用哪个平台开发的企业级应用性能最好、结构最优、生产力最高。为了用事实说话,通过对项目各方面的性能评估进而在比较.NETJava的高下。用户做比较的这个项目就是Petshop。正因为Petshop肩负着上面所说的重任,各方面必须是最优的,架构设计应该是经过慎重考虑的。所以其一经推出,便成为了开发者、架构师等人学习、研究的典范。

日前微软推出了基于.NET Framework 2.0开发的Petshop 4。新的Petshop4实现了与Petshop 3相同甚至更多的特性,由于采用了Master PagesMembership,以及ProfileSqlCacheDependency,但是代码量却减少了四分之一。同时,在事务、数据缓存、安全方面使用了.NET 2.0附带的特性,构建了一个灵活的最佳实践的应用程序。

1

他们利用了Project Conversion Wizard把项目从ASP.NET 1.1移植到了ASP.NET 2.0,然后做了以下改动:

1.用System.Transactions代替了原来的Serviced Components提供的事务功能

代码实现:PetShop.BLL.OrderSynchronous public void Insert(PetShop.Model.OrderInfo order)

2.用强类型的范型集合代替了原来的弱类型集合

public IList<ProductInfo> GetProductsByCategory(string category)

{

// Return new if the string is empty

if (string.IsNullOrEmpty(category))

return new List<ProductInfo>();

// Run a search against the data store

return dal.GetProductsByCategory(category);

}

3.采用ASP.NET 2.0 Membership来做认证和授权

4.创建了针对Oracle 10gCustom ASP.NET 2.0 Membership Provider

5.利用ASP.NET 2.0Custom Oracle SQL Server Profile Providers 做用户状态管理,包括购物车等

6.采用了Master Pages,取代了原来的用户控件,来实现统一的界面效果

7.使用了ASP.NET 2.0 Wizard控件实现check-out

8.使用了SqlCacheDependency来实现数据库层次的缓存更新(cache invalidation)功能

9.使用了消息队列来实现异时订单处理。

2.整体架构:

Pet shop 架构图
数据库:(暂略)

项目列表:从整体可以看出,Pet Shop 4的项目体系已经很庞大,考虑的方面也较3.0更全面复杂。

pet shop 解决方案

序号

项目名称

描述

1

BLL

业务逻辑层

2

CacheDependencyFactory

缓存依赖类的工厂类

3

WEB

表示层

4

DALFactory

数据层的抽象工厂

5

DBUtility

数据访问类组件

6

IBLLStrategy

同步/异步策略接口

7

ICacheDependency

缓存依赖类接口

8

IDAL

数据访问层接口定义

9

IMessaging

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

10

IProfileDAL

Profile的数据访问层接口定义

11

Membership

Membership认证和授权管理

12

MessagingFactory

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

13

Model

业务实体

14

MSMQMessaging

异时处理消息队列的实现

15

OracleDAL

Oracle数据访问层

16

OracleProfileDAL

OracleProfile Providers

做用户状态管理,包括购物车等

17

OrderProcessor

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

18

Profile

Profile的数据访问层

19

ProfileDALFactory

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

20

SQLProfileDAL

SQL Server Profile Providers

做用户状态管理,包括购物车等

21

SQLServerDAL

SQLServer数据访问层

22

TableCacheDependency

缓存依赖实现类

项目分解

由于整体已经有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

OracleProfile Providers

做用户状态管理

20

SQLProfileDAL

SQL Server Profile Providers

做用户状态管理

21

Membership

Membership认证和授权管理

22

OrderProcessor

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


Pet Shop 项目分解

3Petshop 4中的设计模式

工厂模式:

首当其冲的就是工厂模式,很容易就可以看出来,也是应用最多的。

DALFactory:数据访问层的抽象工厂(决定创建哪种数据库类型的数据访问层。可以选择:SQLServerOracle

CacheDependencyFactory缓存依赖类的工厂类。(创建具体表的缓存依赖)

MessagingFactory 异时处理消息队列的抽象工厂(反射创建具体的异时处理类

ProfileDALFactoryProfileDAL的工厂类(反射选择创建Oracle SQL ServerProfileDAL)

策略模式: IorderStrategy

策略模式: IorderStrategy

中介模式

CategoryDataProxy ItemDataProxy ProductDataProxy

中介模式

暂时只看了这么多,以后有时间继续分解,如果你有不同的见解或经验,也请写下来,好让大家来共同学习,共同探讨,共同进步。

(作者:李天平 转载请注明)

具体介绍可以参看MSDN

.NET Pet Shop 4: Migrating an ASP.NET 1.1 Application to 2.0

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/bdasamppet4.asp

下载

http://download.microsoft.com/download/8/0/1/801ff297-aea6-46b9-8e11-810df5df1032/Microsoft%20.NET%20Pet%20Shop%204.0.msi

Web信息架构:设计大型网站

2009年3月15日 2 条评论

Web信息架构 本书内容涵盖了信息架构基本原理和实践应用的方方面面。全书共7个部分,包括信息架构概述、信息架构的基本原理、信息架构的开发流程和方法论、信息架构实践、信息架构与组织、两个案例研究,以及参考资料清单。
本书兼具较高的理论价值和实用价值,曾被Web设计领域多本书籍重点推荐,是信息架构领域公认的经典书籍,不论新手还是专家都能各取所需。本书可供Web设计与开发者、Web架构师、网站管理者及信息管理相关人员参考。

作者介绍:

Louis Rosenfeld是独立信息架构顾问,也是Rosenfeld Media的创始人和出版商。他与其他人共同成立了信息架构协会、uxnet,并举办了AsIs&T信息架构系列高峰会。他最近的客户包括 Accenture、Caterpillar、Ford、Microsoft,以及NCAA。他的博客地址是 www.louisrosenfed.com。

摘要:

第2章:实践信息架构
我们需要信息架构师吗?
学科背景
当你看着这份清单时,可能看不到你所属的学科专业。不要被吓倒了:任何专注于信息的学科与应用都是信息架构师的绝佳来源。此外,这门学科还很年轻,几乎每个人都是从实践中得到经验,并以有效而充满自信的方式实践信息架构的。
如果你在寻找信息架构专家,要记住,这门领域还很新,而且信息架构师的需求一直呈现爆炸性成长,所以,你不能只是刊登求职广告,就以为会有一些合格且富有经验的应征者出现在你公司的门口。相反地,你必须积极招募新手,外包或者把自己变成组织的信息架构师。
当然,如果你想找别人来担任这个角色,可以考虑将有下列学科背景的人作为信息架构师的人才来源。如果你得靠自己,那么学习一下这些专业的知识也不见得是件坏事。无论如何,记住,没有一种学科专业是专门针对信息架构师的,每一种都有其侧重之处。
好了,回到这份清单吧:
图形设计和信息设计
很多通过训练而从事设计和实践信息架构的人都是图形设计师。这没什么好惊讶的,因为图形设计和信息设计所牵涉到的设计工作远超过漂亮图形的产生。这些专门知识的重点是建立视觉元素之间的关系,找出这些元素的整合方法,使得沟通更有效率。
图书馆学与情报学
图书馆学与情报学的业务背景对于处理网页之间的关系及整个网站中所有的元素非常有帮助,这是已经证实了的。图书馆员组织信息和提供信息存取的功底已经有很 长的发展历史,而且本身所受的训练就是搜索、浏览和索引技术。有远见的图书馆员已经认识到他们的专业可以应用在图书馆墙外世界的许多新领域里。
新闻工作
新闻工作者的训练也是组织信息,就像图书馆员一样,但新闻特别强调时效性。如果你的网站主要是提供动态信息,例如新闻服务或在线杂志,具有新闻业背景的人 则会充分了解信息应该如何进行最佳的组织和传达。因为他们有写作经验,新闻工作者也是构建拥有高水平的编辑内容的网站之优良候选人。

分类: 读书 标签: ,

YouTube架构-视频网站架构

2009年3月5日 5 条评论

在网上看到的一篇YouTube架构 的一篇 文章,是图片形式的。