优化编写接口时,请注意传输对象的选择,数据量大时传输严重耗时!!!
工作中,发现很多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,"tax":4.3100,"total":54.3100},{"price":50,"tax":4.3100,"total":54.3100}],"success":[{"RETURN_CODE":"0","ERROR_MSG":""}]}
Base64eyJEYXRhVGFibGUxIjpbeyJwcmljZSI6NTAsInRheCI6NC4zMTAwLCJ0b3RhbCI6NTQuMzEwMH0seyJwcmljZSI6NTAsInRheCI6NC4zMTAwLCJ0b3RhbCI6NTQuMzEwMH0seyJwcmljZSI6NTAsInRheCI6NC4zMTAwLCJ0b3RhbCI6NTQuMzEwMH1dLCJzdWNjZXNzIjpbeyJSRVRVUk5fQ09ERSI6IjAiLCJFUlJPUl9NU0ciOiIifV19