发个感慨:说到结构,以前一些开源中间件看多了,看见程序就想到结构,每次都会去把它做到可配置,可以动态重构等,方便未来扩展,总觉得程序是个神圣的东西,它应该就是这个样子的,结构化,一体化,能够通过一次配置,一次调用,就可以得出所要求的结果,做一个彻底的黑格。
就好比一个简单的socket通讯程序,可能只需要2个类就解决的问题,结果弄出了快10来个类来,自己是弄明白了,可别人却被搞糊涂,而且很多功能都是完全不被要求的。
经历了那么久,花费了代价后,算是明白了,结构是当之所用,用到恰当时,才是合理的。程序是给用户用的,代码也不是个人耍花俏的地方..
任何bs体系,都可以按照不同的层次划分来说的,这应该也是现在很多系统所使用的体系划分方法.
1:按照逻辑上的层次划分
- a:单一的页面展现层,它通过直接在jsp页面上面获取数据库的数据,然后直接循环展现出来,这种方法应该是最早jsp/servlet技术出来的时候常用的方法.
- b:页面展现层+数据层,页面展现与数据开发分离了,此时还没有框架的加入,页面上一般直接通过request.getRequestDispatcher("xxx").farword(req,res);数据层作为一个整体结构,页面通过使用此结构来获取数据,这样的优点是数据开始与表现分离,可以非常方便的在数据层上做其他扩展,比如说cache premission等 ,这样的结构的程序现在还有很多,一般是开源程序.代表作:jspwiki等
- c:展现+动作+数据访问对象+模型,现在开始大量使用框架了,展现通过使用taglib技术+可配置的转发,开始完全变成了显示部分,数据层也开始类职责分类,经历了从的逻辑3层:action+dao+model到action+manager+dao+model的4层,面向对象的单一职责 编程风格发挥到精彩之及.当然 , 这也应该归功与各种组合框架 s1sh s2sh s1si s2si等. 我觉的作的比较好的作品类似有jeecms,重要是它的freemarker部分,对strutsResult的使用,真的相当精彩.
- d:我把java ee另外划分出来的意思是:它的体系更为完整.它不光可以在逻辑上划分,还可以在物理上划分... jsf+ejb jsf +ws...
2:按照物理上的层次划分
- a:ssh类的框架都是在单一机器上运行的(数据库暂不讨论)
- b:ejb ws系列可以进行脱离表现层所在机器而存在
我将会按照上面的层次依次发帖跟大家讨论,有错误之处麻烦指出来,将在最后说的是云, 云计算.以及个人对bs体系开发的一些展望
tks
以下是一些体系总览图: (不会画图,先弄张,不能完全表达出意思,用kivio弄的,linux下有好工具的介绍下)