WCF比运行相同代码的WebAPI慢得多

Cal*_*Kid 11 .net c# wcf asp.net-web-api

我目前有2个暴露的端点.第一个是WebAPI(.NET 4.6).第二个是WCF(.NET 3.5).它们都能够执行相同的计算,但是WCF平均慢10倍.有问题的计算代码包含在dll中,我们称之为core.dll.此dll还公开WCF端点,并由ASP.NET站点使用.webapi dll,我们称之为api.dll引用core.dll,并由SPA使用.计算可以由任一客户端触发.平均而言,使用我的测试数据,WCF服务大约需要4.5秒来执行计算,其中WebAPI大约需要450毫秒(或大约快10倍).

我应该注意,所有数据库调用都是在测量的时间范围之外完成的.事先检索所有数据,并在计算完成后进行所有更新.

在所有条件相同的情况下,我有什么理由可以看到纯处理速度的巨大差异?

我100%确定两个客户端的数据是相同的,并且它们都收到相同的结果.

WEBAPI Controller
    Service
        GRAB DATA
        start timer
        Process(DATA) -- the same code/class as below
        end timer
        UPDATE DATA
    Service return
WEBAPI Controller return

WCF Endpoint
    Service
        GRAB DATA
        start timer
        Process(DATA) -- the same code/class as above
        end timer
        UPDATE DATA
    Service return
WCF Endpoint return
Run Code Online (Sandbox Code Playgroud)

编辑:为清晰起见添加图表(希望如此)

编辑2:感谢您的回答/评论.不幸的是,这个问题似乎没有任何结论.我和我的同事最终选择相信这只是Framework版本效率的纯粹差异.我们最终重组了Web服务,以便只在WebAPI中进行计算.

小智 2

我认为这是几件事的结合。即 REST (WebAPI) 与 SOAP (WCF) 的性能,尤其取决于发送/接收的数据量。事实上,在 ASP.NET 中托管 WCF 服务,我认为该服务在被调用之前实际上并未运行或初始化,因此您将有一些初始化时间。