成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

8 種提升 ASP.NET Web API 性能的方法

開發(fā) 后端 前端
ASP.NET Web API 是非常棒的技術(shù)。編寫 Web API 十分容易,以致于很多開發(fā)者沒有在應(yīng)用程序結(jié)構(gòu)設(shè)計上花時間來獲得很好的執(zhí)行性能。在本文中,我將介紹8項提高 ASP.NET Web API 性能的技術(shù)。

ASP.NET Web API 是非常棒的技術(shù)。編寫 Web API 十分容易,以致于很多開發(fā)者沒有在應(yīng)用程序結(jié)構(gòu)設(shè)計上花時間來獲得很好的執(zhí)行性能。

在本文中,我將介紹8項提高 ASP.NET Web API 性能的技術(shù)。

1) 使用最快的 JSON 序列化工具

JSON 的序列化對整個 ASP.NET Web API 的性能有著關(guān)鍵性的影響。 在我的一個項目里,我從 JSON.NET 序列化工具轉(zhuǎn)到了 ServiceStack.Text 有一年半了。

我測量過,Web API 的性能提升了20%左右。 我強烈建議你去嘗試一下這個序列化工具。這里有一些最近的流行序列化工具性能的比較數(shù)據(jù)。

SerializerPerformanceGraf

來源: theburningmonk

更新: 似乎It seams that StackOverflow 使用了他們號稱迄今為止最快的 JSON 序列化工具 Jil。 一測試數(shù)據(jù)可參見他們的GitHub page Jil serializer.

2)從DataReader中手動串行化JSON

我已經(jīng)在我的項目中使用過這種方法,并獲得了在性能上的福利。

你可以手動地從DataReader創(chuàng)建JSON字符串并避免不必要的對象創(chuàng)建,這樣你就不用從DataReader中取值并寫入對象,再從這些對象中取值并使用JSON Serializer產(chǎn)生JSON.

使用StringBuilder產(chǎn)生JSON,并在結(jié)尾處返回StringContent作為在WebAPI中響應(yīng)的內(nèi)容。

  1. var response = Request.CreateResponse(HttpStatusCode.OK);  
  2. response.Content = new StringContent(jsonResult, Encoding.UTF8, "application/json");  
  3. return response; 

你可以在 Rick Strahl’s blog查看更多方法

3)盡可能使用其它協(xié)議格式 (protocol buffer, message pack)

如果你能給在你的工程中使用其它消息格式,如 Protocol Buffers 或MessagePack   而不是使用JSON這種協(xié)議格式。

你將能給獲取到巨大的性能優(yōu)勢,不僅是因為Protocol Buffers 的序列化是非常快,而且比JSON在返回的結(jié)果格式化要更快。

4) 實現(xiàn)壓縮

在你的ASP.NET Web API中使用GZIP 或 Deflate 。

對于減少響應(yīng)包的大小和響應(yīng)速度,壓縮是一種簡單而有效的方式。

這是一個非常有必要使用的功能,你可以查看更多關(guān)于壓縮的文章在我的博客 ASP.NET Web API GZip compression ActionFilter with 8 lines of code.

5) 使用caching

 在Web API方法中使用output caching意義深遠.舉例來說,如果大量用戶訪問同一個一天只改變一次的響應(yīng)(response)內(nèi)容。

如果你想實現(xiàn)手動緩存,例如把用戶口令緩存到內(nèi)存,請參看我的博文 Simple way to implement caching in ASP.NET Web API.

6) 盡可能地使用典型的 ADO.NET

手動編寫的ADO.NET仍然是從數(shù)據(jù)庫中取值的最快捷的方式。如果Web API的性能對你來說真的很重要,那么就不要使用ORMs.

你可以看到***的ORM之間的性能比較.

ORMMapper 

Dapper 和hand-written fetch code 很快,果不其然,所有的ORM都比這三種慢.

帶有resultset緩存的LLBLGen 很快,但它要重新遍歷一遍resultset并重新再內(nèi)存中實例化對象。

7)在 Web API 中實現(xiàn)異步方法

使用異步的 Web API 服務(wù)大幅增加 Web API 對于Http 請求的處理數(shù)量。

