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監控堆棧分配及回收基本穩定。