看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!
微软花了大量的时间和精力来开发 ASP.NET Core。结果,这个开放的平台提供了许多首次出现的新特性,而且从广大开发社区的开放参与中收获颇多。人们通常会认为,ASP.NET Core 比像 Windows Communication Foundation(WCF)这样的旧技术性能更好。近期看来,情况似乎不是这样,让我们深入地了解一下。
近日,开发者 Erik Heemskerk发表了一篇文章,介绍他对ASP.NET Core 与WCF 进行的深入比较。在他的试验中,他使用每种技术编写了一个简单的项目,“启动一个本地Web 服务器,测量从请求创建、发送、反序列化到响应生成、返回、反序列化这整个过程所用的时间”。
出乎他的意料,当负载是一个简单的GUID 时,WCF 比对等的ASP.NET Core 项目快大约三分之一。Heemskerk 认为,这可能是由于WCF 序列化成XML,而ASP.NET Core 使用JSON,所以他强制ASP.NET Core 序列化成XML。这提升了性能,但WCF 仍然要快许多。Heemskerk 又尝试了另外一种方法,他把负载增加到一个更符合现实对象大小的规模,并在ASP.NET Core 项目中使用了MessagePack。总算,ASP.NET 比WCF 稍微快了点。
但是,这还没完。开发者Josh Bartley 后来检查了Heemskerk 的项目,看看是否还能做些其他的修改来改进ASP.NET 的结果。他的分析表明,也许ASP.NET 的基准测试过程和WCF 的基准测试过程并不完全相同。
因此,ASP.NET Core 并不是性能的倒退。如果最初性能未达到预期,可能需要做些分析来优化性能。更重要的是,在尝试改进性能时,务必要找对进行基准测试的地方,以便可以修改适当的代码段。
评论