关于分层架构

Posted fabao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于分层架构相关的知识,希望对你有一定的参考价值。

分层架构的由来

以Web开发为例子。

一开始,人们把前端代码+数据库操作+逻辑都写在一个文件中。

但是后来发现这样容易乱,于是开始分层。

主要有两种思想:

1是,页面只负责显示,后端负责逻辑。

2是,数据库操作,逻辑分离。

前者靠MVC实现。

后者靠三层实现。

单纯的MVC

在mvc中,

Controller负责接收view的参数;

调用Model处理;

然后讲结果返回给View。

Controller是前后联系的中介。

所谓的分离,其实就是把C当作统一的前后联系的中介。

把C的文件删掉,就算是真的分了。

---------------------------------------------------------------------------------
可以看出单纯用MVC的话,

Model一定是充血模型,

也就是既包含数据,

又包含对数据的操作。

因为C只是前后联系的中介。

再加上三层

这个时候,后端可以继续分出三层来了。

也就是将充血实体类,进一步拆成贫血实体类+BLL+DAL。

三层里的UI层实际就是mvc中的V和C。

技术图片

最后

MVC+三层分好以后,我们发现程序被分成了:

贫血实体+DAL+BLL+Controllers+Views

这样5个部分。

个人感觉

之前在学校的时候,我以为MVC和三层是一些过时的东西,因为听的频率高。

现在实际看了目前的一些java和C#的流行框架后,才知道这都是正在使用的东西。

通过网友的文章才知道,这些东西只是历史悠久,并不是过时。

有时候个人感觉就是这么奇怪,你以为事情是这样的,而事情实际却是那样的。

也许这就是生活的乐趣之所在!

我的开发习惯

贫血实体类+Controllers+Views。

如果真的有可重用的BLL或者DAL,我会提取出方法来的。

这样写:

1.不会有充血实体类的耦合性;没有三层的联级修改。

2.这样完全就是为了开发快速。写的有条理的话,其实改起来也不慢。

我最讨厌的是什么?我最讨厌的是麻烦。所以我习惯这种写法。 

关于前后端分离

前端主要工作是:展示数据,交互,调接口。

后端主要工作是:出接口,业务逻辑,数据库操作。

前后端分离在我看来是很好的一个东西。

因为我们说分了三层以后,我就可以把一个项目DAL换成另一种数据的,或者BLL里可以重用DAL的方法什么的。

但是现实中很少有真的换数据的,它给提供的重用也是比较有限的。

但是前后端分离真的是,有很多人都做了这样的实践。

最后

不管怎样。

多了解一些就好。

原理和技术了解的越多,选择就越多。

最终就越能做出符合实际的程序来。

 

以上是关于关于分层架构的主要内容,如果未能解决你的问题,请参考以下文章

软件架构设计-软件架构风格分层架构

软件架构设计-软件架构风格分层架构

软件架构设计-软件架构风格分层架构

费元星-关于百度在数据仓库-层级架构上的思考

软件架构之分层架构理解

数据仓库的分层架构与演进