服务器端WebService程序

using System.Runtime.Serialization.Formatters.Binary;
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程序

private void button1_Click(object sender, EventArgs e)
{
    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的性能相关推荐

  1. 降低数值精度以提高深度学习性能

    降低数值精度以提高深度学习性能 Lowering Numerical Precision to Increase Deep Learning Performance 深度学习训练和推理将成为未来几十年 ...

  2. 如何用JNI技术提高Java的性能详解

    阻碍Java获得广泛应用的一个主要因素是Java程序的运行效率.Java是介于解释型和编译型之间的一种语言,同样的程序,如果用编译型语言C来实现,其运行速度一般要比Java快一倍以上.Java具有平台 ...

  3. 提高ActiveMQ工作性能

    2019独角兽企业重金招聘Python工程师标准>>> 提高ActiveMQ工作性能 博客分类: MQ (接上文<架构设计:系统间通信(22)--提高ActiveMQ工作性能( ...

  4. 提高WPF程序性能的几条建议

    原文:提高WPF程序性能的几条建议 这篇博客将介绍一些提高WPF程序的建议(水平有限,如果建议有误,请指正.) 1. 加快WPF程序的启动速度: (1).减少需要显示的元素数量,去除不需要或者冗余的X ...

  5. 提前“剧透”能提高自监督学习性能吗?华为诺亚实验室说:不一定!

    允中 发自 凹非寺  量子位 报道 | 公众号 QbitAI 编者按: 提前"剧透"并不一定能提高自监督学习性能,这是华为诺亚实验室最新的理论研究结果. 由于自监督学习数据和下游任 ...

  6. 组织可以最大限度提高数据中心性能的五个步骤

      当很多组织列出未来一年影响技术发展的趋势和问题时,通常都会有些长远的考虑,例如可能设想几年之后甚至几十年之后的未来发展.而分析机构更是如此.例如,对于2019年,调研机构Gartner公司关注人工 ...

  7. 反向 Dropout,韩松团队最新工作NetAug:提高Tiny神经网络性能的新训练方法

    ​作者丨happy 编辑丨极市平台 本文首发于极市平台,转载请获得授权并标明出处. 论文链接:https://arxiv.org/abs/2110.08890 TinyNN的福音:韩松团队提出针对Ti ...

  8. 怎么设置数据库服务器的最佳性能,调整Windows参数提高数据库服务器性能

    第1页:提高数据库服务器性能 数据库SQL Server跟Windows操作系统是同一个父母生的,他们在一些技术上具有共通性.这在很多方面都有体现.如在日常工作中,我们可以通过调整Windows操作系 ...

  9. 提高ASP.net性能的十种方法

    一.返回多个数据集 检查你的访问数据库的代码,看是否存在着要返回多次的请求.每次往返降低了你的应用程序的每秒能够响应请求的次数.通过在单个数据库请求中返回多个结果集,可以减少与数据库通信的时间,使你的 ...

最新文章

  1. php图片特效,php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
  2. layui关闭表格编辑_告别复制粘贴,表格再多也能快速合并!
  3. 利用素数表快速寻找 n 以内的所有素数
  4. 定义范围中的备选方案生成、横向思维、创建WBS、工作包定义、WBS、确认范围过程和实施质量过程的关系、联合应用设计和质量功能展开QFD
  5. 使用while循环输入 1 2 3 4 5 6 8 9 10
  6. Android 显示全文折叠控件
  7. Qt DLL总结【一】-链接库预备知识
  8. Windows远程桌面(mstsc) 无法全屏显示的解决方法
  9. 【汉字识别】基于matlab SVM汉字识别【含Matlab源码 830期】
  10. Java中9种常见的CMS GC问题分析与解决
  11. windows系统镜像修复计算机,分享win10用镜像文件修复系统的方法
  12. 一文搞定BP神经网络——从原理到应用(原理篇)
  13. 计算机音乐谱恋人心,天刀曲谱大全_天涯明月刀曲谱恋人心
  14. 数据库常用表操作SQL语句案例
  15. 通达信资金净流入公式_通达信成交额资金净流入指标公式
  16. 2022最新微信小程序常见面试题总结
  17. HDOJ2000题Java代码
  18. android的自我评价,2021年ANDROID软件工程师的自我评价
  19. Mysql 分隔符拆分字段
  20. Tryhackme-UltraTech

热门文章

  1. Sentinel 高可用流量管理框架
  2. debian10 更换阿里源
  3. LeetCode简单题之拆炸弹
  4. LeetCode简单题之到目标元素的最小距离
  5. OneFlow 概念清单
  6. 超声波技术构建触摸界面
  7. CUDA C++程序设计模型
  8. RGB-D对红外热像仪和毫米波雷达标定
  9. Laravel Dcat Admin 安装
  10. Python的输出:Python2.7和Python3.7的区别