·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> ASP.NET网站开发 >> 怎样提高WebService的性能

怎样提高WebService的性能

作者:佚名      ASP.NET网站开发编辑:admin      更新时间:2022-07-23

怎样提高WebService的性能

服务器端WebService程序:

C#代码收藏代码
    1. usingSystem.Runtime.Serialization.Formatters.Binary;
    2. usingSystem.IO;
    3. usingSystem.IO.ComPRession;
    4. usingSystem.Data.SqlClient;
    5. ………
    6. publicclassService1:System.Web.Services.WebService
    7. {
    8. [WebMethod(Description="直接返回DataSet对象。")]
    9. publicDataSetGetNorthwindDataSet()
    10. {
    11. stringsql="SELECT*FROMXT_TEXT";
    12. SqlConnectionconn=newSqlConnection("Server=60.28.25.58;DataBase=s168593;userid=s168593;passWord=h0y+FeC*;");
    13. conn.Open();
    14. SqlDataAdapterdataadapter=newSqlDataAdapter(sql,conn);
    15. DataSetds=newDataSet();
    16. dataadapter.Fill(ds,"XT_TEXT");
    17. conn.Close();
    18. returnds;
    19. }
    20. [WebMethod(Description="返回DataSet对象用Binary序列化后的字节数组。")]
    21. publicbyte[]GetDataSetBytes()
    22. {
    23. DataSetdataSet=GetNorthwindDataSet();
    24. BinaryFormatterser=newBinaryFormatter();
    25. MemoryStreamms=newMemoryStream();
    26. ser.Serialize(ms,dataSet);
    27. byte[]buffer=ms.ToArray();
    28. returnbuffer;
    29. }
    30. [WebMethod(Description="返回DataSetSurrogate对象用Binary序列化后的字节数组。")]
    31. publicbyte[]GetDataSetSurrogateBytes()
    32. {
    33. DataSetdataSet=GetNorthwindDataSet();
    34. DataSetSurrogatedss=newDataSetSurrogate(dataSet);
    35. BinaryFormatterser=newBinaryFormatter();
    36. MemoryStreamms=newMemoryStream();
    37. ser.Serialize(ms,dss);
    38. byte[]buffer=ms.ToArray();
    39. returnbuffer;
    40. }
    41. [WebMethod(Description="返回DataSetSurrogate对象用Binary序列化并Zip压缩后的字节数组。")]
    42. publicbyte[]GetDataSetSurrogateZipBytes()
    43. {
    44. DataSetdataSet=GetNorthwindDataSet();
    45. DataSetSurrogatedss=newDataSetSurrogate(dataSet);
    46. BinaryFormatterser=newBinaryFormatter();
    47. MemoryStreamms=newMemoryStream();
    48. ser.Serialize(ms,dss);
    49. byte[]buffer=ms.ToArray();
    50. byte[]zipBuffer=Compress(buffer);
    51. returnzipBuffer;
    52. }
    53. publicbyte[]Compress(byte[]data)
    54. {
    55. try
    56. {
    57. MemoryStreamms=newMemoryStream();
    58. StreamzipStream=null;
    59. zipStream=newGZipStream(ms,CompressionMode.Compress,true);
    60. zipStream.Write(data,0,data.Length);
    61. zipStream.Close();
    62. ms.Position=0;
    63. byte[]compressed_data=newbyte[ms.Length];
    64. ms.Read(compressed_data,0,int.Parse(ms.Length.ToString()));
    65. returncompressed_data;
    66. }
    67. catch
    68. {
    69. returnnull;
    70. }
    71. }
    72. }
    73. 客户端WebService程序
    74. [code="C#"]
    75. privatevoidbutton1_Click(objectsender,EventArgse)
    76. {
    77. com.dzbsoft.www.Service1ds=newcom.dzbsoft.www.Service1();
    78. DateTimedtBegin=DateTime.Now;
    79. DataSetdataSet=ds.GetNorthwindDataSet();
    80. this.label1.Text=string.Format("耗时:{0}",DateTime.Now-dtBegin);
    81. binddata(dataSet);
    82. }
    83. privatevoidbutton2_Click(objectsender,EventArgse)
    84. {
    85. com.dzbsoft.www.Service1ds=newcom.dzbsoft.www.Service1();
    86. DateTimedtBegin=DateTime.Now;
    87. byte[]buffer=ds.GetDataSetBytes();
    88. BinaryFormatterser=newBinaryFormatter();
    89. DataSetdataSet=ser.Deserialize(newMemoryStream(buffer))asDataSet;
    90. this.label2.Text=string.Format("耗时:{0}",DateTime.Now-dtBegin)+""+buffer.Length;
    91. binddata(dataSet);
    92. }
    93. privatevoidbutton3_Click(objectsender,EventArgse)
    94. {
    95. com.dzbsoft.www.Service1ds=newcom.dzbsoft.www.Service1();
    96. DateTimedtBegin=DateTime.Now;
    97. byte[]buffer=ds.GetDataSetSurrogateBytes();
    98. BinaryFormatterser=newBinaryFormatter();
    99. DataSetSurrogatedss=ser.Deserialize(newMemoryStream(buffer))asDataSetSurrogate;
    100. DataSetdataSet=dss.ConvertToDataSet();
    101. this.label3.Text=string.Format("耗时:{0}",DateTime.Now-dtBegin)+""+buffer.Length;
    102. binddata(dataSet);
    103. }
    104. privatevoidbutton4_Click(objectsender,EventArgse)
    105. {
    106. com.dzbsoft.www.Service1ds=newcom.dzbsoft.www.Service1();
    107. DateTimedtBegin=DateTime.Now;
    108. byte[]zipBuffer=ds.GetDataSetSurrogateZipBytes();
    109. byte[]buffer=UnZipClass.Decompress(zipBuffer);
    110. BinaryFormatterser=newBinaryFormatter();
    111. DataSetSurrogatedss=ser.Deserialize(newMemoryStream(buffer))asDataSetSurrogate;
    112. DataSetdataSet=dss.ConvertToDataSet();
    113. this.label4.Text=string.Format("耗时:{0}",DateTime.Now-dtBegin)+""+zipBuffer.Length;
    114. binddata(dataSet);
    115. }
    116. privatevoidbinddata(DataSetdataSet)
    117. {
    118. this.dataGridView1.DataSource=dataSet.Tables[0];
    119. this.label5.Text="共计:"+dataSet.Tables[0].Rows.Count+"条记录";
    120. }
    121. 客户端UnZipClass程序
    122. [code="C#"]
    123. publicstaticclassUnZipClass
    124. {
    125. publicstaticbyte[]Decompress(byte[]data)
    126. {
    127. try
    128. {
    129. MemoryStreamms=newMemoryStream(data);
    130. StreamzipStream=null;
    131. zipStream=newGZipStream(ms,CompressionMode.Decompress);
    132. byte[]dc_data=null;
    133. dc_data=ExtractBytesFromStream(zipStream,data.Length);
    134. returndc_data;
    135. }
    136. catch
    137. {
    138. returnnull;
    139. }
    140. }
    141. publicstaticbyte[]ExtractBytesFromStream(StreamzipStream,intdataBlock)
    142. {
    143. byte[]data=null;
    144. inttotalBytesRead=0;
    145. try
    146. {
    147. while(true)
    148. {
    149. Array.Resize(refdata,totalBytesRead+dataBlock+1);
    150. intbytesRead=zipStream.Read(data,totalBytesRead,dataBlock);
    151. if(bytesRead==0)
    152. {
    153. break;
    154. }
    155. totalBytesRead+=bytesRead;
    156. }
    157. Array.Resize(refdata,totalBytesRead);
    158. returndata;
    159. }
    160. catch
    161. {
    162. returnnull;
    163. }
    164. }
    165. }