真正的三层结构,初学者的最佳入门。

ATGO 2009-12-22 12:36:14
加精
我很爱国!

今天给大家解释一下我对三层结构的理解,也希望能为初学者提供一些参考。

大家的疑问:
三层结构是什么?
我们该不该推荐三层结构?
PETSHOP是不是三层结构?
该不该学习PETSHOP?

上一次在CSDN和CNBLOGS上面初步发表了我对三层的理解受到了一些的反驳

我的观点:
B/S是经典的三层结构。

回复中的观点:
1) B/S是经典的三层结构是错误的。
2) PETSHOP是三层结构,三层包括UI、BLL、DAL。
3) 三层模式是体系结构模式,MVC是设计模式
三层模式又可归于部署模式,MVC可归于表示模式
MVC 是一种实现三层架构的比较清晰的实现
4) 三层模式是体系结构模式,MVC是设计模式

 首先我地提出几个问题让大家思考:
1) 三层结构是怎么一个背景下发展的?三层结构到底解决了什么问题?
2) 如果PETSHOP是三层结构那在JAVA领域里什么样才叫三层?难道就没有?

 其次引用书上的观点:
引:《实用软件工程》赵池龙 ISBN 7-5053-8546-1
(P115页)B/A/S三层结构是由C/S二层结构发展而来的,C/S二层结构是由H/T(主机/终端)一层结构发展而来的。……三层结构是三级处理,处理工作由表示层、应用逻辑层和数据层分布式分担。
(P116页)由于客户机/服务器体系结构的广泛使用,使得应用系统越来越复杂化,有些问题在二层结构中不好解决,如服务器负担过重、客户机异地操作不易、不便于在互联网上输入输出信息。为了解决这些问题,并保留一层结构集中处理和二层结构分布处理的优点,与之相应的三层结构方案(Three-tiered)诞生了。
(P116页)三层结构的设计特点是:在数据库服务层上,设计应用软件的数据库的表、索存储过程、触发器、视图。在应用逻辑层上,设计应用软件的事务处理功能模块、数据传输与通信功能模块,这是不可见的构件设计。在表示层上,设计应用软件的登录、浏览、录入修改界面,这是可见的构件设计。
(P116页)三层结构方案:表示层(游览层)、应用逻辑层(功能层)和数据库服务器层(数据层)构成的应用模型。
(P117页)三层结构逻辑关系示意图


引:《程序员考试考点分析与真题详解》飞思 ISBN 7-121-00762-2
(P380页)B/S结构是最经典的三层结构,它包括游览器(Browser)、Web服务器、数据库服务器三个部分。
(P381页)三层的C/S结构是在原二层C/S模式的基础上,加入应用服务器,使其成为三层的C/S计算模式。

 再来看看PETSHOP系统架构设计带来的优点:
Martin Fowler在《Patterns of Enterprise Application Architecture》一书中给出了答案:
1、开发人员可以只关注整个结构中的其中某一层;
2、可以很容易的用新的实现来替换原有层次的实现;
3、可以降低层与层之间的依赖;
4、有利于标准化;
5、利于各层逻辑的复用。

其实从我的角度来看PETSHOP规范所带来的是一套解决软件危机的方案(标准的软件工程开发过程)。而不是专注解决于二层结构所带来的系统性能瓶颈问题。

软件危机的主要表现:
1) 软件开发生产率提高的速度,远远跟不上计算机迅速普及的趋势,软件需求的增长得不到满足,……
2) 软件成本在计算机系统总成本中所占的比例逐年上升。
3) 不能正确估计软件开发产品的成本和进度,使得实际开发成本高出预算很多,而超出预期的开发时间要求。
4) 软件开发人员和用户之间的信息交流往往不充分。
5) 软件产品的质量不易保证
6) 软件产品往往不可维护。
7) 软件产品重用性差,同样的软件多次重复开发。
8) 软件通常没有适当文档资料

PETSHOP是值得学习的!因为解决的是软件工程的问题,我们学习的、工作的就是软件工程。

 最后总结:
从解决问题的角度来看B/S是经典三层结构,PETSHOP不是真正的三层结构,但它是大家口中说的“三层结构”,而且是值得学习的!

 补充:
