基于.NET平台WebService的应用集成与性能优化
摘要:Web Service技术的出现使得跨平台应用集成变得非常容易。主要以高校信息平台为例,探讨了Web服务的应用集成,并提出了Web Service常面临的性能问题的解决思路和方法。
关键词:Web Service;应用集成;系统性能;系统优化
0引言
随着互联网技术和网络技术的广泛应用,为分布在不同网络区域内的资源实现交互和集成提供了条件,而且在网络技术不断发展成熟的过程中,对网络资源的集成也提出了迫切的要求,但互联网是一个互异的环境,分布着不同的应用系统,不同的网络操作平台,数据采用不同的表示格式,采用不同的网络通信协议等,所有这些都为网络资源的集成(如企业应用集成,企业间电子商务的集成,电子数据交换等)带来了诸多不便。Web Service技术的出现,提供了一个跨平台、跨语言、松散耦合、开放的技术架构,使分散在不同技术平台上的资源,采用不同技术实现的功能,以服务的形式进行动态的交互。
同传统的分布式模型相比,Web Services体系的主要优势在于:①协议的通用性。Web Services利用标准的Internet协议(如HTTP、SMTP等),解决的是面向Web的分布式计算;而CORBA、DCOM、RMI使用私有的协议,只能解决企业内部的对等实体间的分布式计算;
②完全的平台、语言独立性。Web Services进行了更高程度的抽象,只要遵守Web Services的接口即可进行服务的请求与调用。Web
Service技术同时也面临着诸多难题,如性能、安全等方面。在实际的应用过程中,获取信息时表现为性能不高、响应速度慢等,获取信息量较大时尤为明显,如果得不到解决,必定会成为Web Service进一步发展的障碍。
1Web服务体系结构及相关技术
Web Services 框架的核心技术包括SOAP、WSDL和UDDI,它们都是以标准的XML文档的形式表示。
SOAP是Web Services的通信协议,SOAP是一种简单的、轻量级的基于XML的机制,用于在网络应用程序之间进行结构化数据交换。SOAP包括三部分:一个定义描述消息内容的框架的信封;一组表示应用程序定义的数据类型实例的编码规则;表示远程过程调用和响应的约定。
WSDL表示WEB服务说明语言。WSDL文件是一个XML 文档,用于说明一组SOAP消息以及如何交换这些消息。
UDDI(统一描述发现和集成) 提供一种发布和查服务描述的方法。UDDI 数据实体提供对定义业务和服务信息的支持。WSDL 中定义的服务描述信息是UDDI注册中心信息的补充。Web Services 的体系
架构如图1。
图1WebService体系架构
2Web Service应用集成
当一个单位或机构在面临信息化要求时,最直接的方式是采购或自行开发系统以满足需求。随着时间的推移将会有许多为了不同目的
而建置的信息系统,这些系统使用的操作系统平台、开发平台及信息标准可能是不同的。过去的集成解决方案可以将系统内部子系统集成到一起,暂时满足应用需求,但是一旦有新的需求要加入集成,又将进行一次全面的系统整合,不但提高了成本,而且在整合时间上逐次递增,劣势不断显现。
系统集成工作涉及大量连续的低级别程序开发任务,有时甚至会对大部分系统模块进行重新开发,以实现集成需求,因此,集成工作需要消耗大量资源、时间与资金。运用Web Service技术实现的系统集成方案,将对应用系统创建并集成的那些用以控制自身应用运作效率的应用程序及处理过程所采用的方式产生深远影响。与此同时,此方案也使得随时随地在系统内部自由交换并访问信息成为可能,Web Service技术能够在应用程序和业务流程之间实现顺畅的自动化信息交换机制,而不必考虑这些信息最初是由何种应用或平台提供的。以高校各信息系统为例,基于Web Service的应用集成示意图如图2。
图2高校信息平台集成
3性能优化策略
3.1基于数据压缩的传输性能优化
在本小节中,将介绍4种数据处理方式的Web Service方法,数据传输是以DataWebService建立的Web服务作为获取数据的服务端,应用程序调用Web服务方法来获取数据,即模拟应用系统从Web服务远程获取数据,如图3。
图3数据传输
3.1.1一般数据传输方式
此方式的特点是直接返回DataSet对象,适合应用场景:①内网;
②外网,且数据量在kb级别时。
3.1.2使用Binary序列化DataSet对象
此方法返回DataSet对象用Binary序列化后的字节数组,特点:字节数组流的处理模式,适合应用场景:
较大数据交换。
关键代码:
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, ds);
byte[] buffer = ms.ToArray();
3.1.3使用Binary 序列化DataSetSurrogate对象
返回DataSetSurrogate对象用Binary 序列化后的字节数组。特点:使用微软提供的开源组件进行序列化,仍然是字节流的处理模式。关键代码:
DataSetSurrogate dss = new DataSetSurrogate(ds);BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, dss);
byte[] buffer = ms.ToArray();
3.1.4使用Binary 序列化DataSetSurrogate对象并进行Zip压缩特点:使用微软提供的开源组件对字节流数组进行压缩后传递,依然是
字节流的处理模式。
关键代码:
DataSetSurrogate dss = new DataSetSurrogate(DS);
调用webservice服务BinaryFormatter bf = new BinaryFormatter();P MemoryStream ms = new MemoryStream();
bf.Serialize(ms, dss);
byte[] buffer = ms.ToArray();
byte[] Zipbuffer = Compress(buffer);
3.1.5验证4种方式效率
针对以上4种数据压缩方式,在本地进行三组数据量测试,分别为500条数据、2 000条数据、10 000条数据。每组测试中各种方法分别测试10次,获取数据传输时间(平均值)及数据传输量(单位字节)。统计如图4、图5、图6所示。
图4四种方法分别测试获取500行数据信息
由以上几种数据量测试结果可以看出:在数据传输时间上,DataSet序列化>DataSetSurrogate对象序列化并压缩>DataSet方式>DataSetSurrogate对象序列化;在数据传输量上,DataSet序列化> DataSetSurrogate对象序列化> DataSetSurrogate对象序列化并压缩,数据压缩率达70%左右。由于以上测试是基于局域网,所以,在数据传输时间上,数据量与传输时间的反比关系不太明显,经使用Load Runner测试工具验证,Web客户端发出请求直到收到响应这段时间,网络传输所占用的时间远远大于服务器处理时间。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。