流量分析仪系统框架结构介绍_第1页
流量分析仪系统框架结构介绍_第2页
流量分析仪系统框架结构介绍_第3页
流量分析仪系统框架结构介绍_第4页
流量分析仪系统框架结构介绍_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ccs流量分析仪系统结构说明版本修订历史记录日期版本描述作者2006-10-301.0经过近两个月的开发,流量分析仪版本 升级(升级到2.1)的工作已接近尾声, 此次升级在后台的数据采集系统没有 做任何改动,在前台功能业务展现上只 是修改了老系统明显的问题,如布局; 在功能上添加了对报表的excel和pdf 格式的输出;本次升级是在展现的实现 上根据新的框架结构做了新的实现,本 文档着重说明系统的实现梁言兵 TOC o 1-5 h z HYPERLINK l bookmark29 o Current Document 概要介绍4 HYPERLINK l bookmark35 o Current

2、 Document 当前系统实现结构5 HYPERLINK l bookmark43 o Current Document 系统实现所使用的框架或系统的介绍8 HYPERLINK l bookmark47 o Current Document AppFuse8 HYPERLINK l bookmark51 o Current Document Spring8 HYPERLINK l bookmark54 o Current Document Hibernate9 HYPERLINK l bookmark63 o Current Document SpringMVC10 HYPERLINK l

3、bookmark70 o Current Document SiteMesh10 HYPERLINK l bookmark74 o Current Document DisplayTag11 HYPERLINK l bookmark80 o Current Document 报表系统BIRT11 HYPERLINK l bookmark84 o Current Document Ajax 框架 PrototypeBuffalo12 HYPERLINK l bookmark90 o Current Document 附录13 HYPERLINK l bookmark94 o Current Do

4、cument 系统中web.xml中关键组件的解释13 HYPERLINK l bookmark97 o Current Document Listener13 HYPERLINK l bookmark101 o Current Document Servlet14 HYPERLINK l bookmark105 o Current Document Filter14名词解释14AOP14 HYPERLINK l bookmark114 o Current Document Ioc、DI15 HYPERLINK l bookmark118 o Current Document Jstl15 H

5、YPERLINK l bookmark122 o Current Document Ajax15 HYPERLINK l bookmark126 o Current Document Web框架的比较一一来源与网上搜索15概要介绍公司的流量分析仪为了保证网络正常运行,提供了对网络流量进行统计、对网 络安全进行控制的一套系统;在实现上是一个软硬件相结合的产品,需要将一个安 装了流量分析软件的机器部署到需要分析的网络环境中,通过简单的配置便可以完 成网络数据采集和采集后网络数据的展现与分析。由于系统是基于B/S结构来实现 的,用户无需安装其他软件,只是通过浏览器就可以使用系统提供的所有功能。流量分

6、析仪在逻辑结构上主要由后台数据采集和前台展现组成,如图一所示, 现将系统工作原理描述如下:图一后台采集模块读取管理员通过管理控制台录入的配置信息,从网络设备 上采集网络信息,然后将采集到的信息(即图一中描述的原始数据)存 入数据库中;前台在逻辑功能上分为两类:2. 1 管理控制台:是管理员对流量分析仪进行配置和管理的界面,其中配置 信息是被后台采集模块所用,从而控制采集模块的行为;而管理信息是 为了进一步满足用户的实际业务上的需求、便于使用,当前管理的信息 包括用户、部门、分组、IP分组;2. 2 监视分析器:用户通过此界面可以对采集到的数据进行查看和分析,从 而进一步监视到网络设备的运行情况

7、。当前系统实现结构此次版本的升级主要是在实现功能上对上一个版本进行了很大的调整,老版本 在实现上存在如下问题:整个系统没有Model,只有Data,系统难以理解;基本没有利用Struts实现MVC的分离,后端向前端提供数据一般是封装在 通用数据结构Vector、List中,系统难以维护。新的系统在分析和设计时,采用了模型驱动的模式,体现了 MVC的理念,层 次结构清楚,各层职责分明,并引入了报表系统BIRT来实现报表,从而做到对报 表的灵活定制。当前系统的实现结构如图二所示:系统在实现上参考了开源项目AppFuse,并根据我们新的需求和理解对目录结 构进行了优化,现将当前的主要的目录结构功能描

