早上吃早点的时候,突发灵感,结合吃的小笼包和日常的开发经验来说一下分层的应用。
首先,谈一下什么是三层架构,所谓的三层开发就是将整个业务应用划分为表示层-业务逻辑层―数据访问层-数据库等,有的还要细一些,明确地将客户端的表示层、业务逻辑访问、和数据访问及数据库访问划分出来,十分有利于系统的开发,维护、部署和扩展。
软件要分层,其实总结一句话,是为了实现“高内聚、低耦合”。采用“分而治之”的思想,把问题划分开来各个解决,易于控制,易于延展,易于分配资源。
这种三层结构有什么优势呢?
1. 通过将整个系统分为不同的逻辑块,大大降低了应用系统开发和维护的成本。
三层结构将表示部分和业务逻辑部分按照客户层和应用服务器相分离,客户端和应用服务器、应用服务器和数据库服务器之间的通信以及异构平台之间的数据交换等都可以通过中间件或者相关程序来实现。当数据库或者应用服务器的业务逻辑改变时,客户端并不需要改变,反之亦然,从而大大提高了系统模块的复用性,缩短了开发周期,降低了维护费用。
趣味理解:
假设饭店这样来做小笼包:
一层蒸饺,
一层肉包,
一层素包。
首先这种方式我们可以让做包子的分成不同的小组,来负责做不同的包子。当做好了每一种包子,他们可以很方便的知道,该放到哪个笼里,不至于挨个去查看该放在哪里,我们也很容易地将笼屉放到火上面去,而不会影响其他笼的加热。当我们要吃肉包或蒸饺时,我们也很容易就能找到我们所需要的,非常节省时间和体力。把肉包或蒸饺拿走或者增加,并不影响素包的加热。
如果我们把这些都放在一个大笼里,你觉得会怎么样?会不会很乱,维护起来很浪费时间,不但找起来麻烦,而其每次揭开锅都会对其他的有影响。
2. 将数据访问和逻辑操作都集中到组件中,增强了系统的复用性。
如:将数据访问集中到数据访问层的组件中,从而减少了应用程序中的重复代码,每个需要访问数据库、表的窗体都使用相同的组件。
如:一些共性的逻辑操作都集中封装在逻辑层的组件中,每一个使用该方法的操作,可以共享来访问该组件。
趣味理解:
简单的理解,笼屉本身就是一个重用的例子,如果我们使用一次性的笼(像一次性筷子一样理解),会浪费多少人工来做啊(重复编写麻烦),并且会有很大的资源浪费(代码冗余),最后还要进行垃圾处理(后期维护)。并且,如果笼屉和炉火的锅按一种规范和标准(接口)来做,这样的笼屉不但可以在这里用,也可以拿到别的地方用。(虽然这样理解不太确切,简单的这样理解好了)
3. 系统的扩展性大大增强。
模块化使得系统很容易在纵向和水平两个方向拓展:一方面可以将系统升级为更大、更有力的平台,同时也可以适当增加规模来增强系统的网络应用。由于摆脱了系统同构性的限制,使得分布数据处理成为可能。在扩充或修改功能时,基本不会破坏原有结构的稳定性。
趣味理解:
随着顾客的需要,我们现在需要增加新品种,如蒸馒头,蒸地瓜,那么直接可以增加一层笼就是了,对其他笼不会有什么影响。
三层结构在营造企业竞争优势中的作用主要体现在模块化设计使得用户在现有结构的基础上实现了系统扩展,从而提高企业信息化的速度和业务水平;同时三层结构中中间件的出现使得用户可以直接从市场上选择合适的产品来构建系统,大大降低了开发周期和开发费用。
但分层结构也有缺点也不是越多越好,那样管理很多层会比较麻烦,运行效率可能比较低。所以,一个具备良好层次结构的系统,其层的数目要恰到好处才行。
(作者:李天平 转载请注明)
|
评论
但分层是系统扩展性的一个必要条件,楼主有兴趣看看我的SPL(SmartPersistenceLayer),或许会有兴趣吧。http://tintown.cnblogs.com/category/12787.html 回复 更多评论
赞同你的说法,项目的层次要视项目的规模和业务复杂程度而定。对于简单的项目,采用复杂的分层,是一种负担,简单的应用因为分层而要多写很多的代码,非常的不xp。
同时,组件化、模块化的思想也非常重要,代码级别的复用或者reinvent the wheel的方式难以满足快速构建项目的要求,成熟、灵活和高度可复用的组件(还有种说法是基础框架)是IT企业的核心竞争力。 回复 更多评论
在学asp.net 分层架构,不知道楼主有没有这方面的入门的资料介绍介绍.
看了楼主开发的代码自动生成器.不过还不是很明朗^^ 回复 更多评论
除了有代码生成器外,还有一套基于分层思想开发的系统示例源码,你可以下来看看,自己学习一下。同时,代码生成器帮助里有一点介绍。 回复
来自: 昵称23428 > 《我的图书馆》
0条评论
发表
请遵守用户 评论公约
博客园 - 应用系统架构设计-补全篇
分离业务数据与业务操作,将业务数据单独封装到只有数据get,set的数据类中,这个数据类只充当DTO。整合业务数据与业务操作,将业务数据与相关的业务操作封装在一起称为业务实体,业务实体作为统一的业...
G4Studio开源平台简介
G4Studio开源平台简介。主要由基础类库体系、服务器端开发框架、富浏览器端开发框架、富桌面端开发框架、系统管理及权限参考模型、通用...
UCML编译型应用框架快速开发工具体系
它预先设置了应用的体系结构,概括了数据访问框架、业务对象框架、工作流框架、权限管理框架、业务规则框架、报表框架等内部体系及框架之间的相互联系。4.2. 业务单元 Business Unit) 业务单元,又...
解析三层架构(1)---为什么要分层?
界面设计人员的工作就是画程序界面然后将信息提交给业务层,不需要考虑业务层的逻辑关系,业务实现人员的工作是处理界面提交的数据请求完成逻辑流程,再结合数据访问层,不用考虑界面设计的样式、风格...
专题:走进Java框架SimpleFramework开发
专题:走进Java框架SimpleFramework开发专访:Java框架SimpleFramework开发团队创始人 SimpleFramework是基于Intercepting-Filter和MVC2模式(我们称之为:后处理模式,After-Processing Pattern),基于...
ERP更适合定制开发还是基于平台模式的开发_飞扬的雪花
ERP更适合定制开发还是基于平台模式的开发_飞扬的雪花ERP更适合定制开发还是基于平台模式的开发2009-09-07 16:15.另外一种平台是在技术平台的基础上发展起来的,以业务逻辑为核心的业务管理平台,这种...
AOP——引言
GOF将面向对象软件的设计经验作为设计模式纪录下来,它使人们可以更加简单方便地复用成功的设计和体系结构,帮助开发人员做出有利于系统复用的选择。设计模式解决特定的设计问题,使面向对象设计更灵活...
PetShop的系统架构设计
以PetShop为例,业务逻辑层的相关设计,均和网上宠物店特有的逻辑相关,例如查询宠物,下订单,添加宠物到购物车等等。在数据访问层(DA...
1.1.2 JavaEE的特点
1.1.2 JavaEE的特点。业界对JavaEE的一般定义是:JavaEE是一个开放的、基于标准的平台,用以开发、部署和管理N层结构、面向Web的,以服务器为中心的企业级应用。JavaEE就是这样一套标准。在企业应用开...