开发针对基层税源管理软件开发特点的J2EE框架实践

内容提要:本文首先分析了基层税源管理软件开发的特点,然后分析了为什么要用J2EE来开发这类软件以及应用J2EE来开发这类软件的不足,进而提出了如何扬长避短,使J2EE更加适合基层税源管理软件开发的问题。经过对“J2EE”和“框架”的概念及其内涵的分析,笔者认为针对该类软件开发的特点开发J2EE框架是最有效解决这个问题的办法。之后就如何设计这个框架进行了较大篇幅的论述,首先提出了该框架的设计目的、原则和技术特并画出了整体架构图,然后描述了整个框架的功能并给出了应用该框架开发一个业务功能的详细步骤,最后分层说明了框架是如何设计出来的。在文章最后,笔者以自己的实践说明开发有针对性的J2EE框架在基层税源管理软件开发中是比较好的选择。
关键词:基层税源管理 软件开发 J2EE框架
一、前言
随着国家金税三期和各省地税大集中的建设,税务工作的分工更加合理,税收政策的执行更加统一、便捷。在这种条件下基层税务机关的主要工作,就是税款的征收和多层面多角度的税源管理。依托先进的信息化技术对征管数据进行分析、比对、监控,并对异常数据进行预警和处理是当前基层税源管理的一项重要工作,因此各基层税务单位对税源管理软件的开发也格外重视。J2EE以其跨平台、分布式、易开发维护等优点而在当前企业级应用开发中被广泛采用,使用J2EE进行税源管理类软件开发也是当前最普遍的选择。因此对于基层税务单位的信息化管理部门来说,研究J2EE在税源管理领域的应用就是一项必不可少的工作。
二、基层税源管理软件开发的特点
基层税源管理类软件的功能一般为:分析、比对、监控、预警等,但无论怎样,它的核心就是对基础征管数据根据一定的规则进行加工分析,并对取得的结果进行特定处理。它的开发具有以下特点:
(一)管理方面
1、开发团队规模较小,这是由于受到资金、人力、项目规模的限制。如果项目外包,一般都是中小型软件公司承建;如果税务单位自行开发,多为几个人,一般不会超过10人。
2、开发团队分工不会太细,甚至没有专门的需求组织。
3、开发周期较短,由于需求简单,所以开发周期相对较短,一般不会超过一个月。
ajax实例 文件浏览(二)技术方面
1、硬件设备多为中低档,服务器多为PC服务器。
2、核心功能多为数据库查询操作,而且多数是多表联合的综合性复杂查询,经常使用数据库的存储过程和函数。
3、系统多变,原有的系统会随着基础业务系统——征管系统的改变而改变,每个工作时期都会因为工作重点的不同和征管模式的改变而有新的应用需求提出。
三、J2EE是基层税源管理软件开发的首选
企业级应用开发有两种方式:一种是C/S(Client/Server),另一种是B/S (Browser/Server)。B/S以其升级维护更加容易、客户端零维护和零限制(不再限定操作系统)、适用大规模用户访问等优点而基本取代了只适于局域网的C/S.当前最流行的实现B/S结构的技术是。net和J2EE,二者相比,后者具有以下优势:跨平台,移植性好;开源,方便深入学习把握;可选择免费操作系统、免费中间件服务器、免费设计工具,节省投资。所以J2EE是开发基层税源管理软件的首选。
四、J2EE的不足
在企业级的应用系统开发领域,虽然J2EE已经广泛普及,但它的不足也与它的优点一样突出。表现在:系统与标准庞大,一般中小型应用实现起来比较臃肿;技术规范和实现复杂,为解决技术复杂性而诞生的各种框架又带来更多的复杂;维护难度大,由于开发时所用技术的复杂,致使很难到掌握全部技术的人才来进行系统维护,团队维护加重了维护成本和难度;客户端UI开发异常困难,只能靠代码来实现,不能真正做到所见即所得(WYSIWYG)等等。
五、如何扬长避短,使J2EE更加适合基层税源管理软件开发?
要想使J2EE更加适应基层税源管理软件的开发,就必须了解与J2EE相关的概念及其内涵。
(一)什么是J2EE
J2EE是Sun公司提出的多层、分布式、基于组件的企业应用模型,包括:表示层和组件、商业层和组件、企业信息系统层(EIS)。它由一整套服务(Services)、应用程序接口(APIs)、和协议组成。它是一种利用Java 2平台来简化企业解决方案的开发、部署和管理相关的复杂问题的体系结构,并已经成为使用Java开发企业级应用的一种事实上的工业标准。它是一组技术规范和指南,不是一种编程语言,它的实现需要依靠多种语言和技术:Java、JSP、Servlet、JavaBean、HTML、script、CSS、DOM、Applet、XML、JDBC、JNDI、EJB、CORBA、RMI、JMS、数据库技术等。J2EE的核心是Java 2平台,它提供中间层开发框架,用来满足无需太多费用而又需要高可用性、高可靠性以及可扩展性的应用需求。
(二)什么是框架
关于框架,在设计模式中,Gamma等人为框架给出了一个定义:"框架就是一组协同工作的类,它们为特定类型的软件构筑了一个可重用的设计".首先,它不是一个可以即时看见和运行的应用系统,它是为构建于J2EE之上的应用系统定义了一个固定而有效的设计开发结构基础;第二,它不是类库,不是为简化开发过程而制作的模块集合,使用开发框架并不能实现搭集木式开发。它包含了一组抽象概念,这些抽象概念来源于问题领域,框架使得这些抽象概念相互协作,并提供了一种扩展的形式,以实现重用。所以越是有针对性的框架,对于针对领域就越实用。
(三)针对基层税源管理软件特点设计J2EE框架是最有效解决办法
造成J2EE不足的主要原因在于:如果不采用框架开发,要想实现一个解决了安全、运行效率、UI界面美观、便于维护升级等问题的企业级复杂应用,相当于仅靠螺丝刀、板手、锯和锤等手工工具制造一辆汽车,是非常困难的;如果采用第三方框架开发,由于没有解决J2EE全部各层问题的综合性轻量级框架,所以必须在界面展示、业务流程、数据操作等多方面,各采用不同的技术方案、不同的框架来处理和实现,由于这些产品本身都是相对独立的,而要把这些不同范畴的技术整合起来,使之成为一个统一的整体,光在技术层次上,就构成了一个非常复杂的系统,对于中小型应用的税源管理软件的开发根本不适合。所以针对基层税源管理软件开发特点,自主设计J2EE框架是一种最有效的方式。这样不仅解决了J2EE技术复杂、实现臃肿的缺点,而且还能提高运行效率、降低开发成本。
六、框架方案概述
(一)设计目的
设计框架的最终目标是为税源管理软件开发人员提供一个基于扩展的填空式的开发基础架构。让开发人员只需关注编写具体业务逻辑程序,而将业务无关的需求(非功能需求,non-functional requirement)交给框架来完成。
(二)设计原则
1、符合OOP(面向对象编程)设计的基本原则
与牛顿三大定律是经典力学的基石一样,开闭原则(OCP)、里氏代换原则(DIP)、依赖倒转原则(LSP)、接口隔离原则(ISP)、合成/聚合复用原则(CARP)、迪米特原则(LOD),这六条原则也是OOP可复用设计的基石。其中第一条OCP是总的原则,其它几条是实现OCP的手段和工具,所谓OCP原则,就是软件实体应该对扩展开放,对修改关闭。符合这些原则就可以提高软件的可维护性和可复用性。
2、成熟设计模式原则
模式现已运用到软件工程的各个方面,但迄今得到最深刻研究和应用的仍是设计模式。设计模式是一种实践的总结,是OOP设计思想最直接的表现。通俗的讲就是某类问题在某个阶段的最优解法或是说经典解法,应用设计模式可以有效的借鉴别人的先进设计思路,更加容易的解决问题,也使得设计出的程序更加完善,更易理解。
3、新技术原则
原则与模式是规律性的东西,一般不会发生大的改变,而技术则不同,新技术日新月异层出不穷。一般来说新技术都是为解决旧技术的不足而诞生的,汲取了旧技术的经验,所以新技术是最好的解决方案,因此要尽可能采用新技术。
4、简单原则
设计针对基层税源管理软件开发的J2EE框架的目的就是为了解决J2EE技术复杂的缺点,因此简单原则是必不可少的。框架开发过程中,不再借用任何第三方框架技术,尽可能避免使用第三方组件,这样就可以使最后生成的框架文件不会太大,同时也会大大提高程序运行效率。
5、针对性原则
针对基层税源管理类软件开发的两个方面的特点,在所有层面都要体现专门化、针对化思想,不求大求全。
(三)技术特
1、全面支持缓存机制
缓存是J2EE提高性能的重要方法,本框架支持两种缓存:第一种是,对于同一个类仅缓存一个实例,所有线程取得的是同一个对象,它主要用于缓存那些没有对象变量的类实例;另一种是,对于同一个类缓存多个实例,缓存管理器中管理的不是对象实例,而是一个对象池,池中才保存着该类的多个实例。后一种缓存笔者认为更应该叫池化,它主要缓存那些有对象变量的类实例,对于这种类实例,不同线程在访问时会改变类变量的值,多个线程之间会造成数据不同步而导致错误。框架自动实现缓存的对象有:数据库连接、商业逻辑服务对象、Http request工具类、数据访问对象(Dao),推荐对所有的代码类数据库查询结果实行第一种缓存,当有代码更新时再通过后切面编程方法更新缓存。
2、支持切面编程
面向切面编程(AOP)主要是对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。主要用于验证、缓存、记录跟踪、同步、事务、资源池等方面。本框架支持两个切面,一个是请求到达业务逻辑尚未实现的时刻,另一个业务逻辑已经完成,将要返回客户端前的时刻。
3、采用Ajax+JSON技术
Ajax的优点表现在不更新整个页面的前提下维护数据,这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变过的信息,以及平衡了前、后端的负载,同时不需要任何浏览器插件。正是这些优点使得Ajax在很短的时间内迅速在几乎所有WEB应用开发技术中得到应用。但是由于做为传递数据的XML在前后两端的解析太繁琐以及传递数据量的加大,逐渐被另一种更轻、更友好的JSON代替。本框架在Ajax数据传递方面默认全部采用JSON格式。
(四)框架整体架构(见图1)

