Ajax技术在SOA架构下EAM中的应用

2010-02-23 07:19:18冉崇善王马川
陕西科技大学学报 2010年4期
关键词:服务器端引擎应用程序

冉崇善, 王马川

(陕西科技大学电气与信息工程学院, 陕西 西安 710021)

0 引言

随着信息系统的使用遍布各高校以及企业,面向服务架构(SOA)成为信息管理系统中的重要技术.纵观IT程序发展史,在经过面向过程的编程、面向对象的编程、面向组件的编程及标准化的WebService编程这几个阶段后,新的编程思想已经跃然于软件设计师的眼前,那就是面向服务编程.

Ajax是一种颠覆性技术(disruptive technology),它的出现颠覆了构建和部署在线应用的常规方法,改变着人们认识和使用Web应用的方式.

在SOA架构下的资产管理系统EAM(Enterprise Asset Management)中融合Ajax技术,从框架到表现层的异步数据通信加强了资产管理系统在Web操作中客户端与服务器之间的易操作性和便捷性.

1 相关研究

1.1 SOA体系架构

图1 SOA实现平台的基本组件

面向服务架构(Service Oriented Architecture)是构建分布式系统的方法和模型,虽然最近在软件界炒的如火如荼,但其并不是什么新概念,早在1996年在美国就已经被提出,但由于多年来技术的限制,真正运用到软件架构中则是在最近两年.理解SOA,关键是要理解其中的“S”,即Service服务.服务可以说是一种既超越具体技术,又包容具体实现技术的业务功能.图1所示为SOA实现平台的基本组件.

1.2 Ajax技术

Ajax作为时下创建交互式Web应用程序的Web开发技术,是Google Maps、GMail、Microsoft的MSN.com和Hotmail的底层技术,如Google的suggest以及GoogleMap技术,Ajax本质上是异步JavaScript和XML的组合.

2 Ajax在SOA资产管理系统中的应用

2.1 Ajax与SOA架构的相互支持

基于Ajax交互模式的Web应用程序,必须将相对于B/S架构的UI逻辑以及部分客户端的计算逻辑从服务器端分离出来,所以需要一种机制来封装核心的商业逻辑,而独立的服务单元就是封装核心商业逻辑的一个很好的方法.SOA以其松散耦合和高度灵活的服务适合了这种需求.

SOA架构的第一步就是分析商业过程并将其分割制定成独立的服务,这就要求将当前的应用程序分解成核心的商业服务和外围逻辑,紧接着将其移植到UI逻辑中.由于Ajax结合了桌面UI和浏览器UI的优点,而且具有客户端的计算能力,因而使得不易放在服务器端的外围逻辑能够在客户端找到归宿.

2.2 由Ajax和SOA结合成A/S架构

图2 A/S架构模型的处理视图

将Ajax和SOA有机结合成A/S架构模型,这个架构模型可以在需要有多用户交互体验和高响应的Web应用程序中使用.A/S架构模型考虑到了以下的架构属性:用户的交互性、用户感知延迟、网络性能、可见性、可升级性、轻便性、简易性.微软的Atlas是一项新的基于ASP.NET的Web开发新技术,Atlas能够处理Client端的应用程序而不必往返服务器端更新页面,适合在资产管理系统中开发A/S架构的Web应用程序.图2描述了如同在Atlas中的基于运行时组件更新的A/S架构模型的处理视图.

图2展示了不同的组件之间的相互作用.用户在用户界面的行为触发了一个事件,该事件指出了某种委托给Ajax引擎的组件定义的动作,当一个服务器端的组件的监听器已经注册了自己的这个事件,那么Ajax引擎将会创建一个ΔClient消息,消息中包括了目前的状态改变和相应的事件,并且把这个消息发送到服务器端.服务器端会识别并且通知组件树中相关的组件,这个改变了的组件会最终通过Service Facade触发Service Provider的事件监听器.Service Provider在处理完这个动作后会更新相应组件的状态,服务器端此时将会向客户端引擎发出响应消息ΔServer,而客户端引擎将会根据消息来更新相应的显示模型乃至用户界面.如果是简单的请求,这个客户端引擎也有能力在一个事件触发之后直接更新表示模型,而无需向服务器端发出请求.

