原创作者: bardo   阅读:2480次   评论:0条   更新时间:2011-05-26    

        大型企业应用一般首先要将架构分为三层:表现层,领域层,数据源层。其中:

        表现层的责职是仅完成数据和输入与输出,以及所有的界面交互逻辑。

        领域层的责职则是完成所有的业务逻辑。

        数据源层则是完成数据库的存取操作。

        由此可以看出,表现层相当于领域层的一个用户。而领域层也相当于是数据源到的一个用户。在PHP开发框架中,实际并不存在领域层的代码。(所以,一些框架声称,它支持领域驱动设计,实际是懵人的!)当然,好的PHP框架,有可能会强制使用三层结构,从而实现领域驱动架构。但这样做,并不一定能够保证产生完美的领域驱动的应用架构。这就是说,任一项目仍需要项目经理,技术总鉴,或架构师对其进行规划与规范。

        很多人不解,为什么要分为三层。其实,这叫做,没吃过苦头,不知道疼。具体说来,有很多种情况,值得你这样做:

        其一:界面逻辑与界面是密不可分的,而当界面需求变化时,领域模型不一定需要变更。同样,领域模型中的逻辑有所变化时,界面逻辑不一定会同时变更。分开后,可以独立应对需求的变化。

        第二:这一点比上一点更加重要,那就是,不同的界面逻辑,可能需要相同的领域模型。这样,即保证了领域模型的共用性,不会出现重复的代码。因此,当你发现某一个地方有错时只需要修改一处。反过来,不同的领域模型,可能需要使用相同的界面逻辑。分开后,就不会使代码产生迪卡尔积的数量。而形成自由组合。

        第三:数据库移植。比如,有些大公司早期使用ORACLE。但后来,由于资金与数据的压力,不得不使用非O化(丢掉ORACLE)时,这时候,你要改的只有领域层,其它地方是不用动的。原因很简单,因为,你的数据源库层是框架实现的,肯定是多种数据库均支持的。但是领域层,则是与数据操作,特别是SQL相关的,则均是要改动的部分。

        第四:经过这样分层以后,才有可能对领域层采取更深的设计。比如,现在流行开放API,这就要求将领域层设计为:服务与事务脚本结构,或者控制器脚本与实体结构。当然,这两种结构的选择,则与所开放的API的实际需求有关。

        由此可见,一个好的架构通常有利于开发中应对需求的不断变化,有利于应用的升级与维护。也只有这样,才能实现快速高效地开发。      

 

 

 

 

 

 

评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

文章信息

  • bardo在2011-03-26创建
  • bardo在2011-05-26更新
Global site tag (gtag.js) - Google Analytics