• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > 推荐8项提高 ASP.NET Web API 性能的技术

推荐8项提高 ASP.NET Web API 性能的技术

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了精通asp.net web api,asp api,asp 获取api json数据,ajax asp/api plus,avzyz api.asp等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

  在本文中,我将介绍8项提高 ASP.NET Web API 性能的技术。

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

  JSON 的序列化对整个 ASP.NET Web API 的性能有着关键性的影响。在我的一个项目里,我从JSON.NET 序列化工具转到了ServiceStack.Text有一年半了。

  我测量过,Web API 的性能提升了20%左右。我强烈建议你去尝试一下这个序列化工具。这里有一些最近的流行序列化工具性能的比较数据。

  来源:theburningmonk

  更新: 似乎It seams that StackOverflow 使用了他们号称迄今为止最快的 JSON 序列化工具 Jil。 一测试数据可参见他们的GitHub page Jil serializer.

 2)从DataReader中手动串行化JSON

  我已经在我的项目中使用过这种方法,并获得了在性能上的福利。

  你可以手动地从DataReader创建JSON字符串并避免不必要的对象创建,这样你就不用从DataReader中取值并写入对象,再从这些对象中取值并使用JSON Serializer产生JSON.

  使用StringBuilder产生JSON,并在结尾处返回StringContent作为在WebAPI中响应的内容。

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

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

 3)尽可能使用其它协议格式 (protocol buffer, message pack)

  如果你能给在你的工程中使用其它消息格式,如 Protocol Buffers或MessagePack 而不是使用JSON这种协议格式。

  你将能给获取到巨大的性能优势,不仅是因为Protocol Buffers 的序列化是非常快,而且比JSON在返回的结果格式化要更快。

 4)实现压缩

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

  对于减少响应包的大小和响应速度,压缩是一种简单而有效的方式。

  这是一个非常有必要使用的功能,你可以查看更多关于压缩的文章在我的博客ASP.NET Web API GZip compression ActionFilter with 8 lines of code.

 5) 使用caching

  在Web API方法中使用output caching意义深远.举例来说,如果大量用户访问同一个一天只改变一次的响应(response)内容。

  如果你想实现手动缓存,例如把用户口令缓存到内存,请参看我的博文Simple way to implement caching in ASP.NET Web API.

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

  手动编写的ADO.NET仍然是从数据库中取值的最快捷的方式。如果Web API的性能对你来说真的很重要,那么就不要使用ORMs.

  你可以看到最流行的ORM之间的性能比较.

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

  带有resultset缓存的LLBLGen很快,但它要重新遍历一遍resultset并重新再内存中实例化对象。

 7)在 Web API 中实现异步方法

  使用异步的 Web API 服务大幅增加 Web API 对于Http 请求的处理数量。

  实现是简单的,只需使用async 的关键字和 将你方法的返回值类型改为Task 即可。

[HttpGet] public async Task OperationAsync() 
{    
await Task.Delay(2000); 
}

 8) 返回多个结果集和集合的组合

  减少传输的次数不仅多数据库有好处,对于 Web API同样 ,你才有可能使用结果集的功能。

  也就是说你可以从DataReader去提取多个结果集 参见以下演示代码:

// read the first resultset 
var reader = command.ExecuteReader(); 
  
// read the data from that resultset 
while (reader.Read()) 
{ 
  suppliers.Add(PopulateSupplierFromIDataReader( reader )); 
} 
  
// read the next resultset 
reader.NextResult(); 
  
// read the data from that second resultset 
while (reader.Read()) 
{ 
  products.Add(PopulateProductFromIDataReader( reader )); 
}
</div>

  你可以在一个 Web API 的一次响应中返回多个对象,试着将你的返回的多个对象进行组合后返回 如下:

class AggregateResult
{
     public long MaxId { get; set; }
     public List<Folder> Folders{ get; set; }
     public List<User>  Users{ get; set; }
}

  这种方式将减少对你的WEB API的HTTP请求。

  感谢你读读这篇文章。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • ASP.NET core Web中使用appsettings.json配置文件的方法
  • 详解ASP.NET WEB API 之属性路由
  • ASP.NET webUploader上传大视频文件相关web.config配置
  • asp.net web页面自定义分页控件使用详解
  • ASP.NET Web.config配置文件详解
  • ASP.NET web.config 配置节点详解
  • ASP.NET Web Api 2实现多文件打包并下载文件的实例
  • ASP.NET web.config中 数据库连接字符串加密解密
  • 在ASP.NET 2.0中操作数据之五十三:在Data Web控件显示二进制数据
  • asp.net基于Web Service实现远程上传图片的方法

相关文章

  • 2017-05-11asp.net控件DataList分页用法
  • 2017-05-11Asp.Net MVC 分页、检索、排序整体实现代码
  • 2017-05-11.net使用自定义类属性实例
  • 2017-05-11阿里云上从ASP.NET线程角度对“黑色30秒”问题的全新分析
  • 2017-05-11ASP.NET中Request.Form中文乱码的解决方法
  • 2017-05-11获取转向地址的URL的源文件(可自定义REFER)
  • 2017-05-11详解如何在ASP.NET Core中使用Redis
  • 2018-08-20OpenCV 3.1.0+VS2015开发环境配置教程
  • 2017-05-11asp.net数据绑定DataBind使用方法
  • 2017-05-11DataTable多列合并问题轻松搞定

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • asp.net GridView控件中实现全选的解决方案
    • jQuery实现倒计时跳转的例子
    • 如何在ASP.NET Core类库项目中读取配置文件详解
    • asp.net 脏字典过滤问题 用正则表达式来过滤脏数据
    • ASP.NET 2.0 中Forms安全认证
    • ASP.NET调用javascript脚本的常见方法小结
    • 调试ASP.NET应用程序的方法和技巧
    • 解读ASP.NET 5 & MVC6系列教程(12):基于Lamda表达式的强类型Routing实现
    • asp.net调用飞信免费发短信(测试有效)
    • Asp.Net生成静态页面的实现方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有