手机版

推荐8种提高ASP.NET网络应用编程接口性能的技术

时间:2021-09-10 来源:互联网 编辑:宝哥软件园 浏览:

在本文中,我将介绍提高ASP.NET网络应用编程接口性能的八项技术。

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

JSON的序列化对整个ASP.NET网络应用编程接口的性能有着至关重要的影响。在我的一个项目中,我从JSON.NET序列化工具转移到了服务堆栈。发了一年半的文字。

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

来源:theburningmonk

更新:似乎表明StackOverflow使用了Jil,他们声称这是迄今为止最快的JSON序列化工具。测试数据见他们的GitHub页面Jil序列化器。

2)从数据读取器手动序列化JSON

我在我的项目中使用了这种方法,并获得了性能优势。

您可以从数据读取器手动创建JSON字符串,并避免不必要的对象创建,因此您不需要从数据读取器获取值并编写对象,然后从这些对象中获取值并使用JSON序列化程序来生成JSON。

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

var响应=请求。CreateResponse(HttpStatusCode。OK);回应。内容=新字符串内容(jsonResult,Encoding。UTF8,‘application/JSON’);返回响应;你可以在Rick Strahl的博客上看到更多的方法

3)尽可能使用其他协议缓冲区、消息包)

如果您可以在项目中使用其他消息格式,例如协议缓冲区或消息包,而不是JSON。

您将获得巨大的性能优势,不仅因为协议缓冲区的序列化非常快,而且在格式化返回的结果方面也比JSON更快。

4)实现压缩

在你的ASP.NET网络应用编程接口中使用GZIP或放气。

压缩是减小响应包大小和响应速度的简单有效的方法。

这是一个非常必要的功能。您可以在我的博客中查看更多关于压缩的文章ASP.NET web API gzip压缩动作过滤器,包含8行代码。

5)使用缓存

在Web API方法中使用输出缓存具有深远的意义。例如,如果大量用户访问每天仅更改一次的响应内容。

如果你想实现手动缓存,比如在内存中缓存用户密码,请参考我的博文《在ASP.NET Web API中实现缓存的简单方法》。

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

手动编写的ADO.NET仍然是从数据库中获取值的最快方法。如果网络应用编程接口的性能对你真的很重要,那就不要使用表单。

您可以看到最流行的表单之间的性能比较。

Dapper和手写获取代码都很快,果然,所有的ORMs都比这三个慢。

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

7)在网络应用编程接口中实现异步方法

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

实现很简单,只需使用关键字async,并将方法的返回值类型更改为Task。

公共异步任务操作异步(){等待任务。延迟(2000年);} 8)返回多个结果集和结果集的组合

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

也就是说,您可以从DataReader中提取多个结果集。请参见以下演示代码:

//读取第一个resultset var reader=命令。ExecuteReader();//读取结果集中的数据。Read()) {供应商。add(PopulateSupplieFromIdata reader(reader));} //读取下一个resultset读取器。next result();//读取第二个结果集中的数据。Read()) { products。add(populateproductfromidadareader(reader));}您可以在Web API的一次响应中返回多个对象。尝试组合您返回的多个对象,如下所示:

类AggregateResult { public long MaXid { get;设置;}公共列表文件夹文件夹{获取设置;}公共列表用户{获取设置;}}这种方式将减少对你的网络应用编程接口的超文本传送协议请求。

感谢你读读这篇文章。

版权声明:推荐8种提高ASP.NET网络应用编程接口性能的技术是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。