三层架构介绍

三层架构对于开发人员来说,已经是司空见惯了,除了大型与超小型项目外,大多都是这种架构来进行开发。

在这里为初学者们简单介绍一下三层架构:

(下面内容摘自《趣味理解:三层架构与养猪—《.NET深入体验与实战精要》》,这是以前看到的关于三层架构介绍,觉得挺经典的,大家有时间的话认真看看)

对比以上两图,我们可以看出:   1)数据库好比猪圈 ,所有的猪有序地按区域或编号,存放在不同的猪栏里。   2)DAL 好比是屠宰场 ,把猪从猪圈取出来进行(处理)屠杀,按要求取出相应的部位(字段),或者进行归类整理(统计),形成整箱的猪肉(数据集),传送给食品加工厂( BLL )。本来这里都是同一伙人既管抓猪,又管杀猪的,后来觉得效率太低了,就让一部分人出来专管抓猪了( DBUtility ),根据要求来抓取指定的猪。   3)BLL 好比食品加工厂 ,将猪肉深加工成各种可以食用的食品(业务处理)。   4)Web 好比商场 ,将食品包装成漂亮的可以销售的产品,展现给顾客( UI 表现层)。   5)猪肉好比 Model ,无论是哪个厂(层),各个环节传递的本质都是猪肉,猪肉贯穿整个过程。   6)通用类库 Common 相当于工人使用的各种工具,为各个厂(层)提供诸如杀猪刀、绳子、剪刀、包装箱、工具车等共用的常用工具(类)。其实,每个部门本来是可以自己制作自己的工具的,但是那样会使效率比较低,而且也不专业,并且很多工作都会是重复的。因此,就专门有人开了这样的工厂来制作这些工具,提供给各个工厂,有了这样的分工,工厂就可以专心做自己的事情了。

我们的 框架结构

接下来要和大家一起开发的是基于SubSonic3.0 ORM插件的框架,关于SubSonic3.0的具体介绍将会在下一章节详细说明。

在此要向大家声明的是,本框架主要应用于中小型项目,对于并发量非常大、对性能要求非常高的和有完美倾向的开发人员(如开发中必须统一使用一种开发结构,要求三层架构必须使用面向对象的朋友),请拐弯,因为本框架可能不符合你的审美观。

本框架不会完全使用面向对象的方式来进行开发,本框架追求的思想是合适与快捷。即在合适的地方使用适 合 的插件或技术,整个框架完成后添加新功能、做二次开发或维护时,能方便快捷(速度流)。

比如该用存储过程实现的业务逻辑,就不用 强制 使用代码来实现,因为有些逻辑使用代码来实现,无论在开发时间、代码量、并发处理、性能上都与存储过程处理没法比;在需要使用ADO.NET来执行SQL语句时,就不会为了统一框架底层调用方法, 强制 使用SubSonic插件的相关方法来实现,如果你看到这种代码心理很不舒服的话,那只能说我们不在一个频道上,对于我这种实用型开发者来说,所追求的编程模式方向可能与你不同。

下图是本框架的扩展结构发给大家参考一下,以后的章节重点讲解的是红框框住的几个项目,详细讲述本框架底层架构是怎么搭建的,指导初学者们一步步搭建好自己的框架 架 构。

对比前面的三层架构,大家可能会很奇怪,怎么没有看到Model层的?这是因为我们使用的SubSonic3.0插件所附带的效果,该插件附带的T4模板所生成的Model与DAL混合在一起,很难进行分开。SubSonic插件为了实现更新数据的时候,自动将它所生成的SQL语句剔除掉未赋值字段,只更新已赋值的字段内容,而对实体类的Set进行了改造(如下图)。(注:常见的SQL语句生成框架是没有这种过滤功能)

这样处理将会减少更新数据长度,减少对实体类字段赋值操作(对使用默认值的字段不用再进行赋值操作),减少代码工作量。例如:有些订单表里有几十个字段,其中大部分在创建时使用默认值就可以了,这时只需要对需要的几个字段赋值即可。

框架各项目功能说明

序号 名称 说明
1 Solution.Common 公共函数类
2 SubSonic.Core SubSonic3.0.0.4插件源码
3 Solution.DataAccess 数据访问层
4 Solution.Logic.Managers 业务逻辑层
5 Solution.Web.Managers UI层(后台管理系统)

各层之间调用说明   1) Solution.Commom,主要存放系统要调用到的各种常用工具函数,给其他所有层调用。   2) SubSonic.Core,SubSonic3.0插件源码,主要负责与数据库进行交互,将业务转换成相应的SQL语句,对数据库进行各种增、删、改、查等操作;   3) Solution.DataAccess,主要存放T4模版生成的业务实体(Model)、数据库表结构、业务实体常用函数、存储过程调用函数,以及已封装好的各种数据库操作函数和ADO.NET数据库执行函数;   4) Solution.Logic .Managers ,主要存放各种业务逻辑函数,其中SubSonic文件夹里的文件是由T4模版自动生成的常用逻辑函数(会将UI层所要用到的80%以上的函数自动生成出来)。这些逻辑函数主要是接收UI层的操作命令与参数,进行逻辑运算和处理后,提交给Solution.DataAccess层来处理,以实现对数据库表记录的 增、删、改、查等操作;   5) Solution.Web .Managers 层是UI层,用来展示管理系统的各个页面与功能。 主要实现和用户的交互,接收用户请求或展示用户请求的数据结果。