8、述如下:源代码配置、资源文件测试用例数据库相关脚本页面元素文档在上图目录中,src和web是两个关键的目录,现分别将这两个目录下的子目录或 者文件描述如下:源代码目录路径描述com.dhcc.core系统中的父类或者工具类:目前主要包括,用于服务器端校验Form的库,基于Birt报表系统的封装,服务器端基于单表的分页逻辑flow流量分析仪业务类的实现flow.model系统中业务对象的封装类,是配置管理部分的模型flow.dao负责完成O-R Map的事情,当前是基于过Hibernate来实现的flow.service负责完成事务的发起和数据额组装,当前是基于Spring的Aop来实现的flo

9、w.web负责完成Web Flow的事情,当前是基于SpringMVC来实现的flow.web.remoteAjax服务器端的通讯接口flow.plugin.birt.web负责完成报表部分的Web参数的接收和报表的显示flow.plugin.birt.service复杂完成报表部分的数据获取(从数据库中)2. Web目录路径描述Common一些被包含的网页,如:网页的header或footer;异常显示网页、url有误网页Decorators由于系统采用了 SiteMesh,这个目录下的网页用于装饰其他网页Images系统用到的所有图片Report系统显示报表的网页Admin配置管理的网页S

10、cripts系统所用到的javascript文件Styles系统的CSS文件WEB-INFweb.xmlWEB应用需要注册的关键组件文件action-servlet.xml系统中所有的Action或Controller,这个文件的存在是为了更好的进行配 置管理,避免冲突;另外对系统的Action也进行了分类;源于spring的 配置文件支持importadmin-servlet.xml配置管理部分的Action或Controllerreport-servlet.xml报表部分的Action或Controllersitemesh.xml开源框架SiteMesh的初始化配置文件decorators

11、.xml我们利用SiteMesh对我们页面进行组装的配置文件buffalo-web.xml开源Ajax项目Buffalo要求的配置文件applicationContext.xml主要是基于Spring的我们的ManagerapplicationContext-hibernate.xml主要是基于Spring的我们的DAOhibernate-netflow.xml对新结构表的映射hibernate-netflow-adaptor.xml对老系统表结构的适配applicationContext-validation.xml注册校验工厂和工厂所读取的配置文件validator-rules.xml校验

12、库validation.xml我们系统要求的校验系统实现所使用的框架或系统的介绍AppFuseAppFuse是一个集成了当前多种开源应用框架(如:Hibernate Struts Spring、 DBUnit、Ant、Log4J、Struts Menu、Xdoclet、SiteMesh、Velocity、JUnit、JSTL、 WebWork)的一个更高层次的适用于B/S结构开发框架,也可以说是一个Web开发 基础平台。这个平台框架在我们开发阶段,提供了一个基础的目录结构和一些基础的代码 结构、页面结构,自带了默认的一些在CSS中设定的样式,使用这些样式能很快的 改变整个系统的外观,配合ant

13、脚本,还提供了自动化测试的功能、为我们做回归 测试提供了很大的方便性。ant脚本,在我们的产品发布阶段提供了自动发布的功 能。3.2.Spring这个框架结构是整个系统最核心的框架,在我们的基于MVC的系统中从前端 的WEB层到中间的服务层再到后端的持久化层,到处都渗透着Spring的作用,可 以说Spring是整个系统的“粘合剂”,这种粘合作用来源于Springframework的两个 基本特征:AOP和IoC (或者Dependency Injection)o在我们当前的系统中利用了 mu北京东华合创数码科技股份有限公司第8页的spring功能特征,请看下表:名称功能org.springf

14、ramework.web.filter.CharacterEncodingFilter运行在Web上的用于完成对request进行编码转换的FilterAOP系统中对事务的控制都是通过声明式来完成实现的,通过把erceptor.TransactionProxyFactoryBean 定 义成其他的Manager的代理来完成的,详见配置文件 applicationContext.xmlIoc或者DI系统中与spring相关的xml配置文件大多是为了完成对“控制类”的组装 的,如:web端的Controller会把请求代理各Manager,而Manager在完 成一部分自己的逻辑后,又会把请求代理

