`

怎样提高WebService的性能

阅读更多

服务器端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 XT_TEXT";
        SqlConnection conn = new SqlConnection("Server=60.28.25.58;DataBase=s168593;user id=s168593;password=h0y+FeC*;");
        conn.Open();
        SqlDataAdapter dataadapter = new SqlDataAdapter(sql, conn);
        DataSet ds = new DataSet();
        dataadapter.Fill(ds, "XT_TEXT");
        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程序
[code ="C#"]

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程序
[code ="C#"]
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;
        }
    }
}

2
6
分享到:
评论

相关推荐

    WebService在.NET中的实战应用二提高WebService性能(源码PPT等资源)

    2. 文档资源:“怎样提高WebService的性能(打印).doc”提供了关于提高WebService性能的具体方法。文档可能涵盖以下方面: - 使用流式传输:通过使用Stream对象而不是一次性加载整个响应,可以减少内存消耗,尤其是...

    怎样提高WebService的性能(打印)

    【提高WebService性能的关键策略】 在Web服务(Web Services)开发中,性能优化是至关重要的,特别是在处理大量数据或高并发请求时。本文将深入探讨如何通过代码优化来提升WebService的性能,特别是针对提供的代码...

    C#提高webService接口调用的性能

    客户端调用服务器WebService接口可以更加快速。

    提高WebService性能大数据量网络传输处理

    "提高WebService性能大数据量网络传输处理"这个主题关注的是如何在Web服务中有效地处理和传递大量数据。以下是一些关键知识点: 1. **DataSetSurrogate对象**:DataSet是.NET Framework中的一个强大组件,用于存储...

    提高WebService速度方法

    除了使用PreGen.exe,还有其他优化策略可以提升WebService性能: 1. **使用WCF(Windows Communication Foundation)**:相比于早期的ASMX Web Service,WCF提供了更高效的数据绑定和传输机制,能够提高服务的处理...

    .net WebService 大数据量时性能的提高

    标题中的".NET WebService 大数据量时性能的提高"主要关注的是在处理大量数据时,如何优化.NET WebService的性能。在Web服务开发中,尤其是处理大数据集时,性能优化是一个关键点,因为大量的数据传输可能导致网络...

    浪曦][原创]WebService在.NET中的实战应用二

    - `[A356]WebService在.NET中的实战应用二 怎样提高WebService性能.exe` 可能是一个执行程序,用于演示或者测试不同的性能优化技术。 - `DataSetWebService` 可能是一个包含使用DataSet的WebService示例项目,用于...

    WCF自定义绑定与Webservice传输性能比较

    WCF的二进制编码(BinaryMessageEncoding)和TCP传输(NetTcpBinding)可以显著提高数据传输速度,同时减少了网络负载。另一方面,Web Service的HTTP基础使其更适合互联网环境,但牺牲了部分性能。 然而,性能并不...

    WebService压缩方法整合

    【WebService压缩方法整合】是一个关于如何优化和提升WebService性能的主题,这个主题涵盖了多个关键知识点,包括数据压缩、WebService的基本概念、实例应用以及相关的辅助工具和技术。以下是对这些知识点的详细阐述...

    webservice模拟客户端测试工具WebserviceStudio20.rar

    WebserviceStudio20支持断点设置,可以逐行跟踪代码执行,帮助定位问题所在,极大地提高了调试效率。 4. **性能测试**:除了基本的功能测试,工具还能进行简单的性能测试,如并发请求、请求频率等,评估Web服务在高...

    webservice测试调用工具WebserviceStudio20

    10. **性能测试**:对于性能测试,WebserviceStudio或许能进行简单的负载测试,模拟多个并发请求,评估服务的性能和稳定性。 11. **安全性测试**:对于安全性的考虑,工具可能提供对HTTPS和WS-Security的支持,帮助...

    WebService

    9. **性能优化**: 对于大规模应用,考虑缓存策略、负载均衡和消息压缩等手段来提升WebService的性能。 10. **监控与调试**: 使用工具如Fiddler或Visual Studio自带的Web调试器可以帮助开发者查看和调试WebService...

    C#webservice调用测试工具

    【标题】:“C# WebService调用测试工具” ...通过这样的工具,开发人员能够快速有效地验证Web Service的功能,减少错误并提高开发效率。在实际开发过程中,这样的工具对于保证软件质量、缩短项目周期至关重要。

    Loadrunner Webservice压力测试

    通过以上步骤,你可以使用LoadRunner有效地对Webservice进行压力测试,从而优化服务性能,提高系统的可靠性。LoadrunnerWESERVVICE压力测试.docx文档中,将详细展示这些步骤的截图和具体操作,供你参考学习。在实践...

    使用jboss netty 创建高性能webservice客户端及服务端

    这种模型相比传统的阻塞I/O,可以显著提高系统的吞吐量和响应速度。Netty的核心组件包括Bootstrap(启动器)、Channel(通道)、Handler(处理器)和EventLoop(事件循环),它们协同工作以实现高效的数据传输。 ...

    WebService接口测试工具

    5. **自动化测试**:一些高级工具还支持脚本编写,使你能够创建自动化测试套件,对WebService接口进行一系列预定义的测试,提高测试效率。 6. **性能测试**:通过发送大量并发请求,你可以评估服务的性能和负载承受...

    webservice8 异步调用webservice

    总结起来,"webservice8 异步调用webservice"是指在Axis2框架下,通过RPCServiceClient的invokeNonBlocking方法实现Web服务的非阻塞调用,以提高应用的性能和用户体验。通过异步调用,客户端可以在等待Web服务响应的...

    SAP webservice测试方法

    - **性能测试**:通过模拟高并发场景下的请求,评估Webservice的性能表现。 - **安全测试**:测试Webservice的安全性,确保数据传输过程中不被篡改,以及验证认证机制的有效性。 #### 六、总结 通过对SAP ...

    WebService服务器端实例

    10. **性能优化**:考虑服务的可扩展性和性能,可能需要使用负载均衡、缓存策略、消息队列等技术来提高服务的响应速度和处理能力。 以上就是关于"WebService服务器端实例"涉及的主要知识点,涵盖了从基础协议、服务...

    webservice测试调用工具WebserviceStudio20.rar

    7. **性能测试**:在一定程度上,WebserviceStudio20可以用来评估Web Service的性能,例如通过连续发送请求来测量响应时间和吞吐量。 8. **日志记录**:测试过程中的所有请求和响应通常会被记录下来,便于后续分析...

Global site tag (gtag.js) - Google Analytics