2.3 Ajax Engine的设计

图3 Ajax引擎的设计结构

通过2.2中A/S架构下组件之间作用的原理可知Ajax引擎负责初始化和操作表示模型,它具有处理被用户触发的事件、与服务器进行交互以及执行客户端处理结果的能力.Ajax引擎既控制、响应着用户的操作,也负责控制整个请求响应的过程,并给用户相关的提示信息.由此从细粒度的角度考虑,可分析出Ajax引擎应具备的功能模块,包括中心控制器、用户操作事件处理,Web远程通信、数据解析、业务逻辑和页面显示控制,其整体结构设计如图3所示.

整个Ajax引擎分为若干个功能模块,以一个控制器为中心,由它来控制Ajax引擎的正常工作.在以控制器为中心的Ajax引擎架构下,将Ajax引擎的功能分为两类是Ajax引擎中常用而且必要的功能,比如Web远程通信、页面显示控制、用户响应等模块,这些模块都是基于Ajax的Web应用程序需要加载的,缺了其中的某一个模块就不是完整的Ajax应用了.另一类是Ajax引擎中与具体的业务逻辑相关联的模块,比如输入提示、异步联动下拉框、数据合法性验证,这些业务逻辑功能应该属于系统没有必要全部加载的模块.另外对这两种模块的加载方式也是不一样的,对于Ajax引擎中必要的功能,一次性将它们全部加载到本地内存中;对于与具体的业务逻辑相关的Ajax引擎模块,则把它们分装到单独的JavaScript文件中.当由于用户操作或者服务器响应触发的事件而要涉及到相应的客户端业务逻辑时,就选择加载对应的业务逻辑模块.当这个业务逻辑模块的任务完成后,就将其占用的系统资源释放掉.

2.4 A/S框架的优势

(1)加载速度快.第一次页面加载时不是将整个Ajax引擎的所有功能全部一次性地加载到本地内存,只是加载必要的功能模块,所以加载的数据链明显变小,而且一般涉及到具体业务逻辑的Ajax引擎模块时比较复杂,计算任务较大的,加载它们速度会比较慢.

(2)可维护性强.各个功能模块和所属的JavaScript文件分离开,文件分类明确,利于维护.

(3)内存消耗小.通常情况下,用户不会使用到Ajax引擎的所有功能,所以不是必须要加载的内容是不会加载的,从而避免了冗余数据占据内存.

2.5 Web服务的设计

以该应用的业务逻辑层的TIPH.aspx和TCDI PHBB.aspx两个文件为例,这两个文件的目的都是利用数据获取层的数据来生成资产管理信息的表单.PH图表可以用来判断资产从准备采购到最终报废出库的整个流程、当前以及整个生命周期的管理,该逻辑正是在TCDI中实现的.将业务逻辑封装为Web服务,即TIservice.asmx和TCDIService.asmx,它们分别提供了一个原子服务getTI (string,int)和getTCDI (string,int).这样一来,表示层就可以通过Web服务所提供的接口来调用业务逻辑,具体的调用代码如下所示:

TIservice ti=new TIservice();

TCDIService tcdi=new TCDIService();

lblTIform.Text=ti.getTI(TextBox1.Text.ToString(),100);

lblAnalytiform.Text=tcdi.getTCDI (TextBox1.Text.ToString(),100);

如此采用Web服务之后的代码可读性增强,并且也很美观,降低了表示层与业务逻辑层之间的耦合度,增加了代码的重用性.

2.6 Ajax技术在表现层实现局部刷新

在修改信息的页面使用Ajax中的UpdatePanel控件, UpdatePanel是一个服务端控件,能够以非常直接的方式进行局部页面更新,在一个Web表单中放置一个UpdatePanel控件就相当于定义了一个将会被部分更新的区域.当UpdatePanel中的所有控件以POST方式提交给服务器后,应用程序只会更新UpdatePanel中的这些控件.

