`
happmaoo
  • 浏览: 4351899 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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

阅读更多

通过前面的文章,我们对.NET Petshop的整个结构有了一个大致的了解,也清楚的知道了数据库的设计模式和实现的细节,尤其值得一提的是通过存储过程访问数据库。在接下来的这篇文章里,我将和大家一起来探究一下.NET Petshop的中间层。

根据三层结构的设计原则,中间层封装的是业务逻辑和规则,在这个网络宠物商店的例子中,购物处理,订单处理,帐号管理,产品查询等等都是具体的业务逻辑,至于与用户交互并不是中间层要处理的问题。它处理是与具体的用户界面和交互无关,而仅仅是核心的商业规则和逻辑。.NET Petshop的中间层业务逻辑被封装为一个.NET 组件,它的命名空间为Pet Shop.Components(编译后在bin的文件夹里面有一个petshop.dll的文件)。图1.NET Petshop解决方案中间层的类视图和文件视图。

<?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><?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><lock v:ext="edit" aspectratio="t"></lock></shapetype>

1.NET Petshop解决方案中间层的类视图和文件视图

接下来,我们模拟顾客到百货超市采购日常用品的过程来说明运作的流程以及抽象出重要的概念(实际上User case,我们在领域分析的时候会这么做,并且是很重要的一步,从这里可以初步的发现在我们实施的系统中将要涉及到的逻辑实体,进而可以为数据库建模设计以及类设计提供参考)。

购物用例的业务分析:

1 客户有购买商品的意愿;

2 客户到登陆管理员处登记,且成功登记;

3 在登记处推一个购物车;

4 在超市内查找所购商品类别存放的货架;

5 在具体的货架上查找某一具体品牌的商品;

6 将符合意愿的商品放入自己的购物车;

7 重复4-6

8 购物完毕;

9 到付款处计算总价格并付款;

10 打印购物清单;

11 退还购物车;

12 取走购物,购物完毕;

备注:在这个用例中,我们做了一些前提和假设,为的是方便.NET Petshop的分析,比如说在实际生活中根本就不需要第二步。

通过这个用例的分析,我们至少可以抽象出一下几个重要概念,并且能在应用程序里面找到对应的类:客户对应Customer、商品对应Product、购物车对应ShoppingCart、商品类别对应Category、具体商品对应Item、清单对应Order

正如我前面说过的,这几个概念对于我们的业务建模和系统建模是非常有用的。正是通过这样的分析,在.NET Petshop的业务逻辑里面共有9个核心类和5个轻量级的数据结构类。同样的方式,我在这里列出这些类,并加以说明(见表1)。

类名称

说明

BasketItem

代表购物车ShoppingCart里的一项购物商品。

Customer

用于帐号管理和登陆验证。

CustomerDetails

用户帐号的详细信息。

CustomerAddress

用户帐号的地址信息。

Error

用于登陆出错的帮助功能。

Item

代表某类产品中的具体一项商品。

ItemResults

搜索Item的结果集。

Order

购物完毕后的购物清单和订单。

Product

大类别里面的某类产品。

ProductResults

搜索产品的结果集。

Profile

用户的配置。

ShoppingCart

购物车,用于购物的整个过程,直到下订单。

Database

通过ADO.NET访问数据库,封装了具体的访问方法。

SearchResults

模糊搜索的结果集。

1.NET Petshop中间层的类

CustomerAddress, CustomerDetails, ItemResults, ProductResults, and SearchResults这几个轻量级的数据结构类为在数据层和展示层之间提供了一种松散的数据绑定调用。这些类都被设计为有公开的属性,ASP.NET web页面可以通过这些属性访问数据。下面这段类的代码说明了这5个类是如何暴露自己的公开属性供展示层使用的。

public class ProductResults

{

private string m_productid;

private string m_name;

public string productid {

get { return m_productid; }

set { m_productid = value; }

}

public string name {

get { return m_name; }

set { m_name = value; }

}

}

.NET Petshop详解(二)中我们就说过数据库的访问是通过存储来进行的,我们看看下面这部分代码就知道了:

public string Login(string userName, string password) {

string customerID;

// params to stored proc

Database data = new Database();

SqlParameter[] prams = {

data.MakeInParam("@username", SqlDbType.VarChar, 25, password),

data.MakeInParam("@password", SqlDbType.VarChar, 25, userName),

data.MakeOutParam("@CustomerID", SqlDbType.VarChar, 25)

};

// create data object and params

data.RunProc("upAccountLogin", prams); // run the stored procedure

customerID = (string) prams[2].Value; // get the output param value

// if the customer id is an empty string, then the login failed

if (customerID == string.Empty)

return null;

else

return customerID;

}

这段代码是Customer类的Login方法,它是通过将用户输入的用户名userName和密码password做为输入参数传递给存储过程upAccountLogin的,这个存储过程完成在Sigon用户帐号表里面查找该用户是否合法,最后返回一个字符串的用户ID值。在这里没有使用SQL查询语句,很好的分离了逻辑。具体的数据库访问是通过Database来完成的,我们将在后面的文章中继续探讨它的运作。

ShoppingCart是比较有意思的一个类,也是很重要的一个类。它是与状态有关的一个类,在.NET Petshop里面,它的状态是通过ASP.NET Session state来管理的,关于其进一步的细节留待后面讨论。

.NET Petshop的中间层的探讨先到此,我在这里只是抛砖引玉,很多的东西要深入代码才可以搞的更加清楚。欢迎大家继续与我一起关注下一篇.NET Petshop的数据展示层。

分享到:
评论

相关推荐

    Net Petshop详解Word版

    Net Petshop详解(一): petshop概览和准备工作 ...Petshop详解(三):petshop三层结构之MiddleTire Net Petshop详解(四):petshop三层结构之PresentationTier Net Petshop详解(五):petshop输出缓存设置

    .net petshop非常详细的说明解释

    .net petshop非常详细的说明解释

    .Net Petshop4.0及相关资料

    .net petshop4.0 三层结构的示例程序 安装 以及附带的三层结构相关资料

    [PetShop] PetShop for .Net 3.5 源代码

    基于 .NET Framework 3.5 的 Petshop,使用 LINQ to SQL 改进数据访问层,使用 WCF 来提供RSS,并在 UI 层上做一些改进,如使用 ASP.NET AJAX,ListView 控件等; ☆ 文件清单:☆ PetShop for .Net 3.5 (Source ...

    Microsoft .NET PetShop4.0 详解[重新整理,清晰图]

    业界有许多.Net与J2EE之争,许多数据是从微软的PetShop和Sun的PetStore而来。这种争论不可避免带有浓厚的商业色彩,对于我们开发人员而言,没有必要过多关注。然而PetShop随着版本的不断更新,至现在基于.Net 2.0的...

    asp.net PetShop系统演示(源码)

    对开发者和架构师都有所帮助,大家可以下去研究一下,不要急于求成,框架比较复杂,慢慢来,祝大家学习进步。

    .NET PetShop购物程序

    .NET PetShop购物程序 

    asp.net 经典 petshop4.0+5.0

    微软展示企业开发的优秀范例 petshop4.0 基于 .net2.0。petshop5.0 基于.net3.5。petshop5.0 没有官方版本。

    C#.net三层架构初学者之petshop详解

    三层架构 初学者 petshop详解 petshop正版安装软件(2.1M) 本人在里面添加了4个学习petshop开发的详细步骤,以及数据库建立,以及怎样在vs2005中一步步教你怎么操作。是本人学习三层架构的经典资料。共享了,希望对...

    三 petshop三层结构之MiddleTire.doc

    三 petshop三层结构之MiddleTire.doc

    asp.net 经典petshop (代码+ppt)

    PetShop版本为4.0。采用了.Net Framework 2.0和Asp.Net。 是一个很好的学习.Net设计的实例。

    PetShop4.0官方的ASP.NET三层电子商务范例及PetShop技术详解

    PetShop4.0官方的ASP.NET三层电子商务范例及PetShop技术详解!

    .Net petshop 4.0+文档

    微软的分层架构,大家可以学习下...希望对菜鸟有帮助

    Petshop4.0相关资料

    本资料包括: PETSHOP4.0全面分析 PETSHOP4.0详细分析 Petshop4.0详解.pdf ...Microsoft .Net Petshop详解一到五: petshop概览和准备工作.doc Microsoft .NET Pet Shop 4:将 ASP.NET 1.1 应用程序迁移到 2.0.doc

    petshop4.0 详解之四(PetShop之ASP.NET缓存) .doc

    petshop4.0 详解之四(PetShop之ASP.NET缓存) .doc

    PetShop4.0源代码+详解

    PetShop4.0源代码+详解 .NET Pet Shop4 应用程序的设计说明了构建企业 n 层 .NET 2.0 应用程序的最佳做法,这种应用程序可能需要支持各种数据库平台和部署方案。 .NET Pet Shop 4 项目的目标是: 工作效率:减少了...

    asp.net petshop 4.0

    petshop 不用我多说了吧,大家好好研究吧,里面有数据直接安装就行了

    petshop 4详解

    非原创) petshop4.0 详解之一(系统架构设计 petshop4.0 详解之二(数据访问层之数据库访问设计 petshop4.0 详解之三(PetShop数据访问层之消息处理) petshop4.0 详解之四(PetShop之ASP.NET缓存) ...

    [源代码] .NET Pet Shop 4.0 (精校代码)

    ☆ 分层结构:☆ PetShop.BLL PetShop.CacheDependencyFactory PetShop.DALFactory PetShop.DBUtility PetShop.IBLLStrategy PetShop.ICacheDependency PetShop.IDAL PetShop.IMessaging PetShop.IProfileDAL ...

Global site tag (gtag.js) - Google Analytics