@lsmn
2018-04-09T06:49:51.000000Z
字数 898
阅读 5470
语言
微软
.NET
WCF
人们通常会认为,ASP.NET Core比像Windows Communication Foundation(WCF)这样的旧技术性能更好。有开发人员比较了这两种技术,看看这是否与事实相符。
微软花了大量的时间和精力来开发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并不是性能的倒退。如果最初性能未达到预期,可能需要做些分析来优化性能。更重要的是,在尝试改进性能时,务必要找对进行基准测试的地方,以便可以修改适当的代码段。