关于系统开发的三层架构
来源:互联网 发布:sql导出数据库成excel 编辑:程序博客网 时间:2024/04/30 12:28
目前开发人员对系统开发的一个共识是使用三层架构,分为表示层,业务层,和持久层。而这三层之间的依赖关系如何?比较常见的一种看法是
表示层 --> 业务层 --> 持久层
这表明了层与层之间的调用关系,表示层通过调用业务层来完成任务,而业务层则调用持久层。从另一个角度来看,一种依赖关系是
表示层 --> 领域模型(Domain Model) <-- 持久层
即表示层和持久层都应该理解(recognize)领域模型。而领域模型则是业务层的一部分。业务层正是系统的价值所在。虽说表示和持久也很重要,在某些系统中可以说是很关键,但是它们的最终目的都是为业务服务,所以业务层应该是系统的核心。
基于以上的认识,在系统设计的时应首先分析需求得到领域模型,找出系统中的实体、对象(静态的一面),并明确大致的业务流程(动态的一面)。 而另两层应尽最大努力为业务层服务,且尽量减少业务层受另两层的限制。
各层的职责:
表示层:负责显示信息,及从系统外部得到输入。表示层的设计决定系统界面的可用性,及信息输入和展示的可靠性。表示层只知道如何展示信息,及收集用户输入,并不知道该如何对这些输入进行处理来完成业务。
业务层:完成业务逻辑。业务层设计决定客户价值是否能够得到实现。这是系统的关键。外在的表现是功能性。业务层设计和实现的失误表现在用户端即功能缺失,功能不可靠等。如果需要对业务层的业务规则进行解耦,则可以使用规则引擎如Drools,把业务规则分离出来。但分离后的业务规则仍属于业务层。业务层知道如何对用户输入进行处理,能够应用业务规则完成用户所需的业务,但它不知道数据如何读取和保存。
持久层:负责用户信息的持久化。持久层的失误表现在外即数据处理(储存,展示等)不可靠。持久层完全不知道业务,只专注于数据存储和读取。所谓持久化并不一定是指数据库,任何方式的持久化(通过文件,网络的持久化等)都应由持久层完成。
各层的设计都会直接影响系统性能。
三层的体积大小和复杂度在不同的系统中可能会有很大的不同。比如说GOOGLE的搜索引擎,它的界面很简单,可以想像表示层是比较容易实现的,而它的业务层,关系到处理关键字,分析搜索结果,决定排名等,而持久层则要负责处理超大量的数据。业务层和持久层则相当复杂。而有的系统持久层会很小,比如杀毒软件,媒体播放软件等。
表示层 --> 业务层 --> 持久层
这表明了层与层之间的调用关系,表示层通过调用业务层来完成任务,而业务层则调用持久层。从另一个角度来看,一种依赖关系是
表示层 --> 领域模型(Domain Model) <-- 持久层
即表示层和持久层都应该理解(recognize)领域模型。而领域模型则是业务层的一部分。业务层正是系统的价值所在。虽说表示和持久也很重要,在某些系统中可以说是很关键,但是它们的最终目的都是为业务服务,所以业务层应该是系统的核心。
基于以上的认识,在系统设计的时应首先分析需求得到领域模型,找出系统中的实体、对象(静态的一面),并明确大致的业务流程(动态的一面)。 而另两层应尽最大努力为业务层服务,且尽量减少业务层受另两层的限制。
各层的职责:
表示层:负责显示信息,及从系统外部得到输入。表示层的设计决定系统界面的可用性,及信息输入和展示的可靠性。表示层只知道如何展示信息,及收集用户输入,并不知道该如何对这些输入进行处理来完成业务。
业务层:完成业务逻辑。业务层设计决定客户价值是否能够得到实现。这是系统的关键。外在的表现是功能性。业务层设计和实现的失误表现在用户端即功能缺失,功能不可靠等。如果需要对业务层的业务规则进行解耦,则可以使用规则引擎如Drools,把业务规则分离出来。但分离后的业务规则仍属于业务层。业务层知道如何对用户输入进行处理,能够应用业务规则完成用户所需的业务,但它不知道数据如何读取和保存。
持久层:负责用户信息的持久化。持久层的失误表现在外即数据处理(储存,展示等)不可靠。持久层完全不知道业务,只专注于数据存储和读取。所谓持久化并不一定是指数据库,任何方式的持久化(通过文件,网络的持久化等)都应由持久层完成。
各层的设计都会直接影响系统性能。
三层的体积大小和复杂度在不同的系统中可能会有很大的不同。比如说GOOGLE的搜索引擎,它的界面很简单,可以想像表示层是比较容易实现的,而它的业务层,关系到处理关键字,分析搜索结果,决定排名等,而持久层则要负责处理超大量的数据。业务层和持久层则相当复杂。而有的系统持久层会很小,比如杀毒软件,媒体播放软件等。
0 0
- 关于系统开发的三层架构
- 关于系统开发的三层架构
- 关于J2EE开发三层架构
- 三层架构的开发
- 软件系统的三层架构、系统开发步骤
- delphi+java三层开发架构系统的实现
- 关于三层架构的理解
- 关于23种设计模式的有趣见解-asp.net三层架构、系统架构
- 【三层】三层架构开发项目
- SOA架构的三层体系结构分布式系统
- 基于三层架构的员工管理系统
- 【ssm架构】系统架构-SSM与三层架构的关系
- 关于ASP.NET的三层架构
- 关于三层架构的一点点看法
- 一篇关于应用程序三层架构的文档
- 关于WEB三层架构的思考
- 关于java编程的三层架构
- MVC/三层?三层架构?--关于三层架构的具体解释!
- Android XML解析学习——Pull方式
- 配置和使用svn
- 前瞻设计:创新型战略推动可持续变革(全彩)
- 从零开始学Python
- 【LeetCode】Two Sum && 【九度】题目1352:和为S的两个数字
- 关于系统开发的三层架构
- zedGraph参数设置
- VideoView播放视频
- android之自定义ViewGroup和自动换行的布局的实现
- SAP EWM 仓库任务创建和确认的相关函数
- 使用HBase处理海量数据系列—Part4—Java API
- Hive命令行参数
- web服务器和应用程序服务器的区别
- JSP内置对象---request