七、框架功能概述
本框架是一个实现了全部J2EE三层(表示层、业务层和企业信息系统层)功能的轻量级框架,程序开发人员使用该框架开发时,只需要设计JSP页面、业务逻辑服务(Servicer)模块及数据库访问模块(Dao)就可以了。JSP页面中推荐使用Ajax访问后台,若采用直接访问后台的方式,开发者将只能自行调用底层技术(验证、日志、缓存、切面等),得不到系统在这些方面的自动支持;Servicer模块设计时,只需要从BaseServicer抽象类继承即可;Dao模块的设计,只需要实例化TableOperator或QueryOperator或ProcedureOperator之一并访问数据库进行操作就可以了。要想实现一个业务功能,只需完成以下三个步骤:
首先,在JSP页面发送一个Ajax请求,请求路径rul就是下一步中实现类的一个方法名称(含包名及类名),请求的数据可以是一个Javascript对象,或是一段XML字符,或是标准“form-data”数据,或是URL地址串,无论什么格式在服务器端的Servicer模块均可以用对象的属性名称取出(支持数组)。
然后,再从BaseServicer抽象类继承实现一个类,在方法中实现业务逻辑,方法中如果使用数据库,可以从Dao缓存控制器中取得一个Dao实例(该Dao类就是下一步设计的类),请求的参数为类名(含包名),返回Javascript对象(与服务器端结果对象具有完全相同的属性)给Ajax,再由Ajax对象中的listener属性指定的函数进行处理。
最后,设计一个上一步使用的Dao类。在该Dao类中使用三个Operator操作类与数据库交互,该Operator类中,使用符合JAVA思维习惯的对象方式操作数据库。
八、框架实现说明
(一)客户层
客户层是最终用户的使用UI和设备,本框架主要支持的是IE浏览器。它实现了HTTP请求和返回结果的展示功能,即MVC模式中视图(View)的功能。这些功能全靠用Javascript编写的一组组件来完成,请求功能是Ajax实现,展示功能主要有数据窗口(DataWindow)、树形显示结构(Tree)、文件浏览器(FileExplorer)、多功能选择框(MuiltSelect)、上传组件(Upload)等实现。这些组件的类图如下(图2到图7):


