XACS系统基于Java语言,采用主流的开源技术框架,在模块设计上遵循低藕合,高内聚的原则,达到普通应用下开发简单快速,易上手;复杂环境大规模应用情况下易整合,易部署;良好的模块化设计可以满足方便的和其它业务系统或工单管系统集成,拓展北向接口功能。
XACS采用的技术及框架有:
1. 数据库MySQL
在XACS中集成了MySQL数据库,可以控制MySQL数据随系统的启停而启动停止,不需要另外安装MySQL数据库系统。
在实际应用中,也可以根据需要选用其它数据库系统如PostgreSQL, Oracle等,因为在系统中采用了Hibernate, 可以很方便的通过修改配置文件和导入必要的数据库驱动,就可以实现数据库系统的切换。
2. Spring 框架
利用Spring提供的IoC容器,可以将对象之间的依赖关系交由Spring进行控制,避免硬编码所造成的过度程序耦合。有了Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。
Spring可以降低各种框架的使用难度,Spring提供了对各种优秀框架(如Struts,Hibernate、Hessian、Quartz)等的直接支持。
在XACS中,利用Spring的IoC特性,封装了Hibernate框架、消息处理接口和业务服务接口,由Spring来管理系统中各应用实例。并且通过自动注入机制,减少了很多代码量。
3. 数据库ORM框架Hibernate
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
通过Hibernate支持多数据库的特性,在XACS中可以通过修改配置文件,来实现系统数据库的替换。
4. 消息总线JMS技术 ActiveMQ
ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ可以很容易内嵌到使用Spring的系统里面去。
在XACS中使用消息总线的机制,有利于在大规模应用情况下,将系统分别部署在多个服务器上,通过消息总线进行分布式系统应用下数据的交互。
5. Web框架Wicket
Apache Wicket,通常被称为wicket,她是一个轻量级的基于组件、事件驱动的Java
web应用程序框架。它使得开发web应用程序变得容易而轻松。 Wicket利用一个POJO
data beans组件使得它可以与任何持久层技术相结合。
Wicket主要特点:
a) Wicket符合MVC的设计原则把视图层和控制层进行了分离;
b) 模型设计基本面向对象;
c) 自动管理对象的状诚;
d) 极高的开发效率;
e) 学习曲线很低
6. Web容器 Jetty
XACS中集成了开源Java的web容器,并将Jetty 服务器用为一个组件,很方便的实现服务器的管理,并且达到在整合情况下快速启动停止。
由于XACS在Web应用上符合标准的Web架构,也可以方便的移植到Tomcat,JBoss等Java中运行。
XACS 和 OpenACS比较
XACS在TR069协议实现上参考了OpenACS的实现,在研究了OpenACS 系统源码后对OpenACS改进,并且从简单易用的角度重新设计了使用界面,下面从多个角度做一个对比。
XACS |
OpenACS |
比较 |
|
Web容量 |
Jetty |
JBoss |
JBoss属于重量级的J2EE容器, 也是一个管理EJB的容器和服务器,由于OpenACS中使有了EJB,所以也必须选用相应的EJB容器,但是这样就使得其缺少了可移植性。 Jetty容器属于轻量级的Web容器,使用方便,启动快速。并且XACS 也可以移植到其它Web容器下。 |
数据持久化 |
Hibernate |
EJB |
在OpenACS中使用了实体Bean来实现O/R映射。 而在XACS中则使用了Hiberante。Hibernate 框架的目的是把开发人员从繁琐的数据持久化编程中解脱出来,提高开发效率。 |
Web框架 |
Wicket |
Richfaces、 Facelets |
Richfaces、Facelets是用于JSF的用户界面组件套件,在国内应用较少, 并且属于较重量级的开发技术,学习和开发难度也较高,相对效率也较差一些。 Wicket则是开发快速,方便上手,通过MVC模板分离的特性,很容易先实现界面Demo,也更易于系统开发调试。 |
数据库 |
MySQL |
MySQL |
OpenACS的MySQL数据库是分离的数据库,如果移植到其它数据库需要重新修改数据库设计,并且需要进行另外的调试。 而XACS则是整合的MySQL数据库,当然也可以使用外部数据库,并且也可以很方便的实现替换数据库。 |
多系统支持 |
Windows/Linux/等其它JVM支持的系统 |
Linux |
OpenACS只可以运行在Linux下,至少从目前来说只有Linux的版本,移到其它系统下需要另外开发。 而XACS的代码脱离了系统的限制,除数据库需要根据不同系统调整外,系统可以在支持在多个系统平台上运行。 |
消息总线 |
ActiveMQ |
JBoss MQ |
OpenACS使用了JBoss自带的消息总线,在性能上弱于ActiveMQ ,并且在多语言支持,扩展性,易用性上都不如ActiveMQ。 |
另外,从开发的角度上来说,XACS通过一个Eclipse工程,就可以整个系统的开发,而OpenACS的开发则将EJB和web开发区分开来,并且需要修改很多的JBOSS配置文件才可以应用到JBOSS容器中。XACS支持Ant脚本直接生成系统压缩包,进一步可以改成Daily Build脚本。虽然OpenACS支持用户自己编写js脚本作为测试cpe的测试用例,但是这种方式在实际情况下很少有测试人员能够应用,大多数测试人员还是习惯于提供操作界面的测试方式。
XACS性能指标
测试服务器硬件: CPU: I5-3230; 内存:8G
在默认上报周期为1800秒(30分钟)情况下,模拟上报设备10000数量情况下,处理率约5.6个/秒,通过jvisualvm监控堆栈分配及回收基本稳定。