15、给DAO3.3.HibernateHibernate是当前最流行的基于关系型数据库完成对象持久化的框架,也就是一 个OR Map的框架结构,这个框架为我们带来了如下好处:通过xml来描述、配置对象和表、属性和字段的对应关系;屏蔽了物理数据库带来的差异; 通过dialect方言,自动根据数据库的不同来优化生成sql;提供出了基于ehcache、oscache等开源缓存框架的缓存方案;提供了高层次的分页显示的API;在代码编写上,程序员不需要知道更底层的jdbc,不需要释放连接资源;Spring为了把Hibernate集成管理起来,提供了基于Hibernate的插件,如: HibernateDao

16、Support,我们的基于Hibernate实现的DAO,需要继承这个类,就 可以通过其中的方法getHibernateTemplate()来完成很多的对于数据库的基本的操 作,而无需知道Hibernate本身所提供的更多的Class。3.4.SpringMVC在当前的开源世界中,基于web方面的框架应该是最早、最成熟的,当前比较 著名的 web 框架有:Struts WebWork、Tapestry、JSF、SpringMVC,这些框架都 很好的解决了 web flow (页面流转)的问题,并提供了较好的层次分隔能力。在此系统中我们利用了 SpringMVC的如下功能:显示与页面流转的分离;

17、在页面的显示上,用了 jstl库,避免了直接嵌入java代码;表单数据的绑定;表单数据的验证,用的是校验库进行后端的数据验证,并根据我们实际需求 逻辑丰富了验证库;SiteMeshOpensymphony 是纪 SourceForge、ObjectWeb、Apache 后又一较大的开源组 织,比较有名的项目包括 WebWork、osworkflow; sitemesh 是 opensymphony 团 队开发的j2ee应用框架之一,旨在提高页面的可维护性和复用性。sitemesh 应用 Decorator 模式,用 filter 截取 request 和 response,把页面组件 head

18、,content,banner结合为一个完整的视图。通常我们都是用include标签在每 个jsp页面中来不断的包含各种header, stylesheet, scripts and footer,现在,在 sitemesh的帮助下,这样的页面不需要主动的来include (包含、寻找)别的页 面或资源,而是可以被动的被一个其他的页面“装饰”起来。如下图所示:DisplayTagDisplayTag是一个用于View层显示的TagLib库,在我们的系统中使用来显示 配置与管理部分的列表的,其基本特征为:分页显示、自定义的CSS可以作用到 列的Title及每一行数据、排序、连接到新的Form表单

19、以对数据进行修改操作、 支持本地化的操作、多种格式的导出;但是DisplayTag也存在自己的不足:分页显示是从数据库中获取所有的数据后,在前台进行的分页;排序都是按照字符串的规则来排的,对“数值”、“时间”排序有问题,另外, 对汉字的排序是不支持的。在我们配置管理的应用中,DisplayTag的这些不足并不会产生问题,原因是配置 管理的信息数量很少,在前台完成分页也不会有什么问题,基本不需要排序功能。报表系统BIRT系统的上一个版本对于报表的在功能上只支持在页面上查看报表,不支持 导出层pdf等格式,在实现上完全是硬编码,对于table手工写html和css完成 表现,后台拚sql获取数据,

20、然后在table上进行数据的填充;对于chart,后台 拚sql获取数据,然后调用jfreechart的api生成图片。而报表系统正式为了解决这样的数据展现服务的系统,报表系统结构如下:包含 局部修改在我们的系统中就是利用了 BIRT报表系统在定义期完成报表定义的工作, 在运行期我们通过调用BIRT报表引擎的API来实现各种格式报表的输出。Ajax 框架 Prototype、BuffaloAjax本来不是一项新的技术,但通过类似于局部刷新的应用,极大的提高 了的用户的体验。在我们的系统中有两类典型的应用场景:级联下拉框,在利用Ajax之前,为了提高系统的可用性,我们一般 不采用的下拉一次,整个

21、Form进行提交,因为这样整个页面刷新, 用户体验最差,而是用IFrame来完成,但这样会导致页面逻辑关系 比较复杂;利用Ajax正式可以很好的解决以上问题;大数据量的分页显示,前端排序。众所周知,Ajax的主要任务就是编写JavaScript,象编写C/S结构的系 统一样来处理客户端的界面逻辑,但JavaScript的特征是一个“运行时”的 语言,导致编写困难一一没有很好的开发工具,调试困难,发现问题很不 容易,往往导致面对浏览器提示的错误信息一筹莫展,Prototype是一个基 于JavaScript的基础语言库,对基本的JavaScript提供了更方便一层的封装。另外,Ajax在应用时的

