我这里阐明两点:一,我的观点不是说绝对不能传递PO到表现层,一个很简单的应用,如同Pufun所说似乎永远不会改(不需要移植,不会有太大的变更)的情况时(比如小的项目、个人demo或者公共系统等什么),的确可以这么做,丝毫不要拘泥于某种限制(在适当的情况下,goto都可以用),这些都是对的。但是一点,在讨论架构这个词眼的时候,就不应该提出这样的观点了。前面的只是策略,但绝对不是架构。第二,我是经历过这样的项目开发的,不是像有些朋友说的我好像是空白谈书似的,如果有朋友知道的话,可以了解了解同望公司(交通行业最大的软件商)的系统,可以这么说,直到现在,他们也许还是这样做的。(我本不应该这么直接的说出,但是我只是想如果有同望的朋友,可以看看,可以总结),没有这样的经验,我何来如此反对?楼上有些朋友,我真敢说,你们绝大部分中做实际大项目的经验没有我丰富,我不是自吹什么,没有必要,现实中也见不了面。我只是希望我们能相互吸取知识和经验!
最后,我给大家解释一下什么叫架构。架构(achitecture)来自于建筑学的概念,是框架(framework)和结构(structure)的合称。其中它与框架的区别主要体现在,它着重描述各个框架中的结构关系(之间的组合等),描述框架间的联系,突出它的结构特点。一个好的架构师或者设计人员必须对框架,框架的组合有非常清晰地认识。架构不会被框架中的组成所绑定所限制。软件系统的架构又体现在什么上面?也就是你所做系统所选择的框架,框架的组合,框架间的通信(包括协议、数据表示、接口联系等)。好,我结合楼主讨论的题目说说为什么不能在架构中表达这样的概念。首先一、用一种数据对象来维持多个不同框架间的数据联系,使所有框架相互绑定死,那么自然就根本没有体现出框架间联系的方式,根本就谈不上任何架构;二、楼主的PO来自于什么?hibernate还是其他,如果是hibernate,那么你的架构就限定于框架的选择(简单地讲就是一栋楼的设计限定于一层房子的结构),这还算架构设计么?如果是JDO、CMP,这样的PO还能不能传那?三、一个好的架构是怎么评估的,应该是可扩展、易维护,高容错,而不是所谓的一些性能的损失(它是放在后面的)。有些东西,看来的确不会出现,但是在架构设计中不能不考虑(就简单地如同,在非地震地区建的楼房依然要达到一定的防震等级),架构的设计,应该是就架构设计人员及相关业务人员的水平,充分评估系统存在的可能性。比如将数据库的更改(有人说数据库的更改是业务的更改,这是一个典型的错误,设计的更改往往是分析设计人员对需求把握挖掘不够),就会给楼主的选择方式带来灾难性的破坏,这样的非容错,难扩展的架构还能叫什么架构么?大家想想戴高乐机场给我们带来的启示吧(软件系统的灾难就是需要大投入大范围的重构)!
架构和MVC是两个完全不相关的概念,MVC是用来构建用户界面的一种思维,或者可以理解为一种模式,Struts以及各种web框架都是体现了这种思维,但是它和架构是两码事。我们可以说web框架是基于构建J2EE应用的重要组成部分(但并不一定,比如你可以用web service)。
轻量级的东西能帮我们做什么?当然,它可以为我们解决不少问题,能够快速地构建一个系统和应用,但是说,在讨论一个架构这样词眼的时候,动不动就被这些框架这些组建所困促,觉得有些什么呢?难道大家做的系统就为hibernate而生?举一个有些不负责的例子:你们可以到JDON上看看,有篇文章是IBM的一位工程师留的,他说他们的系统开始准备用hibernate,但是客户要求IBM负责使用hibernate带来的问题,IBM不愿意承担,所以最终没有使用。任何一个框架都存在缺点,就连整个java one组织开发的EJB都存在,何况一个hibernate,把它吹成神一样,是否有些过了?哪个敢说它就没有一点问题?(我们要使用它,但是绝对不要依赖它)
我不是动则谈大应用,动则就是大概念。但是首先我们谈的就是架构,比如建造,我们能对一个小楼房去谈它的架构建造么?多层,不是说,你描述一个多层就是多层了,不是说你简单地把程序分割开就是多层了,架构,不是说你把Struts+Spring+Hibernate拿来用就是架构了,不是说只是简简单单地结构关系就是架构了,他们仅仅是简单结构的一种堆砌。真要那么简单,个个都可以做架构设计师了。
争了这么多,也应该结束了。我希望各位朋友站高一点,看远一点,当你们系统不依赖于任何一个数据持久层,发现hibernate好可以移植hibernate,发现EJB好可以移植EJB等等的时候,那么你可以对自己说,你的架构日趋成熟了。
分享到:
相关推荐
【凤舞天骄TB商店修改器V1.0 DELPHI源代码】是一个针对网络游戏《凤舞天骄》中的商店系统进行修改的工具,由DELPHI编程语言编写。DELPHI是Borland公司开发的一种面向对象的、高效的Windows应用程序开发环境,它基于...
国航凤舞九天入职培训结业试题 “凤舞九天”自 2006 年始,已成为公司新员工入职培训的品牌项目,中航大家庭的新成员在这里第一次相逢并结缘,为今后在中航的共成长打下了坚实的基础。 “凤”代表着朝气蓬勃的新入职...
“凤舞九天”自 2006 年始,已成为公司新员工入职培训的品牌项目,中航大家庭的新成员在这里第一次相逢并结缘,为今后在中航的共成长打下了坚实的基础。 “凤”代表着朝气蓬勃的新入职毕业生们,“舞”寓意着青春、...
"凤舞九天社区浏览器"是一款集成了多种实用功能的综合性软件,主要针对日常操作设计,特点是体积小巧但功能丰富。这款程序的核心是其浏览器组件,它不仅能够浏览网页,还整合了媒体播放器、图像查看器、Flash播放器...
【DEDE凤舞模板】是基于DEDE CMS(织梦内容管理系统)设计的一款网站模板,专为提升网站视觉效果和用户体验而打造。DEDE CMS是中国较为流行的内容管理系统之一,以其强大的功能、易用性和灵活性受到许多网站开发者的...
DEDE凤舞模板是一款专为DEDE CMS设计的高质量网站模板,它以其独特的设计风格和良好的用户体验受到了许多网站管理员的青睐。DEDE CMS,全称是 Dedecms,是一款基于PHP+MySQL技术开发的开源内容管理系统,广泛应用于...
"凤舞九天社区浏览器(1.01)"是一款集成了多种常用功能的综合性应用程序,主要特点是将浏览器、媒体播放器、图像查看器、Flash播放器、相册管理和联系人管理等工具融为一体,旨在为用户提供便捷的一站式操作体验。...
段凤舞教授是我国著名的中医肿瘤学家,他在中医治疗肿瘤领域有着丰富的经验和显著的疗效。段教授通过多年的研究和实践,总结出了一系列治疗不同肿瘤的经验方,这些方药经过多人次的实践验证,显示出一定的疗效,尤其...
KX凤舞九天
"凤舞九天主图"是通达信中一个典型的用户自定义技术分析指标,主要帮助用户判断股价的趋势和可能的转折点。这个指标结合了黄金分割理论,通过计算历史最高价(高1)和最低价(低1)之间的黄金分割比例来预判未来的...
"凤舞九天社区源代码"是一个以DELPHI 7.0编程语言编写的程序,它集成了一系列流行的功能,旨在提供一个全方位的用户体验。这个程序包含了一个浏览器、媒体播放器、图像查看器、FLASH播放器、相册管理和通讯录等模块...
本文档将深入探讨通达信软件中的自定义指标——“凤舞九天 黄金分割”,并介绍其如何通过黄金分割理论来预测股票市场的支撑位和阻力位。 黄金分割是一个起源于古希腊的数学比例,它在自然界、艺术作品和建筑设计等...
标题"python写的音乐, 凤舞九天 / 迷你音乐"暗示了我们这里讨论的是一个使用Python编写的音乐播放器项目,名为"凤舞九天 / 迷你音乐"。它可能是开发者通过Python的多媒体库,如pygame或pygame.mixer,来实现的一个...
基于UG的“凤舞”汽车轮毂三维建模与有限元应力分析毕业论文.doc
雷曼克斯,作为知名的无线电设备制造商,推出了专为凤舞115S设计的写频软件——雷曼克斯X15S写频软件。这款软件的独特之处在于其对400MHz至520MHz频率范围内的调频支持,为用户提供了一个强大的工具,以满足他们在...
资料包中包括《NHibernate 3 Beginner's Guide.pdf》【英文版】、《NHibernate.chm》【中文版】、《Packtpub.NHibernate.3.0.Cookbook.Oct.2010.pdf》【英文版】三本电子书。
在IT行业中,"服务端一键打包"通常指的是一个自动化的过程,用于将服务器应用程序的所有必要组件合并成一个可部署的文件包。这个过程涉及到多个步骤,包括编译源代码、收集依赖库、配置文件以及设置执行脚本等。...
修改了部分功能: 1.安裝可以不放入資源文件中 2.安裝的時候將安裝的文件信息寫入Install.log 3.寫入注冊表的信息也可以寫入Install.log 4.卸載的時候根據安裝日志Install.log來進行卸載 5.根據Install.log的信息來...
凤舞样式包括单样、组合、图文热点等多种模式,各具特色,如凤舞子链、凤舞图片、凤舞导航等,点击区域明确。 3. **行业定制样式**: - **电商行业**:通过图片和商品详情展示,加快用户购买决策,如电商热点直达...
新天骄管理工具个人4.0.0.1版新天骄管理工具个人4.0.0.1版新天骄管理工具个人4.0.0.1版新天骄管理工具个人4.0.0.1版新天骄管理工具个人4.0.0.1版新天骄管理工具个人4.0.0.1版