软件体系结构之框架的选择及说明
软件架构比写代码更重要。软件系统的架构设计,需要设计系统的元件如何划分,元件之间如何发生相互作用,以及系统中逻辑上、物理上和系统上的规划。开始之初的架构设计也决定了这个软件产品是否适用。所以架构的选择和设计是软件开发的重中之重。
首先我选择的框架是ssh框架,也就是Struts+Spring+Hiberbate。典型的J2 EE三层结构,分为表现层、中间层(业务逻辑层)和数据服务层。三层体系结构将业务规则、数据访问及合法性校验等工作放在中间层处理。客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与数据库交互。其中Struts2负责MVC的分离,是作为系统的整体基础架构,主要用servlet和jsp技术实现;Spring提供管理业务;Hibernate框架是开源的对象关系映射框架,对JDBC进行封装。三大框架各有其作用和特点,但是它们的目的都在于让使用者只关心核心业务的开发,框架帮你屏蔽原有技术跟业务开发无关的各类技术问题。
ssh框架中,Struts主要由jsp生成页面完成视图,Struts提供丰富的jsp标签库。Struts大致处理流程如下:(1)浏览器发送请求,例如请求/mypage.action、/reports、/myreport.pdf等;(2)核心控制器FilterDispatcher根据请求决定调用合适的Action;(3)WebWork的拦截器链自动对请求应用通用功能,例如workflow或文件长传功能等;(4)回调Action的execute方法,该方法先获取用户请求参数,然后执行某种数据操作,把数据保存到数据库或从数据库中提取数据;(5)Action的execute方法处理结果输出到浏览器中。Struts的优点是不易老,没有与Servlet API和Struts API的紧密耦合;提供了拦截器功能,利用拦截器可以进行AOP编程,实现如权限拦截等功能;提供了类型转换器,可以吧特殊的请求参数转换成需要的类型;提供支持多种变现层技术如jsp等;Struts2的输入校验可以对指定方法进行校验;提供了全局范围,包范围和Action范围的国际化资源文件管理实现。
Hibernate使用的技术是J2 EE架构中的JDBC、JTA、JNDI。采用Hibernate作为持久层技术的最大的好处在于:可以完全以面向对象的方式进行系统分析、系统设计。它是数据库连接的中间件,而且对程序的依赖性很小,使用了java反射机制,对jdbc进行了轻量级的封装,且可以在程序中取代EJB的cmp,完成持久化,支持多种数据库的一对多的复杂关系。
Spring是基于Ioc(反向控制)和AOP的构架多层J2 EE系统的框架,允许根据需要选择使用它的某一模块,对不同的数据访问技术提供了统一的接口。Spring的作用贯穿了整个中间层,将Web层、Service层、DAO层及PO无缝整合,其数据服务层用来存放数据。就是让对象与对象(模块与模块)之间的关系没有通过代码来关联,都是通过配置类说明管理的(Spring根据这些配置 内部通过反射去动态的组装对象) 注意Spring是一个容器,凡是在容器里的对象才会有Spring所提供的这些服务和功能。使用Spring有利于单元测试。
ssh是Struts+Spring+Hiberbate三个框架的集成,是一个稳定,内存消耗少,运行效率高,开发效率快的java开发框架。