n-tier(层)架构
在 软件公司工作的一个常态就是需求经常变动。这是迭代开发的一个主要特征。为了节约成本和生存问题,软件公司一般都采取迭代开发的模式。三个星期为一个周 期,推出一个版本,给客户看。客户提出一堆意见,产品经理根据客户意见和市场竞品分析和自己公司总经理意见及各路考量,再出一版产品需求,之后逼着技术部 门以火箭一般的速度,完成他的需求。作为技术负责人的我,深知他的需求今天是朝东,明天可能就是朝南,后天也许还朝西,没办法 ,都是客户需要的,领导需要的和市场需要的,还得去干。不但得干,而且还得以最快的速度干。这里看出来没有,就是两点。 一,不断要去改。二来还得快。结论就是必须要用n-tier(层)模式开发。这样我就可以把分工分得很细。需要改动时,可以一步到位,找到需要改动的地 方,而且还可以非常快。刚才其实提了一点n-tier架构,把model细化分成了几层。现在继续把其中的服务层(service)细化,变成 service层调用BO(Business Object)层,BO层调用DO(domain object)层。这里首先说为什么叫层?比如说:DO层里包含了很多的DO,而不是一个。什么是DO?DO是domain object,又叫领域对象。就是数据库中每个有现实意义的表都对应一个DO。比如多对多关系表在现实就没有意义 (TeacherStudentRelation),DO有自己的业务方法。BO (Business Object)就是现实中个别一个复杂对象或一堆有密切关系的DO对象所代表的抽象无形的有现实意义的概念对象。比如“手”和“ 脚”数据库中有实体表,所以“手”和“脚”都是DO。而“四肢 ”只是概念,没有表对应,是BO。BO也有业务方法。service当中可能有些发Email的方法,或安全编码的方法,这些不涉及数据库,和BO不同 (BO涉及数据库)。当涉及到“手脚并用”时,就调用“四肢”这个BO当中的方法。这个方法当中涉及到“脚”的方法时,就调用“脚”这个DO的方法。 “脚”这个DO里的业务方法涉及到数据库时,就调用Dao中的方法。
最 后就剩下一点简单的知识。1)delegate层即代理层,在Service层前面,很有可能和Controller层在不同的机器上和Tomcat上,等待着不同的Conrtroller的访问。小项目没有,比如你的项目可能有asp或c#访问,这样你的Model就真正成了跨平台的Model了。delegate再调用service层。2)Controller层:控制层,也叫domain主控制层。 负责jsp表单提交的处理,调用Service层或delegate层,将 Service层的数据对象返回到视图层。3)web层主要是客户端网页,就是所谓的View。
n-tier架构到底多少层?要根据实际情况而定,所以叫n层架构,而不是8层架构或9层架构。其实我介绍的,一般的情况基本够使了。如果你的项目特殊,比如涉及图像,安全,加密等,也许更多。
更多请见:http://www.mark-to-win.com/tutorial/jsp_4_nTierTheory.html