當前位置:首頁 » 網頁前端 » webapi性能測試
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

webapi性能測試

發布時間: 2022-09-20 00:14:02

㈠ WebAPI 和 webservice的區別

1、它是基於SOAP協議的,數據格式是XML
2、只支持HTTP協議
3、它不是開源的,但可以被任意一個了解XML的人使用
4、它只能部署在IIS上
Web API:
1、這是一個簡單的構建HTTP服務的新框架
2、在.net平台上Web API 是一個開源的、理想的、構建REST-ful 服務的技術
3、不像WCF REST Service.它可以使用HTTP的全部特點(比如URIs、request/response頭,緩存,版本控制,多種內容格式)
4、它也支持MVC的特徵,像路由、控制器、action、filter、模型綁定、控制反轉(IOC)或依賴注入(DI),單元測試。
5、它可以部署在應用程序和IIS上
6、這是一個輕量級的框架,並且對限制帶寬的設備,比如智能手機等支持的很好
7、Response可以被Web API的MediaTypeFormatter轉換成Json、XML 或者任何你想轉換的格式。

㈡ 如何使用web api測試工具siege和ab的post方法來發送json數據 / 藍訊

webapi 支持post get 只需要方法名稱是post 和get 就可以了 function nTabs(thisObj,Num){ if(thisObj.className == "active")return; var tabObj = thisObj.parentNode.id; var tabList = document.getElementById(tabObj).getElementsByTagName("li"); for(i=0; i <tabList.length; i++) {

㈢ webapi 返回類型到底應該是什麼才合適,這是個問題

我們知道在WebAPi中對於響應結果我們都是這樣用的:
public HttpResponseMessage GetResult<T>(T t)
{
return Request.CreateResponse<T>(HttpStatusCode.OK, t);
}

在項目中前端為了和其他統一,封裝了一套響應的結果和狀態碼,要求直接返回對象,於是將上述修改成比如如下:

public Result<List<Person>> GetResult()
{
var result = new Result<List<Person>>();
return result;
}

public class Result<T> : BaseResult
{
public T Data;
}

public class BaseResult
{
public string Message;
public int Status;
public ErrorCode ErrorCode;
}

public enum ErrorCode
{
......
}

統觀以上兩種方法,一種是WebAPi內置響應的結果,另外一種則是直接返回自定義響應結果。
於是乎,我開始思索這兩種方法雖然都能得到我們想要的結果,但是有什麼區別沒有呢?說的更加明確一點的是,二者在數據響應上有沒有性能上的差異呢?
WebAPi響應結果和自定義響應結果二者性能差異
以上則是需要返回對象來進行處理,而有些我們則不需要返回任何對象來進行處理例如直接返回void,而在WebAPi中對應需要返回 IHttpActionResult 例如自定義返回則是如下:
public void GetFirst()
{.....}

在WebAPi中則是進行如下返回:
public IHttpActionResult GetSecond()
{
return OK();
}

下面我們在控制台中分別來測試這二者在WebHost以及在SelfHost上的差異,我們如何獲取其差異呢?我們通過對void方法和http方法在控制台中發出1000個請求來獲取其總共花費時間來進行比較。
SelfHost

[HttpGet]
public void GetFirst()
{
StringBuilder stringbuilder = new StringBuilder();
for (int i = 0; i < 20; i++)
{
stringbuilder.Append("something");
}
}

[HttpGet]
public IHttpActionResult GetSecond()
{
StringBuilder stringbuilder = new StringBuilder();
for (int i = 0; i < 20; i++)
{
stringbuilder.Append("something");
}
return Ok();
}

在控制台中方法如下:

private const string voidUrl = "http://localhost:8080/api/home/GetFirst";
private const string httpUrl = "http://localhost:8080/api/home/GetSecond";
private static List<TimeSpan> voidTimes = new List<TimeSpan>();
private static List<TimeSpan> httpTimes = new List<TimeSpan>();
static void Main(string[] args)
{
Console.WriteLine("Start Test....");
for (int i = 0; i < 1000; i++)
{
voidTimes.Add(getResponse(voidUrl));
Thread.Sleep(10);
Console.WriteLine("void Test " + i);
}
Console.WriteLine("Finished Void Test");
for (int i = 0; i < 1000; i++)
{
httpTimes.Add(getResponse(httpUrl));
Thread.Sleep(10);
Console.WriteLine("http Test " + i);
}
Console.WriteLine("Finished Http Test");
var voidTotalTime = voidTimes.Sum(t => t.Milliseconds);
Console.WriteLine("void方法發出1000個請求總共需要時間:" + voidTotalTime);
Console.WriteLine("void方法平均每一個請求需要時間:" + voidTotalTime / 1000.00 + "秒");

var httpTotalTime = httpTimes.Sum(t => t.Milliseconds);
Console.WriteLine("http方法發出1000個請求總共需要時間: " + httpTotalTime);
Console.WriteLine("http方法平均每一個請求需要時間: " + httpTotalTime / 1000.00 + "秒");

Console.Read();
}

static TimeSpan getResponse(string url)
{
var stopWatch = new Stopwatch();
stopWatch.Start();
var httpClient = new HttpClient();
httpClient.BaseAddress = new Uri(url);
var task = httpClient.GetAsync(httpClient.BaseAddress).Result;
var result = task.Content.ReadAsAsync(typeof(object));
var timeSpan = stopWatch.Elapsed;
stopWatch.Stop();
return timeSpan;
}

㈣ WebService和Webapi的區別

webapi用的是http協議,webservice用的是soap協議
webapi無狀態,相對webservice更輕量級。webapi支持如get,post等http操作
http soap關系
http:是一個客戶端和伺服器端請求和應答的標准(TCP)。http協議其目的是為了提供一種發布和接收htttp頁面的方法
一http協議的客戶端與伺服器的交互:由HTTP客戶端發起一個請求,建立一個到伺服器指定埠(默認是80埠)的TCP連接。HTTP伺服器則在那個埠監聽客戶端發送過來的請求。一旦收到請求,伺服器(向客戶端)發回一個狀態行,比如」HTTP/1.1 200 OK」,和(響應的)消息,消息的消息體可能是請求的文件、錯誤消息、或者其它一些信息。
soap 協議:它描述了一種在分散或分布式的環境中如何交換信息的輕量級協議。soap在http協議的基礎上,一個基於XML的協議。
不同:都是底層的通信協議,請求包的格式不同而已,soap包是XML格式,http純文本格式。
關系:SOAP是個通信協議, SOAP在HTTP協議的基礎上,把編寫成XML的REQUEST參數, 放在HTTP BODY上提交個WEB SERVICE伺服器(SERVLET,ASP什麼的) 處理完成後,結果也寫成XML作為RESPONSE送回用戶端, 為了使用戶端和WEB SERVICE可以相互對應,可以使用WSDL作為這種通信方式的描述文件,利用WSDL工具可以自動生成WS和用戶端的框架文件,SOAP具備把復雜對象序列化捆綁到XML里去的能力。

WCF和WEB API我該選擇哪個?
1、當你想創建一個支持消息、消息隊列、雙工通信的服務時,你應該選擇WCF
2、當你想創建一個服務,可以用更快速的傳輸通道時,像TCP、Named Pipes或者甚至是UDP(在WCF4.5中),在其他傳輸通道不可用的時候也可以支持HTTP。
3、當你想創建一個基於HTTP的面向資源的服務並且可以使用HTTP的全部特徵時(比如URIs、request/response頭,緩存,版本控制,多種內容格式),你應該選擇Web API
4、當你想讓你的服務用於瀏覽器、手機、iPhone和平板電腦時,你應該選擇Web API
SOAP:Simple Object Access Protocol
簡單對象訪問協議(SOAP)是一種輕量的、簡單的、基於 XML 的協議,它被設計成在 WEB 上交換結構化的和固化的信息。 SOAP 可以和現存的許多網際網路協議和格式結合使用,包括超文本傳輸協議( HTTP),簡單郵件傳輸協議(SMTP),多用途網際郵件擴充協議(MIME)。它還支持從消息系統到遠程過程調用(RPC)等大量的應用程序。
HTTP協議: 應用層
TCP協議 : 傳輸層
HTTP協議詳解之響應篇
在接收和解釋請求消息後,伺服器返回一個HTTP響應消息。

HTTP響應也是由三個部分組成,分別是:狀態行、消息報頭、響應正文
1、狀態行格式如下:
HTTP-Version Status-Code Reason-Phrase CRLF
其中,HTTP-Version表示伺服器HTTP協議的版本;Status-Code表示伺服器發回的響應狀態代碼;Reason-Phrase表示狀態代碼的文本描述。
狀態代碼有三位數字組成,第一個數字定義了響應的類別,且有五種可能取值:
1xx:指示信息–表示請求已接收,繼續處理
2xx:成功–表示請求已被成功接收、理解、接受
3xx:重定向–要完成請求必須進行更進一步的操作
4xx:客戶端錯誤–請求有語法錯誤或請求無法實現
5xx:伺服器端錯誤–伺服器未能實現合法的請求
常見狀態代碼、狀態描述、說明:
200 OK //客戶端請求成功
400 Bad Request //客戶端請求有語法錯誤,不能被伺服器所理解
401 Unauthorized //請求未經授權,這個狀態代碼必須和WWW-Authenticate報頭域一起使用
403 Forbidden //伺服器收到請求,但是拒絕提供服務
404 Not Found //請求資源不存在,eg:輸入了錯誤的URL
500 Internal Server Error //伺服器發生不可預期的錯誤
503 Server Unavailable //伺服器當前不能處理客戶端的請求,一段時間後可能恢復正常
eg:HTTP/1.1 200 OK (CRLF)
2、響應報頭後述
3、響應正文就是伺服器返回的資源的內容

㈤ WebAPI與傳統的WebService有哪些不同

  1. WebService是利用HTTP管道實現了RPC的一種規范形式,放棄了對HTTP原生特徵與語義的完備支持;而WebAPI是要保留HTTP原生特徵與語義的同時實現RPC,但WebAPI的實現風格可以是千姿百態,RESTful只是實現了其中一種風格,你也可以定義一種風格,並實現

  2. WebAPI相比WebService更為輕量級、靈活、優化好的情況下,性能更有優勢,但是對復雜或大型業務的描述與使用增加了無形的成本

  3. WebAPI可以更好的利用HTTP與生俱來的特徵,如:緩存、代理、安全、頭信息擴展,反之,部分實現方式WebService無法利用HTTP特徵

  4. 本質上WebAPI與傳統模式的WebService都是實現RPC,遠程服務;傳統的WebService只是利用了HTTP通道,進行獨立的交互,但是這個交互協議可以移植到其他協議下運作,而WebAPI天生與HTTP依賴無法移植

  5. WebService與WebAPI在80埠下工作,都可以繞開默認的網路防火牆限制,因為默認下網路防火牆對系統級埠與協議下的內容是開放的

  6. WebService與RESTfulWebAPI服務端都可以使用反射來實現自動化部署,只是前者更為容易,因為存在標準的規范,後者只是開發WebAPI的推薦風格,實現上需要自己來規范與描述,處理不兼容問題;WebAPI在無反射下的業務實現更為直觀接近MVC模式下的開發的應用,通用,性能更好、更為靈活,能夠直接利用HTTP的動態網頁技術開發介面與功能

  7. WebAPI對於交互數據的格式沒有明確規定,使得其可以更好的使用在特定的軟體運行平台,但是需要開發者對各種格式的支持;傳統的WebService則要求使用服務的平台對數據格式強制適應,服務端的交互數據處理變得更加快捷容易,而增加了不同使用端的對服務交互困難度

㈥ 如何測試webservice和websocket介面

WebSocket是html5新增加的一種通信協議,目前流行的瀏覽器都支持這個協議,例如Chrome,Safari,Firefox,Opera,IE等等,對該協議支持最早的應該是chrome,從chrome12就已經開始支持,隨著協議草案的不斷變化,各個瀏覽器對協議的實現也在不停的更新。該協議還是草案,沒有成為標准,不過成為標准應該只是時間問題了,從WebSocket草案的提出到現在已經有十幾個版本了,目前最新的是版本17,所對應的協議版本號為13,目前對該協議支持最完善的瀏覽器應該是chrome,畢竟WebSocket協議草案也是Google發布的。
1. WebSocket API簡介
首先看一段簡單的javascript代碼,該代碼調用了WebSockets的API。

[javascript] view plain
var ws = new WebSocket(「ws://echo.websocket.org」);

ws.onopen = function(){ws.send(「Test!」); };

ws.onmessage = function(evt){console.log(evt.data);ws.close();};

ws.onclose = function(evt){console.log(「WebSocketClosed!」);};

ws.onerror = function(evt){console.log(「WebSocketError!」);};

這份代碼總共只有5行,現在簡單概述一下這5行代碼的意義。
第一行代碼是在申請一個WebSocket對象,參數是需要連接的伺服器端的地址,同http協議使用http://開頭一樣,WebSocket協議的URL使用ws://開頭,另外安全的WebSocket協議使用wss://開頭。

㈦ 關於WebApi進行測試時出現"沒有 OWIN 身份驗證管理器與此請求相關聯。"

500是伺服器內部錯誤,是不是服務端要檢測授權用戶的訪問呢,請確認是否授權驗證信息傳入正確。

㈧ WebService和Webapi的區別

Web Service特徵
1、它是基於SOAP協議的,數據格式是XML
2、只支持HTTP協議
3、它不是開源的,但可以被任意一個了解XML的人使用
4、它只能部署在IIS上
Web API特徵(紅色標記與WebService區別)
1、這是一個簡單的構建HTTP服務的新框架
2、在.net平台上Web API 是一個開源的、理想的、構建REST-ful 服務的技術
3、不像WCF REST Service.它可以使用HTTP的全部特點(比如URIs、request/response頭,緩存,版本控制,多種內容格式)
4、它也支持MVC的特徵,像路由、控制器、action、filter、模型綁定、控制反轉(IOC)或依賴注入(DI),單元測試。這些可以使程序更簡單、更健壯
5、它可以部署在應用程序和IIS上
6、這是一個輕量級的框架,並且對限制帶寬的設備,比如智能手機等支持的很好
7、Response可以被Web API的MediaTypeFormatter轉換成Json、XML 或者任何你想轉換的格式。
8、Web API非常適合構建移動客戶端服務
以下情況可以考慮用Web API
1、 需要Web Service但是不需要SOAP
2、 需要在已有的WCF服務基礎上建立non-soap-based http服務
3、 只想發布一些簡單的Http服務,不想使用相對復雜的WCF配置
4、 發布的服務可能會被帶寬受限的設備訪問
5、希望使用開源框架,關鍵時候可以自己調試或者自定義一下框架
6、如果服務需要在http協議上,並且希望利用http協議的各種功能
7、如果服務需要被各種客戶端(特別是移動客戶端)調用
小結(僅供參考)
總體來說,兩者都是服務,只是表現形式存在一些差異
webapi多用於基於http請求的服務應用,比如說移動服務端或者需要提供第三方API 服務的場景下
webservice也可以應用於webapi所在的場景,但是如果是我的選擇,我一般是做為內部服務的使用,好比如果一個系統我會用wcf/webservice作為內部子系統間的服務通信,而webapi用於外部服務的請求~

㈨ 北京北大青鳥:net編程開發測試技術

對於大多數的程序員來說,只要掌握相關的編程開發技術就可以,而對於軟體測試來說基本上都是由測試人員來負責的,但是在一些小型的軟體開發公司來說,大部分的開發程序員也是需要兼職測試的,下面java課程培訓機構http://www.kmbdqn.cn/就一起來了解一下,net編程開發的測試技術都有哪些內容。
ASP.NETCoreWebAPI快速入門讓我們一起來快速了解一下.NET和ASP.NETCore。
ASP.NETCore是Microsoft創造的全新Web框架,以便擺脫自ASP.NET1.0以來一直存在的遺留技術。
ASP.NETCore2.1擺脫這些遺留依賴,從頭開始開發框架,因此可以給開發人員提供更高的性能,並且它是為跨平台執行而構建的。
什麼是單元測試?對有些人來說,測試你的軟體可能是一個新的概念,但是它很簡單。
我們從單元測試開始。
維基網路對於它的嚴格定義是「是一種軟體測試方法,對源代碼的獨立單元、一組或多組計算機程序模塊以及相關的控制數據、使用程序和操作程序都進行測試,以了解它們是否適合使用」。
我比較喜歡的是一個外行的解釋,單元測試是保證在你添加了新的功能或進行了缺陷修復之後,你的解決方案中的代碼能像預期一樣執行。
我們測試了一個簡單的代碼示例,來保證它符合我們的預期。
WebAPI要單元測試一些什麼?我非常支持使用單元測試來為你的客戶保證穩定和健壯的API。
但我清楚地知道要如何使用單元測試,知道要測試什麼東西。
我相信,你要恰到好處地對解決方案進行單元測試,而不要做多餘的測試。
這是什麼意思呢?可能我的觀點會引發很多評論,但是我不太注重要100%覆蓋你的測試。
我是否認為我們需要能覆蓋API解決方案重要部分的測試,單獨隔開每個區域,保證每個代碼段都是正確的?當然!我會這么做,這也是我想要討論的。