电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

基于SSH开发架构的重新分层


发布日期:2019/11/3
 
现代的企业开发中越来越多地引入了多层架构设计模式Struts+Spring+Hibernate (一下简称为SSH)就是其中之一SSH架构是当前非常火的架构很多金融电信项目大型门户网站均选择该架构作为业务支撑架构开发流程也已经非常成熟但是该结构开发起来依旧存在一些问题分析这些问题得先从SSH架构的组成说起

SSH为Struts+Spring+Hibernate的组成方式Struts实现MVCSpring负责架构的结合Hibernate进行数据的持久化通常其分层开发的结构图(以一个业务新增为例)如下

这样的结构满足了一般的业务需要但是对于当前日益复杂化的WEB的开发却存在不少问题归纳起来主要有以下几点的不足

A)DAO和服务层容易出现职责不明由于按照MVC逻辑业务代码应该写在Struts Action里但是其事务的提供却是配置在Service层为了一组在逻辑上完整的数据操作业务逻辑需要涉及两个层(Serveice Action)来进行编写遇到判断的情况下为了保证完整的事务操作则需要将业务代码移到Service层完成而通常习惯了在Struts Action里调用多次Service而产生多个事务而在出现Exception时导致出错时操作之前调用的Service事务的业务数据没有回滚

B)当需要返回的数据供AJAX使用操作JSON或XML的的大量使用时开发起来会很费力一段同样的业务代码为了使用AJAX和XML可能需要重新编写一次或者在同一个ACTION里通过标志来判断对分层结构造成了比较糟糕的破坏如果设计得不好为了使用JSON和XML还得额外增加大量的配置严重降低了开发效率

因此为了克服这些缺点本人对于SSH架构进行了实现了重新的分层共享了业务代码简化了开发增强了与AJAX技术MXL技术的结合提供了一种更高效的开发模式

其开发的结构图如下

看到这个架构图有人可能会问Struts Action类的编写去哪了呢?答案正是这个架构的优点由于业务代码统一实现IbusinessService接口使得只需要相对固定的几个 Struts Action类调用Service层的方法便可以完成工作包括JSON格式输出XML输出及WebService输出均调用Service层方法来完成功能这样便实现了业务代码的分离以及与前端框架的极大解耦

上一篇:Jpetstore阅读心得之分层结构

下一篇:如何将字串 String 转换成整数