网站架构
三、网站架构
在本章节我们来学习一下网站架构,弄明白一些概念东西,以便我们以后的程序开发。
什么是网站架构?笔者认为网站架构就是一套系统的规则。通过这套规则,我们可以把一个复杂的系统划分成多个简单子系统的集合,这些子系统相互独立,又与整个系统保持一致。网站架构分为网站物理架构和网站软件架构。网站的物理架构规定了组成软件系统的物理元素、这些物理元素之间的关系、以及它们部署到硬件上的策略,毋庸置疑,对于规模稍大的网站来说,其背后必然是一个服务器集群来提供网站服务。物理架构不是我们讨论的重点我们只讨论软件的系统架构,所以以后我提到的网站架构就是指软件架构。
为什么要用网站架构?网站规模到了一定的程度之后,代码里各种逻辑纠缠在一起,会给维护和扩展带来巨大的障碍,这就是我们网站架构的意义。网站架构有很多方式和种类,比较常用的就是进行分层设计,通常企业开发被分成表示层,业务层,数据访问层和,这就是著名的三层架构您一定不陌生。
首先说明一下使用三层架构未必会提升性能,我们用三层结构主要目的是使项目结构更清楚,分工更明确,有利于后期的维护和升级。下面将详细介绍一下三层架构。
1、三层架构的定义
三层架构中的三层分别为表示层(UI)、业务逻辑层(BLL)、数据访问层(DAL),具体的架构如下图3-1所示。
图3-1 三层架构图
2、各层的作用
表示层: 位于最外层(最上层),离用户最近。用于显示数据和接收用户输入的数据,为用户提供一种交互式操作的界面,所有和表现相关的逻辑都应该被纳入表现层的范畴,并不仅仅就指模板,它的范围要更广一些。网站的表示层通常表现为aspx。在这一层我们容易犯的错误就是把本属于表现层的逻辑放到了其他层面去完成,这里说一个很常见的例子:我们在列表页显示文章标题的时候,都会设定一个最大字数,一旦标题长度超过了这个限制,就截断,并在后面显示“..”,这就是最典型的表现层逻辑,但是实际情况,有很多程序员都 是在非表现层代码里完成数据的获取和截断,然后赋值给表现层模板,这样的代码最直接的缺点就是同样一段数据,在这个页面我可能想显示前10个字,再另一个 页面我可能想显示前15个字,而一旦我们在程序里固化了这个字数,也就丧失了可移植性。
业务逻辑层: 该层处于数据访问层与表示层中间,起到了数据交换中承上启下的作用,无疑是系统架构中体现核心价值的部分,主要是针对具体的问题的操作,也可以理解成对数据层的操作,对数据业务逻辑处理,它的关注点主要集中在业务规则的制定、业务流程的实现等与业务需求有关的系统设计,也即是说它是与系统所应对的领域(Domain)逻辑有关,很多时候,也将业务逻辑层称为领域层;所以我们首先要考虑的问题如何组织你的业务对象之间的关系,以便做到功能的接口与具体的实现分离,这是最重要也是最基本的,如果连这点都做不到,你的程序也就是死的,丝毫不具备可扩展性,其次应该考虑业务组件应该以怎样的方式来为表示层提供服务。
数据访问层:有时候也称为是持久层,主要是对原始数据(数据库或者文本文件等存放数据的形式)的操作层,而不是指原始数据,也就是说,是对数据的操作,而不是数据库,具体为业务逻辑层或表示层提供数据服务.简单的说法就是实现对数据表的Select,Insert,Update,Delete的操作。
3、如何建立一个三层体系结构解决方案
A)新建一个空白解决方案,名称为MySnow,如图3-2所示。。
图3-2 空白解决方案
B) “添加”-“新建项目”—C#类库,名称为BLL,如图3-3所示。
图3-3 业务逻辑层
C) “添加”-“新建项目”—C#类库,名称为DAL。
D) “添加”-“新建项目”—C#类库,名称为Model。
Model又叫实体类,这个东西每个层都用到,在各层之间起到了一个数据传输的桥梁作用,它是面向对象编程中最基本的东西:类。一个桌子、一个椅子、int、string等也是类,Model在三层架构中的位置,和int,string等变量的地位就一样了,没有其它的目的,仅用于数据的存储而已,只不过它存储的是复杂的数据。所以如果你的项目中对象都非常简单,那么不用Model而直接传递多个参数也能做成三层架构。
E) D) “添加”-“新建项目”—Asp.Net Web应用程序,名称为SnowWeb,如图3-4所示。。
图3-4 表现层
F)添加项目依赖,在解决方案中右键单击解决方案MySnow选择属性,在属性页面选择项目依赖,SnowWeb项目依赖BLL和Model项目,如图3-5所示。
3-5 SnowWeb项目依赖BLL和Model项目
BLL项目依赖DAL和Model项目,如图3-6所示。
3-6 BLL项目依赖DAL依赖DAL和Model项目
DAL项目依赖Model项目,如图3-7所示。
3-7 DAL项目依赖Model项目
Ok我们的一个三层架构骨架已经搭建完毕,最后解决方案如图3-7所示。
3-7 三层架构解决方案