常用WebServices返回資料的4種方法比較

2022-03-05 09:13:27 字數 3212 閱讀 3451

以前經常在群裡聽到朋友們說webservices的效能特別的慢,說的如何如何。說實話,webservices的確比呼叫本地資料要慢一些,可是究竟有多慢,真的如朋友們說的那麼難以忍受嗎?我個人感覺,多半原因在處理的方式上。讓我們親自編寫測試**,來證明這一切吧。文章由於是我一段時間的總結篇,因此難免參雜個人主觀因素,說的不對的地方,還請多多批評。以下我們主要從呼叫webservices的方法的特點、應用場景、測試結果三個方面來進行下說明分析。

1. 直接返回dataset物件

特點:直接返回dataset物件。

應用場景:1.內網。2.外網且資料量在kb級別時。

2.返回dataset物件用binary序列化後的位元組陣列

特點:位元組陣列流的處理模式。

應用場景:較大資料交換。

3.返回datasetsurrogate物件用binary 序列化後的位元組陣列

特點:使用微軟提供的開源元件進行序列化,依然是位元組流的處理模式。詳情請參考:

應用場景: 較大資料交換。

4.返回datasetsurrogate物件用binary 序列化並zip壓縮後的位元組陣列

特點:使用微軟提供的開源元件對位元組流陣列進行壓縮後傳遞,依然是位元組流的處理模式。詳情請參考:

webservices的**如下:

webservices

using

system;

using

system.collections.generic;

using

system.web;

using

system.web.services;

using

system.data;

using

microsoft.practices.enterpriselibrary.common;

using

microsoft.practices.enterpriselibrary.data;

using

system.io;

using

system.io.compression;

using

system.runtime.serialization.formatters.binary;

namespace

webservice1

[webmethod(description ="

返回dataset物件用binary序列化後的位元組陣列")]

public

byte

getbytes()

[webmethod(description ="

返回datasetsurrogate物件用binary序列化後的位元組陣列")]

public

byte

getdatasetsurrogatebytes()

[webmethod(description ="

返回datasetsurrogate物件用binary序列化並zip壓縮後的位元組陣列")]

public

byte

getdatasetsurrogatezipbytes()

//壓縮壓縮後的位元組陣列

public

byte

compress(

byte

data)}}

客戶端呼叫webservices的**如下:

客戶端呼叫webservices

using

system;

using

system.collections.generic;

using

system.web;

using

system.web.ui;

using

system.web.ui.webcontrols;

using

webservicesclient.localhost;

using

system.data;

using

system.runtime.serialization.formatters.binary;

using

system.io;

using

system.diagnostics;

namespace

webservicesclient

//直接返回dataset物件

protected

void

button1_click(

object

sender, eventargs e)毫秒"

, sw.elapsedmilliseconds.tostring());}//

得到dataset物件用binary序列化後的位元組陣列

protected

void

button2_click(

object

sender, eventargs e)

毫秒;資料大小:

", buffer.length.tostring(), sw.elapsedmilliseconds.tostring());}//

得到datasetsurrogate物件用binary序列化後的位元組陣列

protected

void

button3_click(

object

sender, eventargs e)

毫秒;資料大小:

", buffer.length.tostring(), sw.elapsedmilliseconds.tostring());}//

得到datasetsurrogate物件用binary序列化並zip壓縮後的位元組陣列

protected

void

button4_click(

object

sender, eventargs e)

毫秒;資料大小:

",zipbuffer.length.tostring(),sw.elapsedmilliseconds.tostring());}}

}測試的結果按照先後順序如下圖所示:

關於源**的特殊說明:筆者這裡的開發環境為vs2008中文版sp1+sqlserver2008sp1。資料庫為northwind資料庫。

常用WebServices返回資料的4種方法比較

以前經常在群裡聽到朋友們說webservices的效能特別的慢,說的如何如何。說實話,webservices的確比呼叫本地資料要慢一些,可是究竟有多慢,真的如朋友們說的那麼難以忍受嗎?我個人感覺,多半原因在處理的方式上。讓我們親自編寫測試 來證明這一切吧。文章由於是我一段時間的總結篇,因此難免參雜個...

常用WebServices返回資料的4種方法比較

以前經常在群裡聽到朋友們說webservices的效能特別的慢,說的如何如何。說實話,webservices的確比呼叫本地資料要慢一些,可是究竟有多慢,真的如朋友們說的那麼難以忍受嗎?我個人感覺,多半原因在處理的方式上。讓我們親自編寫測試 來證明這一切吧。文章由於是我一段時間的總結篇,因此難免參雜個...

一些常用的WebServices

天氣預報web服務,資料 於中國氣象局 endpoint disco wsdl ip位址 搜尋 web 服務 是目前最完整的ip位址資料 endpoint disco wsdl 隨機英文 數字和中文簡體字 web 服務 endpoint disco wsdl endpoint disco wsdl ...