實現(xiàn)是簡單的,只需使用 async  的關(guān)鍵字和 將你方法的返回值類型改為 Task 即可。

  1. [HttpGet]    
  2. public async Task OperationAsync()    
  3. {     
  4.     await Task.Delay(2000);    

8) 返回多個結(jié)果集和集合的組合

減少傳輸?shù)拇螖?shù)不僅多數(shù)據(jù)庫有好處,對于 Web API同樣 ,你才有可能使用結(jié)果集的功能。

也就是說你可以從DataReader去提取多個結(jié)果集 參見以下演示代碼:

  1. // read the first resultset   
  2. var reader = command.ExecuteReader();   
  3.     
  4. // read the data from that resultset   
  5. while (reader.Read())   
  6. {   
  7.     suppliers.Add(PopulateSupplierFromIDataReader( reader ));   
  8. }   
  9.     
  10. // read the next resultset   
  11. reader.NextResult();   
  12.     
  13. // read the data from that second resultset   
  14. while (reader.Read())   
  15. {   
  16.     products.Add(PopulateProductFromIDataReader( reader ));   

你可以在一個 Web API 的一次響應(yīng)中返回多個對象,試著將你的返回的多個對象進行組合后返回 如下:

  1. public class AggregateResult  
  2. {  
  3.      public long MaxId { get; set; }  
  4.      public List<Folder> Folders{ get; set; }  
  5.      public List<User>  Users{ get; set; }  

這種方式將減少對你的WEB API的HTTP請求。

感謝你讀讀這篇文章。

英文原文:8 ways to improve ASP.NET Web API performance

譯文鏈接:http://www.oschina.net/translate/8-ways-improve-asp-net-web-api-performance

責(zé)任編輯:林師授 來源: 開源中國 編譯
相關(guān)推薦

2012-03-12 13:54:56

ASP.NET

2009-07-23 15:11:43

XML Web服務(wù)方法ASP.NET

2009-07-24 16:05:05

調(diào)用Web ServiASP.NET

2009-07-20 17:07:30

提高ASP.NET性能

2012-06-20 14:34:03

jQuery

2009-12-10 09:23:13

ASP.NET開發(fā)

2009-08-03 17:35:07

ASP.NET WebASP.NET編程工具

2009-07-28 13:26:34

Render方法ASP.NET

2009-07-28 15:53:43

ASP.NET Web

2009-07-29 17:16:47

2009-02-23 15:55:29

ASP.NET.NET性能提升

2011-11-03 10:07:09

ASP.NET

2011-10-14 10:37:54

ASP.NET

2012-12-24 09:23:27

ASP.NETC#IIS

2009-07-27 13:43:11

Web.config文ASP.NET

2024-12-05 08:14:41

2009-07-20 16:04:37

ASP.NET fra

2009-07-22 09:11:02

Action方法ASP.NET MVC

2024-08-01 09:58:33

API性能機制

2009-07-23 15:18:30

創(chuàng)建XML Web服務(wù)ASP.NET
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 色婷婷综合久久久中字幕精品久久 | 日本超碰在线 | 97成人免费 | 亚洲区视频 | 中文字幕乱码视频32 | 亚洲精品无 | 欧美8一10sex性hd | 久草在线| 国产69久久精品成人看动漫 | 成人免费在线播放视频 | 天天影视综合 | 激情小视频 | 国产精品国产自产拍高清 | 国产精品一区二区在线播放 | 日韩欧美字幕 | 亚洲成人国产精品 | 久草福利 | 国产精品国产三级国产aⅴ无密码 | 精品久久久久久亚洲精品 | 日韩精品在线免费观看 | 午夜视频在线播放 | 男女视频在线观看免费 | 黄色日本视频 | 国产毛片久久久久久久久春天 | 午夜精品久久久久久久久久久久 | 欧美一区在线看 | 九色www| 欧美亚州综合 | 国产成人高清视频 | 日韩视频一级 | 91精品国产综合久久久动漫日韩 | 国产精品色av | 日韩免费一区二区 | 欧美日韩国产一区二区三区 | 久久国 | 成人在线小视频 | 一区二区三区亚洲精品国 | 亚洲欧美一区二区三区在线 | 亚洲精品一 | 亚洲精品一区二三区不卡 | 一区在线视频 |