管道、过滤器和MVC软件体系模式在J2EE中的应用.pdf
收稿日期:!#$%$&;修返日期:!#$&基金项目:国家“(%”计划资助项目(!%)&(&()管道、过滤器和!#软件体系模式在$%&中的应用!杨晴雯&,周*宇!,李*晓!(&+新疆大学 信息工程学院 计算机系,新疆 乌鲁木齐(%#;!,中国科学院 新疆理化技术研究所,新疆 乌鲁木齐(%&)摘*要:讨论了软件体系构架的重要性和意义,及其在项目开发中的典型应用。关键词:软件体系构架;管道;过滤器;-!.中图法分类号:/0%1%*文献标识码:)*文章编号:&$%12(!2)#$&2$!)334567859:9;8?)A6B58?68CA?D7?E 053?,F548?A 7:E GHI 5:-!.J)DK L5:M$N?:&,OPQR JC!,ST U579!(&!#$%!&(&)$*%#+,,-.&/&01&+)2%3&1,-3#1-#4 51631#+316,73183216 913:#+;3%3 73183216(%#,(.312;!01;%3%*%#&73183216?#-.13-2/.;3-;4(.#)3;%+,(.31#;#A-2B#)3 73183216(%&,(.312)!#$%&$:V56C?E 8B?539A87:6?7:E 5M:5;567:6?9;9;8N7A?7A6B58?68CA?,7:E 8B?A?3A?:8785W?7334567859:9;8B?378$8?A:5:8B?3A9X?68 E?W?493?:8,()*+,%-#:8?)A6B58?68CA?;053?;F548?A;-!.*!世纪 年代,“软件危机”爆发后,人们开始重视对软件工程的研究。这些研究成果为提高软件生产质量和软件生产效率提供了大量的、具有极高指导意义和参考价值的理论基础。但随着软件系统规模越来越大、越来越复杂,人们注意到,仅是对软件结构和算法的设计,已不能达到令人满意的效果,一个好的软件体系构架显得更为重要。在这种背景下,对软件体系构架的研究如雨后春笋般出现了,并在实际应用中得到了认可。在特定环境中重复出现的、具有相同本质的问题,及其解决方案我们称为模式。它是通过经验获取的,以某种结构化的格式书写下来,存在于不同的抽象层,避免了遇到相同的问题重头设计,是可重用的产物,可以被组合起来解决更大的问题。存在各种范围和抽象程度的模式,构架也是存在模式的。目前,软件设计的一个核心问题就是能否使用重复的体系构架,即达到体系构架级的软件重用。也就是能否在不同的软件系统中,采用同一种体系构架。基于此目的,许多专家开始研究软件体系构架的模式问题。在 0788?A:$QA5?:8?E)、管道和过滤器(053?7:E F548?A)、黑板(Y476Z97AE)、代理者(YA9Z?A)、模型 视图 控制器(G9$E?4$H5?N$I9:8A944?A)、表示 抽象 控制(0A?:87859:$)8A76$859:$I9:8A94)、微核(G56A9Z?A:74)、映像(?;4?6859:)。(管道和过滤器体系构架模式)(管道和过滤管道和过滤器模式是专门为处理数据流提供的一种模式。它是由过滤器和管道组成,每个处理步骤都被封装在一个过滤器组件中,多个过滤器相连,可以形成过滤器链,数据流通过相邻过滤器之间的管道进行传输。每个过滤器功能单一,可以单独修改,并且链中的过滤器之间的排列顺序可根据需求,进行配置。这种体系结构模式具有如下特征:(&)每个过滤器组件是个独立的部件,除了输入流和输出流外,过滤器之间互不影响,因此,过滤器之间是不共享任何状态信息的。(!)每个过滤器对其上游和下游连接的过滤器是无知的,它的实现和使用不对链中的任何过滤器加以限制。如上所述,管道和过滤器模式具有组件独立性强、可重用性高、配置重组组件灵活方便等优点,适合作专门对数据流进行预处理、处理的软件开发模型。)%($%&中的*+,-.+/01./+,技术?AW4?8!,%提供的 F548?A 是管道和过滤器体系构架在-!.中的具体应用。通过使用 F548?A 为?应用开发者能够在请求到达?资源前截取请求,进行相应处理;同理,也能够在请求资源反馈之前,截取响应进行处理,将处理后的结果反馈给客户端。因此,F548?A 为某些处理非常复杂的问题,提供了很好的解决方案。F548?A 的工作机制如图&所示。图&*过滤器工作机制)2(在项目开发中的应用利用过滤器可以预处理请求的特性,我们为信息服务平台设计了一个网站访问信息采集模块,用来跟踪登录网站用户的一些基本信息,如登录 T0 地址、时间、访问过的栏目、页面及文2&第#期*杨晴雯等:管道、过滤器和 GHI 软件体系模式在-!.中的应用*自动排污过滤器自动排污过滤器设计特点http:/ 304、316L 不锈钢楔形滤网,强度大、精度高、耐腐蚀,最高过滤精度可达 25 微米。3,过滤设备通过自身的检索和应变功能,实现自动反冲洗,可应对不稳定的水质波动,无需人工干预。4,过滤器设备易损件少,无耗材,运行维护费用低,操作管理简单。5,过滤设备控制系统反应灵敏,运行精确,可以根据不同水源和过滤精度灵活调整反冲洗压差时间和时间设定值。6,过滤设备在反冲洗过程中,各个(组)滤网依次进行反冲洗操作;确保滤网安全、高效清洗,而其他滤网不受影响,继续过滤。7,过滤设备采用气动排污阀,反冲洗历时短,反冲洗耗水量少,环保经济。8,过滤设备结构设计紧凑合理,占地面积小,安装移动灵活方便。9,过滤设备电器系统采用集成控制模式,可以实现远程控制反冲洗过滤器自动排污过滤器自动排污过滤器使用范围http:/ 0.521.2kpa章等,为网站的访问统计采集原始数据。信息采集模块由过滤器组件(!#$%&#!)、监听器组件(!#()%#*!)和用户访问信息组件(!#)%#)三部分组成。信息采集过程主要在过滤器组件的+,$%&#!()方法中进行采集,并利用用户信息组件暂存用户访问信息,通过监听器组件在会话销毁时,将用户访问信息存入数据库,以备统计。整个过程用-.(#%,*.&-,的/01*2 框图表示,如图 3 所示。图 34 过滤器工作时序图另外,利用$%&#!我们还可以实现以下功能:(5)身份验证和授权过滤器。在客户端的请求响应之前,进行身份验证和授权。(3)加密解密过滤器。在客户和服务器端,实现加密和解密功能,且只要更改过滤器就可以更改加密算法。(6)压缩和解压缩过滤器。在客户和服务器端,实现压缩和解压缩功能。(7)转换过滤器。可根据客户端的不同,把相同内容转换成不同的显示方式展现给不同的用户,如手机用户和 89 机用户浏览相同的网页内容,就需要根据客户端浏览器的不同,生成相应格式的数据,发送给客户端用户。(:)日志记录和审核过滤器。记录客户端发送的请求信息,以度量资源的访问量及网络的传输量,或执行访问资源的限额。!#$%体系构架模式!&#$%构架模式;.&#.&?(A 中被用来构建用户界面的。;9 设计模式把应用分成三部分,其中,模型封装了应用程序的数据结构和事务逻辑,集中体现了应用程序的状态。视图实现模型的外观,它是应用程序的外在表现,当模型发生变化时,它会得到通知,反映模型的变化。控制器定义用户界面对用户输入的响应方式,负责把用户的动作转成针对;,+&的操作。通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现,使得软件可维护性、可修复性、可扩展性、灵活性以及封装性大大提高了。实践证明,它已成为在适合开发 9B/程序和 CD 应用的框架模式。!&!(!)中的#$%构架E3FF 将大型企业级应用系统划分为多层,一般为客户层、表示层、业务逻辑层和数据层。每一层都有相应的技术提供支持。多层结构系统具有良好的可拓展性、可维护性和稳定的系统质量,同时,可以提高软件的可重用性,节省项目的开发时间。在开发中,具体采取几层构架,可根据系统的业务繁简程度灵活运用。;9 构架中值得一提的是/#!1#框架,它对;,+&,%G和 9,*#!,&!都提供了对应的实现组件,采用的主要是 E3FF 中的/!H&#,E/8 和 I.J)%D!.!K 技术。应用程序一般使用 E/8 代码生成用户界面,这些代码不包括任何商业逻辑,代表了;,这些 L2#%,*$,!就是;两个类和表单信息的验证文件,最后在#!1#(2,*N%JO P&中配置 L2#%,*,L2#%,*$,!,L2(#%,*;.QQ%*J,L2#%,*$,!G.!+,;.J(!,1!2 等信息。当客户端发出请求时,L2#%,*/!H&#利用配置信息中的L2#%,*;.QQ%*J 对象把请求映射到 L2#%,*处理器对象。另外控制器组件也负责用相应的请求参数填充 L2#%,*$,!,由 L2#%,*($,!进行表单参数的有效性检验,然后 L2#%,*$,!将作为参数传递给 L2#%,*的 Q!N,!()方法,在此,将客户端提交的内容存入数据库,实现表单的处理。该方法结束后会返回一个 L2(#%,*$,!G.!+对象。控制器组件接着从这个对象中获取下一个视图的路径和重定向属性,返回给用户。处理流程如图 6 所示。图 64 主席信箱中的组件图*结束语随着软件规模的不断扩大和新的商业模式的不断涌现,必然会出现更多、更大的应用系统。如何设计这些系统的体系结构,使软件开发达到更快、更好、更便宜。实践证明,最主要的是运用软件复用的思想,使软件的体系结构更合理,开放。需求永远会比技术和设计思想发展快,要使将来系统的升级所付出的代价最小,研究软件系统的体系构架还是非常有用和有必要的。(下转第 5R 页)RR5计算机应用研究3AA:年(!)#$%&$控制引擎在主控板上运行,转发引擎在单板上运行。主控板与单板之间通过高速网络连接。()转发表项在()$中实现,一次查表可得。使得查找时间缩短在纳秒级别。(*)利用硬件逻辑判断报文类型并读取数据包源和目的地址信息,协议报文经硬件识别后上交给主控控制引擎处理。数据报文通过()$查找到转发表项后经转发板直接输出。(+)如果数据报文不能找到匹配的转发表项则将该数据包上交主控处理。(,)驱动协议行为的数据报文利用硬件逻辑辨别后仍旧采用伪消息方式通知主控,主控按照一般的协议报文处理流程来处理该伪消息。(-)主控处理协议报文后更新路由表$.#/,然后采用定时触发方式通过网络下发到单板重新生成转发表项。其结构框图更改如图 所示。!#性能分析该方案将控制引擎和数据引擎的交互简化,操作系统不再进行数据处理,数据包采用硬件逻辑判断报文类型,并通过()$查找转发表直接转发,使得数据报文处理时延在纳秒级别,能够实现组播数据线速转发。虽然协议报文和伪消息仍要上交主控处理,但与数据报文相比,其报文数量要少得多,并不影响数据报文的转发性能。另外,路由表项采用周期下发方式且通过高速网络下发生成转发表,速度极快保证了路由表与转发表的快速一致。总体来看,报文处理仍旧能达到线速。$#测试分析.0(建议以-+字节为最短报文来测试路由器的吞吐量。在同样端口速率下转发小包是对路由器包转发能力最大的考验。比如,一台路由器有两个!112 同步口,一个用于上行,另一个用于下行,则其吞吐量只要达到!112343-+5!6,*!1778,即每秒处理!6,*!1 个-+字节报文就可以达到线速处理能力。实际上.0(对线速的定义要低一些,对于上述情况只要达到!+1 111778 就可以称为线速了。全双工线速转发能力是指以最小包长(以太网-+字节、9&口+1 字节)和最小包间隔(符合协议规定)在路由器端口上双向传输同时不引起丢包。该指标是路由器性能重要指标。:为了验证该方法的可行性,我们利用自行研制的高性能#;-路由器进行了测试,它提供了两个固定配置的!11$?A 通信公司的)B3+111 测试仪对该路由器依照.0(,+规定进行转发性能测试(表!)。表!:标准转发性能测试表报文长度(/CA?)双向转发速度(778)延时(D8)丢包率(E)-+*16+!-F+1F-,!+G144F*1!,!4!G*!1GF 61:从测试结果来看,-+字节、,!字节和!,!4 字节的百兆端口双向全双工测试全都达到了线速。按照标准的转发性能测试得出的结果,-+字节的包转发速率能够很好地反映路由器的性能极限,但实际网络中的数据包长度不同,不同长度的数据包混合传送,各自数量不同。而模拟真实互联网上的数据包分布情况,进行转发性能测试对于实际应用来说更有指导意义。我们依照美国 HI)H.(HJA=KJL I=JC MK)77L=?N H?A%OKP.?8?JQR)推荐的根据#A?A 实际流量统计得出的#2=S分布模型,将长度为-+字节、,6+字节和!,!4 字节的数据包混合在一起测试。这三类数据包数量混合的比例依次为-+字节T,6+字节T!,!4 字节 5GT+T!。测试结果也令人相当满意,仍旧能够达到全双工线速转发,丢包率不超过 1F+E。%#结论硬件转发方案的优点在于利用专用硬件高速查找转发表项进而转发数据,内核不再处理数据报文,从而大大减轻了系统负荷。经过理论分析和实际测试,证明了利用硬件实现数据转发是提高组播转发性能的有效和根本途径。该方法实现并不复杂,可以在现有的#$%&$软件基础上加以改造就可以完成硬件转发功能。唯一的缺点是增加了一套硬件判别逻辑,成本较高比较适合于高端路由器。参考文献:!U V8A=F KAKQKL#N?7?N?A$DLA=QJ8A%&7J8?$KN?(#$%&$):KAKQKL&7?Q=M=QJA=K(.0(*-)V/3 9I F OOOF=?AMF KW,!664311+F X 0?F#A?A YKD7$JJW?2?A KAKQKL,;?8=K (.0(*-)V/3 9I F OOOF=?AMF KW,!66G311+F*&/JN?F/?QR2JP=W$?ARKNKLKWC MK H?AOKP#A?QK?QA U?%;=Q?8(.0(,+)V/3 9I F OOOF=?AMF KW,!666311+F+/=LL 0?FKAKQKL#N?7?N?A$DLA=QJ8A%&7J8?$KN?(#$%&$):KAKQKL&7?Q=M=QJA=K(.?;=8?N)(NJMA%=?AM%7=2%82%;%?O%1,)V/3 9I F OOOF=?AMF KW,11311+F,岩延,郭江涛,等F 组播路由协议涉及及应用$F 北京:人民邮电出版社,11F!41%!4F作者简介:冯渊(!641%),男,河南南阳人,助理工程师,在读硕士,从事高性能#;-路由器的研发工作;赵琳(!6G6%),女,河北保定人,助理工程师,在读研究生,从事信息管理方面的研究。(上接第!-页)参考文献:!0JP/D8QR2J,.?W=?2?D=?,等F 面向模式的软件体系结构卷!:模式系统$F 北京:机械工业出版社,11*F V=QR YJ22J,等F 设计模式$F 北京:机械工业出版社,111F*王晓华,等F ZVV 企业级应用开发$F 北京:电子工业出版社,11*F+?;=UDMM?C,=PJ2 YKCJ,等F Z&站点设计编程指南$F 北京:电子工业出版社,11F,RAA7:3 3 N?;N?;F?JF QK2F QV/3 9I F作者简介:杨晴雯(!6G4%),女,研究生,研究方向为计算机应用;周宇(!6G*%),女,研究生,研究方向为计算机应用;李晓(!6,G%),男,研究员,研究方向为计算机网络。4-!计算机应用研究11,年管道、过滤器和MVC软件体系模式在J2EE中的应用管道、过滤器和MVC软件体系模式在J2EE中的应用作者:杨晴雯,周宇,李晓,YANG Qing-wen,ZHOU Yu,LI Xiao作者单位:杨晴雯,YANG Qing-wen(新疆大学,信息工程学院,计算机系,新疆,乌鲁木齐,830046),周宇,李晓,ZHOU Yu,LI Xiao(中国科学院,新疆理化技术研究所,新疆,乌鲁木齐,830011)刊名:计算机应用研究英文刊名:APPLICATION RESEARCH OF COMPUTERS年,卷(期):2005,22(4)被引用次数:3次 参考文献(5条)参考文献(5条)1.Frank Buschmann.Reginemeunier 面向模式的软件体系结构卷1:模式系统 20032.Erich Gamma 设计模式 20003.王晓华 J2EE企业级应用开发 20034.Kevin Duffey.Vikram Goya JSP站点设计编程指南 20025.查看详情 引证文献(3条)引证文献(3条)1.顾春霞.张广泉 基于MVC模式的Struts框架在图书管理系统中的应用期刊论文-沙洲职业工学院学报 2007(1)2.姜国海 基于XML的企业应用集成的研究与实现学位论文硕士 20053.李洁 J2EE平台下数据验证模块的研究与实现学位论文硕士 2005 本文链接:http:/