22、一个特征就是异步通讯(而且是异构系统之间 的通讯,前台运行在浏览器中的JavaScript和后台运行在JVM中的Java语 mu北京东华合创数码科技股份有限公司第12页言之间的通讯),而Buffalo就是解决这样的两个问题的一个基于Prototype 的框架,此框架的另外一个特征就是可以很好的与Spring结合,这样就可 以利用很多Spring提供的功能,Buffalo的主要结构如下图所示:在我们AjaxTable的实现上就是很大程度的利用了 Buffalo的封装远程通讯和数据在传输上的打包、拆包的功能的,更详细的描述请看文档 AjaxTable。附录4.1.系统中web.xml中关键组件的解

23、释Listener名称作用或含义org.springframework.web.context.ContextLoaderListener当Web应用加载时,用于启动读取Spring相关的配置文件,与其相关的参数为contextConfigLocation/WEB-INF/applicationContext*.xmlcom.dhcc.core.plugins.birt.ReportInitListener当Web应用加载时,用于将报表定义加载到内存当中,用以提高报表实例生成的效率Servlet名称作用或含义org.springframework.web.servlet.DispatcherS

24、ervletSpringMVC的主控的Servlet,用于将请求分发给Controllernet.buffalo.server.BuffaloServiceServletBuffalo的Servlet,用于接收JS通过XhttpRequest发过来的请求,并转给 注册到Buffalo中的JavaBean的方法net.buffalo.web.servlet.ApplicationServletFilter名称作用或含义org.displaytag.filter.ResponseOverrideFilterDisplaytag 的 Filtercom.opensymphony.module.sit

25、emesh.filter.PageFilterSiteMesh 的 Filterorg.springframework.web.filter.CharacterEncodingFilterSpring提供的专门用于转码的Filter名词解释4.2.1. AOPAOP是OOP的延续,是Aspect Oriented Programming的缩写,意思是面向方面编 程。AOP实际是GoF设计模式的延续,设计模式孜孜不倦追求的是调用者和被调 用者之间的解耦,AOP可以说也是这种目标的一种实现。目前在系统中用到AOP比较多的场景是日志和事务。Ioc、 DI“控制反转”(Inversion of Con

26、trol, IoC),给它一个更能描述其特点的名字“依赖注入”(Dependency Injection),目标是:将组件的配置与使用分离开。JstlJSP标准标记库(JSP Standard Tag Library,JSTL)是一个实现 Web应用程序中常 见的通用功能的定制标记库集,这些功能包括迭代和条件判断、数据管理格式化、 XML操作以及数据库访问。是一种负责显示层的脚本,与 Apache的开源项目 Velocity 类似。AjaxAjax 是 WEB2.0 的一部分,WEB2.0 主要是 BLOG、RSS、REST、Ajax 构成的, WEB2.0 中并没有任何新的技术。Ajax 是

27、 Asynchronous JavaScript and XML (以及 DHTML 等)的缩写,在技术上 Ajax 由 HTML、JavaScript、DHTML 和 DOM 组 成,这一杰出的方法可以将笨拙的Web界面转化成交互性的Ajax应用程序,极 大的提高用户体验。4.3Web框架的比较-来源与网上搜索在web应用方面,Spring有独立的MVC实现,与struts和webwork2相比毫不逊色。struts缺点是比较重,页面(V)上要有form要用标签,form (M)要继承ActionForm 这么个东东,控制类(C)继承Action/DispatchAction。webwork

28、2比struts要轻,页面没什么说的主要就是标签,model层也不要强制继承 什么,控制类还是要实现一些webwork2的接口 Action/ModelDriven。Spring和webwork2轻重相当。页面标签用jstl, model也不用继承什么,控制类继 承 MultiActionController/SimpleFormController。struts和webwork2都有自己的标签库,都很强大。不过偶更倾向Spring的选择JSTL, JSTL是标准的标签库,优点嘛,标准就是优点:)在页面输入数据绑定上,struts用的是ActionForm的自动绑定,webwork2是 modeldriven 的 getModel()绑定,Spring 的是在 controller 中声明 command 对象。这里struts是最重的,页面要用标签,要继承ActionForm,action要对应到form, 要有 pojo;而 webwork2 和 Spring 相对轻一点,webwork2 的 acti

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论