protected void FormView2_ItemUpdated(object sender, FormViewUpdatedEventArgs e)

{

GridView1.DataSourceID = “SqlDataSource1”;

GridView1.DataBind();

UpdatePanel1.Update();

}

2.7 Ajax优化性能测试

利用微软公司的Web应用程序测试工具(WAST)为测试环境.对同一个资产报废修改表单,首先从测试回传页面开始,然后测试Ajax版本,同样测试10分钟,通过增加并发到100个线程来对测试增加一些负载.统计结果后注意到,Ajax应用程序在高负载下,约在100个并行会话时性能开始下降(在作者的IIS机器上),根据前面对典型的回传页面进程所做的测试结果,得到Ajax应用程序进行的仍是一种客户端到服务器的事务,因此相同的通行量会话仍然存在.然而两者最大的差异是,“Total Bytes Received”大小以及Ajax应用程序功能能够无间断地执行用户页面体验,因此应用程序能够按需要进行伸缩,而且可以得到带宽负担下降的好处.同时,Ajax回调函数只产生98 kB大小的数据包,明显好于前面测试的回传页面所产生的300 kB大小的数据包.

3 结束语

SOA架构具有互操作、高内聚、低耦合、位置透明、可组合等优点,在研究解决SOA架构的EAM中client与server的交互负担问题时,使用Ajax技术开发客户端脚本和进行Web服务器数据交换是非常好的方法.这样,Web页面不用打断交互流程进行重新加载就可以动态地更新.使用Ajax和SOA结合的A/S框架,利用Ajax引擎,不仅从表现层到框架实现了异步机制,而且对更好的调用Web服务提供了便捷.但SOA架构下Ajax技术有Web技术的共病:如果攻击者能够摸清Ajax数据请求布局(该布局取决于被请求的数据的类型、访问数据所需的允许等因素),他们就能够搞清楚如何不需要获得授权就能访问数据.

参考文献

[1] Kanakalata N,Udayan Banerjee.Performance optimization of SOA based Ajax application[J].ISEC,2009,(1):23-26.

[2] DerekT,Sanders,J.A.Hamilton,Jr,Ph.D.Supporting service-oriented architecture[J].Spring Sim,2008,21(5):53-61.

[3] Liam O′Brien.Business transformation to SOA: aspects of the migration and performance and QoS issues[J].ACM,2008,12(3):145-150.

[4] Mira Kajko-Mattsson.A framework for roles for development,evolution and maintenance of SOA-based systems[J].Computer Society,2007,5(6):89-92.

[5] Asit Dan.SOA service reuse by design[J].ACM,2008,3(12):55-57.

[6] 艾丽君,欧阳树生.基于SOA 体系架构的集团企业[J].SSM STUDY,2009,(5):34-38.

[7] 刘贤梅,刘 茜,徐 锋.基于SOA的企业应用集成模型的研究[J].计算机工程与设计, 2009,30(16):3 790-3 793.

[8] 肖 平,蒋玉明,杨 林,等.基于SOA和开源模式的ERP系统设计与实现[J].微计算机信息,2009,2(5):44-44.

猜你喜欢
服务器端引擎应用程序
删除Win10中自带的应用程序
电脑报(2019年12期)2019-09-10 05:08:20
浅析异步通信层的架构在ASP.NET 程序中的应用
成功(2018年10期)2018-03-26 02:56:14
蓝谷: “涉蓝”新引擎
商周刊(2017年22期)2017-11-09 05:08:31
在Windows中安装OpenVPN
无形的引擎
河南电力(2015年5期)2015-06-08 06:01:46
基于Cocos2d引擎的PuzzleGame开发
网页防篡改中分布式文件同步复制系统
关闭应用程序更新提醒
电脑迷(2012年15期)2012-04-29 17:09:47
三星电子将开设应用程序下载商店
微软软件商店开始接受应用程序