zoukankan      html  css  js  c++  java
  • PetShop 4.0 详解(Word)(转)

    PetShop 4.0 详解(Word)下载
    PetShop是工厂模式三层架构的微软发布的例子,具有参考价值

     1.项目概述与架构分析

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

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

     

    他们利用了 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 10g Custom ASP.NET 2.0 Membership Provider

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

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

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

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

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

     

    2.整体架构:


    数据库(暂略)

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

     

    序号

    项目名称

    描述

    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

    Oracle Profile 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

    Oracle Profile Providers

    做用户状态管理

    20

    SQLProfileDAL

    SQL Server Profile Providers

    做用户状态管理

    21

    Membership

    Membership 认证和授权管理

    22

    OrderProcessor

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

     


     

     

    3Petshop 4中的设计模式

    工厂模式:

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

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

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

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

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

     

    策略模式: IorderStrategy

     


     

    中介模式

    CategoryDataProxy ItemDataProxy  ProductDataProxy

     

     


  • 相关阅读:
    反编译Silverlight项目
    李开复关于创新的五条建议
    Android人脸检测类FaceDetector
    吃火锅如何进行口腔保健
    ListView优化
    番茄工作法
    App Inventor for Android初接触
    QPainter如何自适应大小画图
    Eclipsejava.lang.OutOfMemoryError: PermGen space
    健康小工具——体脂肪率自测
  • 原文地址:https://www.cnblogs.com/hakuci/p/1142886.html
Copyright © 2011-2022 走看看