1) B/S原来不是这样取名的,是国内某大型公司给起的名字,在国内延用至今。
2) B/S是三层C/S的一个特例,由于B/S结构是最常见的三层结构,也使其催生了三层结构的出现与发展,因此很多人误以为三层结构就是B/S结构,其实这种理解不正确的。
3) 当然三层结构个人以为带来最明显的一个优点就是可分布式而且是比较容易的,所以可以在多个物理点上部署,但我觉得不因为这样的优点把它叫成“部署模式”了。
4) B/S是一个经典的三层结构,而我们做WEBFORM开发就是在此平台中做“二次开发”,但我喜欢。
5)

由于本人表达能力差,今天先到此。
...全文
14632 334 打赏 收藏 转发到动态 举报
写回复
用AI写文章
334 条回复
切换为时间正序
请发表友善的回复…
发表回复
indusl 2012-01-06
  • 打赏
  • 举报
回复
楼主你还木有理解三层假构啊
liuyuduen 2011-02-25
  • 打赏
  • 举报
回复
本来 我以为 我算初步了解三层了 看完本帖

又迷糊了。。。
zj882250 2011-02-18
  • 打赏
  • 举报
回复
out
huahuikai615 2011-02-17
  • 打赏
  • 举报
回复
个人感觉楼主把逻辑分层和物理分层混淆了……
裸奔的蜗牛 2011-01-05
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 vrhero 的回复:]
负责任的态度是...

对真正的初学者告诉他们去读《软件工程》这种系统而严谨的教科书,对有经验的开发者只就具体的技术问题进行讨论,而不是用一堆模糊不清的概念、术语让他们陷入混战...
[/Quote]
支持!
xc_zxy 2010-12-13
  • 打赏
  • 举报
回复
探讨的很深的样子。。。ORZ
zql0612 2010-11-14
  • 打赏
  • 举报
回复
看不太懂啊
joker111161 2010-11-04
  • 打赏
  • 举报
回复
全贴看了一遍,总结一下,LZ的思维有些问题
第三页的cl_gamer把问题说的很清楚了,你倒说和你的想法一致
你根本就是避开问题的本质,玩起太极推手了,没有勇气承认自己的错误

看完帖子之后觉得最有帮助的就是tier和layer的区别
初学者想要的是layer(逻辑上的层次)的划分,而不是tier(物理上的层次)的划分
毕竟部署阶段离初学者太遥远了
初学者需要的是编写出更容易维护和扩展的代码
amymin123 2010-09-10
  • 打赏
  • 举报
回复
看不懂
lynmsdn 2010-09-09
  • 打赏
  • 举报
回复
非常感谢
godspeed_1022 2010-09-07
  • 打赏
  • 举报
回复
受益匪浅啊!
star0928 2010-09-06
  • 打赏
  • 举报
回复
本来以为自己大概了解了3层结构,但是越看越晕,看来还需要继续努力
wangzhen_m 2010-09-03
  • 打赏
  • 举报
回复
唉!啥时候能参与到高人们的讨论当中啊~真羡慕!
caoruing 2010-09-02
  • 打赏
  • 举报
回复
lz 辛苦
cjfriends 2010-06-20
  • 打赏
  • 举报
回复
晕了,彻底的晕了,三层有那么复杂吗?
lafkkk2 2010-06-20
  • 打赏
  • 举报
回复
发表一点和主题无关的东西,
对于这种有深度的东西,建议没几年开发经验的人不要标记、发表那些没用、连自己都看不懂的东西!
一句话,先考虑清楚自己有几斤几两的再说话。
PS:像我这种话,就是不自量力!
zjasd18asd 2010-06-19
  • 打赏
  • 举报
回复
求 真接。。
liuyong19832004 2010-06-19
  • 打赏
  • 举报
回复
恩,学习了
寻找彩虹 2010-06-07
  • 打赏
  • 举报
回复
学习了 谢谢~~~
happy_happy_man 2010-06-06
  • 打赏
  • 举报
回复
不懂 要不懈努力啊
加载更多回复(307)

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