论文摘要:随着计算机网络的迅猛发展.现代企业和政府部门要求网络信息系统能够是松散耦合的、有良好的跨平台性,并且设计简单。soap正是基于此类需要而产生的协议。但是soap的特点使得基于其上的应用在效率的表现上较为低下。通过分析soap的请求响应机制.对这一过程中的某些方面优化的可能进行了一些探讨。
0引言
soap协议往往生成冗长的请求与应答,http并不是有效率的通信协议,除此以外,基于文档的开放的无状态的协议处理客户端请求必须做更多的工作,其中包括必须对请求和结果进行语法分析,传输的内容的要进行序列化,xml需要文件解析等等,所有这些都需要耗费大量时间。因此,soap调用的等待时间往往高于corba调用的等待时间,基于soap的网络信息系统也显得效率低下。因此,必须找出不足的原因.并找出提高效率的对策。
1 soap服务分析
soap是一个在分散化的分布式环境中用来交换信息的轻便协议。一个典型的soap服务通常包含以下组件:soap客户机、soap服务器、实际服务(如图1)。
2讨论和优化
作为简单性和可伸缩性的代价,soap的调用过程耗费了大量的时间在序列化(对象到xml)、解析(xml到对象)、将用户的请求传输给后端服务器以及网络传输上,以下针对这些方面进行进一步讨论和优化处理。
2.1硬件扩充
从硬件的角度来看,可以从“内缩放”和“外缩放”来改进等待时间。内部缩放,即可以通过为服务器使用更多的或更好的硬件来改进软件的性能,例如采用更多的cpu、内存以及更高的网络带宽、增加传输的高速缓存器等。外部缩放,即通过把负载分布到多台服务器上来改进系统的性能。这时要求分布式网络系统要么是无状态的,要么在多台计算机之后共享状态。
2.2解析的考虑
有两种处理xml数据的模型:使用语法分析器产生的语法事件序列,直接输人到用户的处理中;或者首先把嵌套的节点、xml源结构构造成一个表示该程序的树中,然后通过与这些树形的数据类型相关的api来操作xml数据。这两种模型导致了两个不同的xml解析标准:
(1)基于事件的解析器sax(simpleapiforxml)
(2)基于树型的解析器dom(documentobjectmodel)
(3)选择和改进
采用sax或者dom实际上是各有利弊的。
如果在soapbody中包含了大量的数据,可以在具体应用中进行合适的分段解析(见图2),在body中将这些数据分成适当大小的数据块,然后发送出去。而soap消息的接受端的处理程序将会把每个块元素视为一个原子,利用sax进行解析。处理中,将视每个块元素被成功处理与否,而将相应的确认加入到soap响应中去。当soap请求消息被处理完毕之后,soap响应消息的生成处理也同时被完成。因此,消息的处理和响应的生成是交错进行的,这样做可以有效地提高了处理的时间。
当然,也可以适当对dom分析器做一些改进氏在文档很庞大的情况下,采用一种基于“拉”的技术的dom,也就是说,可以仅创建出要访问的那部分xml文档的基于dom的内存结构。具体操作是,在解析中,只有遇到感兴趣的那部分的节点,才将该节点相关的部分读人成为完整的dom树结构,即将其整个拉人内存中,然后可以调用常规的dom方法进行处理。这种做法将有助于克服dom的低效性,同时利用了dom能允许代码直接读和修改xml文档各部分的特性。
2.3利用高速援存技术
使用高速缓存技术的好处在于它改进了应用系统的响应时间,避免重复执行相同的计算操作,或是避免当结果集在一段时间内持续有效的前提下,重复执行后台复杂的数据库访问,因为一系列针对相同信息的请求可以使用被高速缓存的版本来响应,而无需重复地处理并占用系统开销。高速缓存机制的另一个好处则是针对数据的传输,应用了高速缓存机制之后,数据的副本可以存于叶节点服务器以方便本地的服务,而无需重复地访间中央信息库。这样,不仅加快了对信息的访间,同时缩减了对网络带宽的占用,减轻了中央服务器的负载。此外,高速缓存技术改进了soap服务中的瓶颈,降低了序列化对象到xml文档上所花费的时间。
2.4网络传抢
soap消息的传输是通过绑定相应的传输协议来实现的。尽管soap可以采用其他传输协议,但它通常都是通过http协议来完成网络传输工作的。
在使用http进行soap消息的传输时,必须在消息头指定消息体的长度。在http1.0中,这个值要在序列化后才能决定下来,然后填人消息头等待发送。所以在传输soap消息之前,系统中要有两个以供发送的缓冲器来分别存放消息头和消息体。并且要序列化完整的soap消息后以后才能完成消息头,再开始传输。这样做会增加系统调用,在消息很大时耗费大量的内存,并且在完成整个消息后才发送也延长了传输时间。
解决的办法是采用分块传送机制。可以将soap的消息体被分成适当大小的块以流的形式被传输.这时候不再需要计算整个消息体的大小.因为块大小是确定的,soap的接收者在处理消息时就能根据块的大小决定每块消息体在哪里结束。去掉消息体的长度意味着soap的发送者不用将整个soap消息放人缓冲区等待发送,而是将整个消息分块分批进行处理和传送,这样就允许网络传输和序列化能重叠进行,减少系统开销。同时,采用永久连接的方式,这将减少为每一个消息产生新连接的开销。
3结语
然而soap在网络服务上的效率表现却显得略有不足,针对过程中可能进行的改进进行了探讨,以期找到优化的方式。这些讨论都是建立在现有的soap发展情况和hti?协议基础之上,并不是要改变或者扩展soap的标准,因此所讨论的对于soap的优化的方式是有条件的和有限的。
中国论文网(www.lunwen.net.cn)免费学术期刊论文发表,目录,论文查重入口,本科毕业论文怎么写,职称论文范文,论文摘要,论文文献资料,毕业论文格式,论文检测降重服务。