提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|使用教程|编辑:龚雪|2014-07-18 09:42:58.000|阅读 4185 次
概述:知名博主、软件工程师Radenko Zec分享了八个方法来提升ASP.NET Web API性能。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
ASP.NET Web API是一项伟大的技术。编写Web API十分容易,以至于许多开发者都不愿花时间去想办法架构应用程序以获得更好的性能。
这篇文章中,我个人总结出了用于改善 ASP.NET Web API 性能的八项技术。
JSON serialization 能极大的影响ASP.NET Web API的整体性能。在一年半的时间里,我已经从某个项目中的JSON.NET serializer转到了 。
现在的我的Web API 响应已经提升了约20%。强烈建议尝试这个serializer。以下是几个热门serializers最新的性能对比:
我将这种方法用在我的产品项目上,获得了很多性能方面的益处。
不必从 DataReader读取值后填充对象,然后转而又从那些对象读取值,最后使用某个JSON Serializer生成JSON。我是说你可以直接手动从DataReader 创建JSON串,从而避免创建不必要的对象。 先是用 StringBuilder生成JSON,最后你返回StringContent 作为你webAPI中的反馈内容。
var response = Request.CreateResponse(HttpStatusCode.OK); response.Content = new StringContent(jsonResult, Encoding.UTF8, "application/json"); return response;
更加详细的内容请看
如果你能够在项目中使用其他格式如 Protocol Buffers 或MessagePack 而不是 JSON 的话那就赶紧换了吧。这样你可以获取极大的性能提升,这不仅是因为Protocol Buffers更快,还因为格式比JSON小,所以响应速度也就更迅速。
在你的ASP.NET Web API使用 GZIP 或 Deflate压缩。压缩是文件包瘦身和加速的一种行之有效的方法。
该功能必须要有,具体内容可查阅我先前的博文 .
要是觉得有道理的话,在你的Web API methods试试输出缓存(output caching )。
如果你想要实现手动缓存,例如将用户口令缓存到内存上,可以参考我的博文.
手动编码ADO.NET仍是从数据库获取数据的最快捷方式。如果你真的很看重Web API的性能的话就不要使用ORMs。
可以参考下列这几个热门ORMs的最新性能对比:
Dapper和hand-written fetch code 如同预期那样,速度都非常快。所有ORMs都比前面三个慢。
LLBLGen 速度也很快,但它先得获取结果集然后再重新从内存实现对象。
用异步Web API服务能够增加Web API 所能处理的并发HTTP请求的数量。
要实现很简单。该操作用async关键词标记,返回类型变为Task。
[HttpGet] public async Task OperationAsync() { await Task.Delay(2000); }
减少至数据库和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 )); }
在一次 Web API响应中返回尽可能多的对象。 试着把所有对象结合成一个汇总的:
public class AggregateResult { public long MaxId { get; set; } public List<Folder> Folders{ get; set; } public List<User> Users{ get; set; } }
通过这种方法就能减少你的Web API的HTTP请求数量。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn
文章转载自:慧都控件网本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