以前經常在群裡聽到朋友們說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 ...