【优化记录】WebService编写接口时,注意传输对象的选择减少传输IO

优化编写接口时,请注意传输对象的选择,数据量大时传输严重耗时!!!

工作中,发现很多WebService接口的传输对象使用 byte[] 、Dataset 、自定义DTO

Dataset作为接口返回对象:请求调用时会自动将Dataset序列化为Base64字符,长度超出了自行序列化为XML的长度(未序列号schema)

byte[]作为接口返回对象: 接口调用时会将byte[]转为Base64字符,Base64实际传输长度 已经超出原对象序列化为XML的长度, 没有起到优化的作用

自定义DTO:接口调用时会将DTO转为XML格式字符对象

建议:

1.接口优化 使用String类型返回/ Json格式或自行序列化,减少传输内容

2.开发新接口 直接上WebApi / Json

 

三行数据比较 XML PK Json (ToBase64) 自行比较

XML
<DataSet1><DataTable1><price>50</price><tax>4.3100</tax><total>54.3100</total></DataTable1><DataTable1><price>50</price><tax>4.3100</tax><total>54.3100</total></DataTable1><DataTable1><price>50</price><tax>4.3100</tax><total>54.3100</total></DataTable1></DataSet1>

Base64
PERhdGFTZXQxPjxEYXRhVGFibGUxPjxwcmljZT41MDwvcHJpY2U+PHRheD40LjMxMDA8L3RheD48dG90YWw+NTQuMzEwMDwvdG90YWw+PC9EYXRhVGFibGUxPjxEYXRhVGFibGUxPjxwcmljZT41MDwvcHJpY2U+PHRheD40LjMxMDA8L3RheD48dG90YWw+NTQuMzEwMDwvdG90YWw+PC9EYXRhVGFibGUxPjxEYXRhVGFibGUxPjxwcmljZT41MDwvcHJpY2U+PHRheD40LjMxMDA8L3RheD48dG90YWw+NTQuMzEwMDwvdG90YWw+PC9EYXRhVGFibGUxPjwvRGF0YVNldDE+

Json
{"DataTable1":[{"price":50,"tax":4.3100,"total":54.3100},{"price":50,"total":54.3100}],"success":[{"RETURN_CODE":"0","ERROR_MSG":""}]}

Base64eyJEYXRhVGFibGUxIjpbeyJwcmljZSI6NTAsInRheCI6NC4zMTAwLCJ0b3RhbCI6NTQuMzEwMH0seyJwcmljZSI6NTAsInRheCI6NC4zMTAwLCJ0b3RhbCI6NTQuMzEwMH0seyJwcmljZSI6NTAsInRheCI6NC4zMTAwLCJ0b3RhbCI6NTQuMzEwMH1dLCJzdWNjZXNzIjpbeyJSRVRVUk5fQ09ERSI6IjAiLCJFUlJPUl9NU0ciOiIifV19

相关文章

1.使用ajax调用varxhr;functioninvoke(){if(window.ActiveXO...
               好不容易把WebService服务器...
1新建一个工程项目用来做服务端增加一个MyService1类文件pac...
packagecom.transsion.util;importjava.io.BufferedReader;i...
再生产wsdl文件时重写描述文件1usingSystem;2usingSystem.Co...
一般情况下,使用eclipse自带的jax-ws生成webservice会自动生...