怎样提高WebService的性能
using System.IO;
using System.IO.Compression;
using System.Data.SqlClient;
………
public class Service1 : System.Web.Services.WebService
{
[WebMethod(Description = "直接返回 DataSet 对象。")]
public DataSet GetNorthwindDataSet()
{
string sql = "SELECT * FROM DB";
SqlConnection conn = new SqlConnection("Server=60.28.25.58;DataBase=s168593;user id=s168593;password=*****;");
conn.Open();
SqlDataAdapter dataadapter = new SqlDataAdapter(sql, conn);
DataSet ds = new DataSet();
dataadapter.Fill(ds, "DB");
conn.Close();
return ds;
}
[WebMethod(Description = "返回 DataSet 对象用 Binary 序列化后的字节数组。")]
public byte[] GetDataSetBytes()
{
DataSet dataSet = GetNorthwindDataSet();
BinaryFormatter ser = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
ser.Serialize(ms, dataSet);
byte[] buffer = ms.ToArray();
return buffer;
}
[WebMethod(Description = "返回 DataSetSurrogate 对象用 Binary 序列化后的字节数组。")]
public byte[] GetDataSetSurrogateBytes()
{
DataSet dataSet = GetNorthwindDataSet();
DataSetSurrogate dss = new DataSetSurrogate(dataSet);
BinaryFormatter ser = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
ser.Serialize(ms, dss);
byte[] buffer = ms.ToArray();
return buffer;
}
[WebMethod(Description = "返回 DataSetSurrogate 对象用 Binary 序列化并 Zip 压缩后的字节数组。")]
public byte[] GetDataSetSurrogateZipBytes()
{
DataSet dataSet = GetNorthwindDataSet();
DataSetSurrogate dss = new DataSetSurrogate(dataSet);
BinaryFormatter ser = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
ser.Serialize(ms, dss);
byte[] buffer = ms.ToArray();
byte[] zipBuffer = Compress(buffer);
return zipBuffer;
}
public byte[] Compress(byte[] data)
{
try
{
MemoryStream ms = new MemoryStream();
Stream zipStream = null;
zipStream = new GZipStream(ms, CompressionMode.Compress, true);
zipStream.Write(data, 0, data.Length);
zipStream.Close();
ms.Position = 0;
byte[] compressed_data = new byte[ms.Length];
ms.Read(compressed_data, 0, int.Parse(ms.Length.ToString()));
return compressed_data;
}
catch
{
return null;
}
}
}
客户端WebService程序
{
com.dzbsoft.www.Service1 ds = new com.dzbsoft.www.Service1();
DateTime dtBegin = DateTime.Now;
DataSet dataSet = ds.GetNorthwindDataSet();
this.label1.Text = string.Format("耗时:{0}", DateTime.Now - dtBegin);
binddata(dataSet);
}
private void button2_Click(object sender, EventArgs e)
{
com.dzbsoft.www.Service1 ds = new com.dzbsoft.www.Service1();
DateTime dtBegin = DateTime.Now;
byte[] buffer = ds.GetDataSetBytes();
BinaryFormatter ser = new BinaryFormatter();
DataSet dataSet = ser.Deserialize(new MemoryStream(buffer)) as DataSet;
this.label2.Text = string.Format("耗时:{0}", DateTime.Now - dtBegin) + " " + buffer.Length;
binddata(dataSet);
}
private void button3_Click(object sender, EventArgs e)
{
com.dzbsoft.www.Service1 ds = new com.dzbsoft.www.Service1();
DateTime dtBegin = DateTime.Now;
byte[] buffer = ds.GetDataSetSurrogateBytes();
BinaryFormatter ser = new BinaryFormatter();
DataSetSurrogate dss = ser.Deserialize(new MemoryStream(buffer)) as DataSetSurrogate;
DataSet dataSet = dss.ConvertToDataSet();
this.label3.Text = string.Format("耗时:{0}", DateTime.Now - dtBegin) + " " + buffer.Length;
binddata(dataSet);
}
private void button4_Click(object sender, EventArgs e)
{
com.dzbsoft.www.Service1 ds = new com.dzbsoft.www.Service1();
DateTime dtBegin = DateTime.Now;
byte[] zipBuffer = ds.GetDataSetSurrogateZipBytes();
byte[] buffer = UnZipClass.Decompress(zipBuffer);
BinaryFormatter ser = new BinaryFormatter();
DataSetSurrogate dss = ser.Deserialize(new MemoryStream(buffer)) as DataSetSurrogate;
DataSet dataSet = dss.ConvertToDataSet();
this.label4.Text = string.Format("耗时:{0}", DateTime.Now - dtBegin) + " " + zipBuffer.Length;
binddata(dataSet);
}
private void binddata(DataSet dataSet)
{
this.dataGridView1.DataSource = dataSet.Tables[0];
this.label5.Text = "共计:" + dataSet.Tables[0].Rows.Count + "条记录";
}
客户端UnZipClass程序
public static class UnZipClass
{
public static byte[] Decompress(byte[] data)
{
try
{
MemoryStream ms = new MemoryStream(data);
Stream zipStream = null;
zipStream = new GZipStream(ms, CompressionMode.Decompress);
byte[] dc_data = null;
dc_data = ExtractBytesFromStream(zipStream, data.Length);
return dc_data;
}
catch
{
return null;
}
}
public static byte[] ExtractBytesFromStream(Stream zipStream, int dataBlock)
{
byte[] data = null;
int totalBytesRead = 0;
try
{
while (true)
{
Array.Resize(ref data, totalBytesRead + dataBlock + 1);
int bytesRead = zipStream.Read(data, totalBytesRead, dataBlock);
if (bytesRead == 0)
{
break;
}
totalBytesRead += bytesRead;
}
Array.Resize(ref data, totalBytesRead);
return data;
}
catch
{
return null;
}
}
}
转载于:https://www.cnblogs.com/iChina/archive/2011/11/15/2250367.html
怎样提高WebService的性能相关推荐
- 降低数值精度以提高深度学习性能
降低数值精度以提高深度学习性能 Lowering Numerical Precision to Increase Deep Learning Performance 深度学习训练和推理将成为未来几十年 ...
- 如何用JNI技术提高Java的性能详解
阻碍Java获得广泛应用的一个主要因素是Java程序的运行效率.Java是介于解释型和编译型之间的一种语言,同样的程序,如果用编译型语言C来实现,其运行速度一般要比Java快一倍以上.Java具有平台 ...
- 提高ActiveMQ工作性能
2019独角兽企业重金招聘Python工程师标准>>> 提高ActiveMQ工作性能 博客分类: MQ (接上文<架构设计:系统间通信(22)--提高ActiveMQ工作性能( ...
- 提高WPF程序性能的几条建议
原文:提高WPF程序性能的几条建议 这篇博客将介绍一些提高WPF程序的建议(水平有限,如果建议有误,请指正.) 1. 加快WPF程序的启动速度: (1).减少需要显示的元素数量,去除不需要或者冗余的X ...
- 提前“剧透”能提高自监督学习性能吗?华为诺亚实验室说:不一定!
允中 发自 凹非寺 量子位 报道 | 公众号 QbitAI 编者按: 提前"剧透"并不一定能提高自监督学习性能,这是华为诺亚实验室最新的理论研究结果. 由于自监督学习数据和下游任 ...
- 组织可以最大限度提高数据中心性能的五个步骤
当很多组织列出未来一年影响技术发展的趋势和问题时,通常都会有些长远的考虑,例如可能设想几年之后甚至几十年之后的未来发展.而分析机构更是如此.例如,对于2019年,调研机构Gartner公司关注人工 ...
- 反向 Dropout,韩松团队最新工作NetAug:提高Tiny神经网络性能的新训练方法
作者丨happy 编辑丨极市平台 本文首发于极市平台,转载请获得授权并标明出处. 论文链接:https://arxiv.org/abs/2110.08890 TinyNN的福音:韩松团队提出针对Ti ...
- 怎么设置数据库服务器的最佳性能,调整Windows参数提高数据库服务器性能
第1页:提高数据库服务器性能 数据库SQL Server跟Windows操作系统是同一个父母生的,他们在一些技术上具有共通性.这在很多方面都有体现.如在日常工作中,我们可以通过调整Windows操作系 ...
- 提高ASP.net性能的十种方法
一.返回多个数据集 检查你的访问数据库的代码,看是否存在着要返回多次的请求.每次往返降低了你的应用程序的每秒能够响应请求的次数.通过在单个数据库请求中返回多个结果集,可以减少与数据库通信的时间,使你的 ...
最新文章
- php图片特效,php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
- layui关闭表格编辑_告别复制粘贴,表格再多也能快速合并!
- 利用素数表快速寻找 n 以内的所有素数
- 定义范围中的备选方案生成、横向思维、创建WBS、工作包定义、WBS、确认范围过程和实施质量过程的关系、联合应用设计和质量功能展开QFD
- 使用while循环输入 1 2 3 4 5 6 8 9 10
- Android 显示全文折叠控件
- Qt DLL总结【一】-链接库预备知识
- Windows远程桌面(mstsc) 无法全屏显示的解决方法
- 【汉字识别】基于matlab SVM汉字识别【含Matlab源码 830期】
- Java中9种常见的CMS GC问题分析与解决
- windows系统镜像修复计算机,分享win10用镜像文件修复系统的方法
- 一文搞定BP神经网络——从原理到应用(原理篇)
- 计算机音乐谱恋人心,天刀曲谱大全_天涯明月刀曲谱恋人心
- 数据库常用表操作SQL语句案例
- 通达信资金净流入公式_通达信成交额资金净流入指标公式
- 2022最新微信小程序常见面试题总结
- HDOJ2000题Java代码
- android的自我评价,2021年ANDROID软件工程师的自我评价
- Mysql 分隔符拆分字段
- Tryhackme-UltraTech