- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
WinCE数据通讯之Web Service分包传输篇
??????前面写过《WinCE数据通讯之Web Service篇》那篇对于数据量不是很大的情况下单包传输是可以了,但是对于大数据量的情况下WinCE终端的内存往往会在解包或者接受数据时产生内存溢出。具体在多大数据量下会溢出,得根据不同的终端设备内存而定。我做的一个项目测试,表列为47列,其中各种数据类型都可能存在,当下载单包数据在三千条左右时终端解压将报内存溢出错误,终端用的是32M的Flash。因此,所为商用项目,在不确定数据量情况下,分包下载是必须的。相应的上传,也应该根据实际情况进行分包上传,只不过分包的工作在终端设备上进行,性质是一样的。
??????分包传输要解决的一个关键问题,需要反馈包的大小给终端及接收终端请求的第几包数值。包的大小的确定原则上是根据终端能够处理的数据的字节数来确定,服务器端每次传输在终端最大能够接收的字节流量就可以了。实际在操作过程中,我开始也是这么做的,但是效率有些问题,每次终端请求时要对包字节流量进行统计,较费时间。后面想到一个“偷懒”的方法,用表记录的条数来决定字节流量,根据不同的表列字段设置不同的记录数,基本上能够跟字节流量接近,只要不超过上限就可以了,实际上也不用特别精确,因此还是可行的。记录数的确定可以另外作一个小程序针对不同的表事先计算出来写成配置文件就行了,针对一个项目只要配置好一次以后实际上传下载过程中读取这个记录数值就可以了,用表记录数来决定分包大小在计算包数时速度相比每次都要进行字节流统计省时高效。
配置文件格式如下:
配置文件?xml?version=1.0?encoding=utf-8?Configadd?key=PRICE?value=SELECT?[Customer_ID],?[Goods_No],?[UnitPrice],?[BalancePrice],[ModifyDate]?FROM?[Price]/add?key=PRICEROW?value=6000/add?key=GOODS?value=SELECT?[Goods_no],[Goods_name],?[Size_class],[NewOld],?[UnitPrice],[Input_Date],[QiPrice],?[MaiPrice]?FROM?[Goods]?WHERE?[Input_Date]{0}?/add?key=GOODSROW?value=2500/?add?key=CSTOCK?value=INSERT?INTO?[Cstock]([StockCode],?[Customer_Id],?[Goods_No],?[Grade],?[Quantity])VALUES({0},?{1},{2},?{3},CASE?WHEN?{4}=THEN?0?ELSE?CONVERT(INT,{4})?END)//Config
这里对表操作的读取和插入都写在配置文件里了,这样方便对字段和表的修改。
下面获取数据表数据方法:
?
获取数据表数据public?DataTable?getTableData(ref?int?result,?string?tableName,?params?string[]?para)????????????{????????????????result?=?-1;????????????????string?repStr;????????????????try????????????????{????????????????????string?cmdTxt?=?commandTxt(tableName);????????????????????for?(int?i?=?0;?i??para.Length;?i++)????????????????????{????????????????????????repStr?=?{?+?i.ToString()?+?};????????????????????????cmdTxt?=?cmdTxt.Replace(repStr,?para.GetValue(i).ToString());????????????????????}????????????????????DataAccess?das?=?new?DataAccess();????????????????????DataTable?dt?=?das.getTable(cmdTxt);????????????????????result?=?1;????????????????????return?dt;????????????????}????????????????
原创力文档


文档评论(0)