技术开发 频道

以不变架构应多变业务

  持久层仅用来完成业务数据持久化和查询读取,这里采用关系型数据库来完成数据的持久化保存,因此持久层主要完成数据库的CRUD(增、删、改、查),同时包含对存储异常的处理等任务。

  SinoSoftFrame通过模拟Spring的实现机制建立了自己的容器实现机制,并通过定义接口、扩展基类等方法将对第三方依赖的内容封装到SinoSoftFrame中,从而实现与第三方框架的解耦。下面重点说明一下在架构设计的三层上具体采用的实现方式或开源框架。

  因Web层确定采用MVC的设计模式,而软件开发领域有很多优秀的MVC开源框架,如Struts、WebWork2、Spring MVC等等,但也各有其优缺点。SinoSoftFrame的Web层实现选择了Struts,原因主要是基于它历经6年的不断成熟、它的稳定开发团队、它庞大的社区、用户和程序员基础。页面展现仍采用了传统的JSP+Taglib的实现方式。毕竟开发成本也是架构设计和选型要考虑的重要因素之一。

  业务层框架的设计要求是增加模块或代码的复用性,降低业务类之间的耦合,减少程序修改带来的“涟漪”效应。在SinoSoftFrame的业务层我们选择了Spring。Spring是一种无侵入式的轻量级框架,可以用简单的POJO去完成接口类的定义及实现的调用,绝大多数业务对象都不需要依赖于Spring;可以很容易对业务层进行单元测试; 它促进程序员养成好的编程习惯(把对接口编程而不是对类编程的代价几乎减少到零)。当然,Spring框架带给我们的优势不只以上这些,它就像系统的粘合剂,对系统各个层面各个环节的功能、实现框架都提供了无缝的支持。不过,最主要也是最重要的还是Spring的Ioc模式实现(Ioc通俗来说,就是在编制程序时,只要写被调用者的接口代码,具体子类实例可通过配置实现)。

  SinoSoftFrame选择了Hibernate作为持久层实现。Hibernate是一种Java语言下的对象关系映射解决方案。

  它为面向对象的领域模型到传统的关系型数据库的映射,提供了一个使用方便的框架。它的设计目标是将软件开发人员从大量相同的数据持久层相关编程工作中解放出来。Hibernate不仅负责从Java类到数据库表的映射(还包括从Java数据类型到SQL数据类型的映射),还提供了面向对象的数据查询检索机制,从而极大地缩短了手工处理SQL和JDBC的时间,而且它不会强迫修改对象的行为方式,不需要实现任何框架要求的接口。惟一需要做的就是创建一份XML“映射文档”,告诉框架你希望能够保存在数据库中的类,以及它们如何关联到该数据库中的表和列,然后就可以要求它以对象的形式获取数据,或者把对象保存为数据。同时,它可以支持多达十六种数据库,包含企业级常用的Oracle、DB2、Informix、SQLServer、Sybase等。SinoSoftFrame系统架构如图1所示。

     

  同时,为了提供非常好的的用户体验,SinoSoftFrame框架中还引入了Ajax的DWR实现,加上Ajax的调用层次后,系统调用架构如图2所示。

    

0
相关文章