以下内容都是针对李维老师的《Delphi 6/Kylix2--soap/Web Service程序设计篇》一书中的实例的,我的程序框架和他做的基本一致,只是我没有进行压缩,功能上已经全部实现。遇到的问题如下:
1.李维老师在书中<>在数据库部分在更新时服务端用到了clientdataset.XMLData,客户机在发送时也是 clientdataset.XMLData,这样的话在数据量大的时候特别是有blob字段的时候,数据会很慢.因为client部分其实只要发送clientdataset.delta值进行xml封装就行了.
如例子中的Client更新原始代码如下:
IQueryDataFind.UpdateData(XTToCompressSoapPacket1(DZSBFileClientDataSet.xmldata), lErrorCount);
DataUpDatelbl.Caption := '更新状态:' + Inttostr(LerrorCount);
XTToCompressSoapPacket1//是先进行压缩处理
服务端更新代码如下:
try
Self.DZSBFileClientDataSet.Active := False;
Self.DZSBFileClientDataSet.XMLData := XTToUnCompressSoapPacket1(sData);
IErrorCount := Self.DZSBFileClientDataSet.ApplyUpdates(0);
SetComplete;
except
on Exception do
SetAbort;
end;
解决这一问题的方法就是更新时只传递已更改的数据内容,
如客户机这样处理,增加一个TempClientDataSet临时变量,利用TClientDataSet本身的功能把外部的Delta转变成XMLData格式:
TempClientDataSet.Data:=DZSBFileClientDataSet.Delta ;
IQueryDataFind.UpdateData(XTToCompressSoapPacket1(TempClientDataSet.xmldata), lErrorCount);
DataUpDatelbl.Caption := '更新状态:' + Inttostr(LerrorCount);
TempClientDataSet.Data:=Null;
服务端用dsp直接修改,其实不用dsp也是可以的,至少我的程序中就试过是可以的。
try
Self.DZSBFileClientDataSet.Active := False;
Self.DZSBFileClientDataSet.XMLData := XTToUnCompressSoapPacket1(sData);
// IErrorCount := Self.DZSBFileClientDataSet.ApplyUpdates(0);
Self.DZSBFileDataSetProvider.ApplyUpdates(DZSBFileClientDataSet.data,0,IErrorCount);
SetComplete;
except
on Exception do
SetAbort;
end;
Soap/Web Service执行效率的思考
原创
©著作权归作者所有:来自51CTO博客作者小宇飞刀的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:JSON入门指南
下一篇:一个让我魂牵梦萦的地方——婺源

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
SOAP/Web Service学习笔记
一、什么是SOAP和Web Service 简单地说,SOAP就是定义了如何交换类型和具有结构的信息
service soap delphi web xml -
Spring Boot调用SOAP Web Service
WebServiceTemplate调用SOAP Service
Spring Boot SOAP Web Service WebServiceTemplate maven-jaxb2-plugin -
zend_soap 实现 web service 用户验证
关于zend_soap如何来进行web service就不多说了详见
soap zend service web function -
使用 VS WCF 调用P6 SOAP Web Service
昨日应一个朋友的邀请提供visualstudio调用p6websert/2016/05/12/call-p6-soap-web-service-with-usernametoken-using-wcf/...
VS p6 web service visual studio xml