多层架构简述

(以下内容为转载,仅供参考,对多层架构感兴趣的朋友可以下载我写的FrameCountry架构看看,很实用的!)

下载最新的FrameCountry数据访问层架构:http://blog.csdn.net/lizheng82/archive/2007/06/18/1656140.aspx

 

使用多层架构进行系统开发是现今系统设计的流行趋势。通过分解业务细节,将不同的功能代码分散开来,更利于系统的设计和开发,同时为可能的变更提供了更小的单元。

以下就是一个典型的多层体系结构图。

uploads/200607/24_142206_mt.png



首先我们以“订单(Order)”为例,进行一个简单的业务分解。

1. 订单自然包括订单的内容(OrderInfo),其中有诸如订单编号、商品名称、数量,以及金额等信息。
2. 有了订单信息,我们还需要一个存储订单的场所,那么自然需要有个操作读写的对象(OrderAccess)。
3. 为了外界能进行相关的订单操作,我们还需要有个业务逻辑对象(Order),它提供创建新订单,向订单插入/删除商品,保存订单等操作。

通过上面的分析,我们基本上可以将一个业务逻辑完整地分割为:

业务实体 ---> OrderInfo
数据访问 ---> OrderAccess
业务逻辑 ---> Order

基于系统架构考虑,我们将这些对象分别放置在不同的逻辑单元中,这些逻辑单元就组成了“多层”。

业务实体层(Model) ---> 业务实体 ---> OrderInfo
数据访问层(DAL) ---> 数据访问 ---> OrderAccess
业务逻辑层(BLL) ---> 业务逻辑 ---> Order

同样以上面订单为例,我们进一步讲述各层对象的实现细节。

1. 客户基本上只依赖于 Order 和 OrderInfo,通过他们就可以操作业务的全部,它并不关心业务存储等细节。

2. 大多数时候我们会将 OrderAccess 设计成 Internal Protected 方式,OrderAccess 可以是一个抽象类或者接口。我更习惯于将其实现为抽象类,因为某些方法是调用其他方法来实现的,抽象类的设计可以减少实现类的代码数量。另外将该抽象类设计成工厂方法模式,通过 IoC 或者 "配置反射" 来获得具体的实现类,可以减少层之间的耦合,也便于数据系统的替换。

3. Order 多数时候可以实现为 Singleton 或者静态类,它只是提供了一系列的方法来操作某些逻辑,通过接受 OrderInfo 参数来获取信息。其本身无需保存任何状态。如果需要实现购物车,只需将 OrderInfo 存储到 Session 之中即可。

通过上面的例子,我们还可以发现多层的另外一个好处就是更利于团队协作开发。架构设计人员无需考虑具体的数据库实现代码,而将设计重点放在业务层面;数据库开发人员自然也可将重心放在数据库访问优化上。团队成员之间不再是一人负责一个业务模块,不再有了 n 个数据访问类,不再有 n 种不同的对象模式等等。从传统的 "瓦罐作坊" 演变为 "工业流水线",更利于根据技术能力和业务熟悉度的差别来划分不同的角色。

推荐:多层 + IoC 绝对是个不错的选择。  

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值