(二)WEB层
Web层在J2EE应用中功能为:接收来自客户端的HTTP请求,将请求分发给业务层进行处理,并将处理结果返回给客户端显示。本框架在WEB层主要实现了MVC模式中控制器(Control)的功能,控制器本身是一个标准的多线程Servlet.主要由以下几个组件构成:
1、全局控制器(Controller)
接受客户端的Http request请求,根据请求的servicer对象名称调用相关对象实例,并将处理结果返回给客户端。
2、请求工具类(RequestUtil)
将一个标准HttpServletRequest请求信息格式化成可以方便取得相关参数的对象,它的处理过程对开发人员透明。根据请求数据的类型控制器自动实例化为GenericRequestUtil、XMLRequestUtil、UploadRequestUtil、JSONRequestUtil中的一种。
3、请求工具类缓存(RequestUtilPool)
请求工具类缓存器,首次请求时,从请求工厂类取得一个新对象实例,用完后放入缓存池中,以后请求时从缓存池中取得。
Http Reqeust请求基本流程及组件间的调用关系图如下(图8):

WEB层各组件关系类图如下(图9-10):

(三)业务逻辑层
业务层是J2EE应用的核心,它负责应用业务逻辑处理。在本框架中考虑到税源管理软件的实际特点,仅提供了业务逻辑处理的顶层虚类及其缓存池,以及几个实用常用服务实现类,并没有提供象重量级业务层组件EJB那样的消息处理、远程调用、事务管理等增值服务。主要有以下组件:
1、业务服务虚类(BaseServicer)
处理业务逻辑单元,实现类必须提供验证方式,防止被非法访问。
2、文件浏览器业务器(BaseFileServicer)
本服务类提供客户端查看服务器端的某个文件夹功能,可以对文件夹进行浏览、重命名、下载、删除等操作。出于安全考虑,该文件夹必须由服务器端进行指定,由该类的继承类实现。
3、业务服务类缓存(ServicerPool)
业务服务类缓存器,首次请求时,从服务工厂类取得一个新对象实例,用完后放入缓存池中,以后请求时从缓存池中取得。
业务逻辑层组件关系类图如下(图11):

(四)持久层
J2EE应用中,持久层负责企业资源持久化处理。这些企业数据源包括:文件系统数据、邮件服务器、企业遗留应用及数据库管理系统(DBMS)等等。考虑到基层税源管理软件的特点,本框架在持久层仅关注DBMS数据存取的解决方案,实现了一个基于JDBC的数据存取框架。其框架组件结构示意图如下(图12):

由上图可以看出主要有三大组件TableOperation表操作器、QueryOperator查询操作器、ProcedureOprator存储过程操作器与数据库进行交互,它们实际上都是封装了底层访问数据库的DBAccess类的基本操作。如果在Dao中觉得这些操作器不能满足需要,还可以直接用JDBC的方法访问数据库。Pagination是对结果进行分页处理的参数bean,ResultSetFilter是对结果进行过滤(即查)的参数bean.各组件关系类图如下(图13):

九、结束语
虽然该框架比较简陋,也还有很多需要改进的地方,但经过笔者二年多工作实践证明,应用该框架开发基层税源管理软件,无论是在开发维护效率方面还是运行效率方面都大大优于很多重量级或轻重最级的商业框架,正是因为它的简单,所以更加实用。所以开发有针对性的J2EE框架在基层税源管理软件开发中是比较好的选择。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。