В настоящее время у меня есть 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
EDIT: добавлена диаграмма для ясности (надеюсь)
ИЗМЕНИТЬ 2: Спасибо за ответы/комментарии. К сожалению, это не похоже на то, что из этого вопроса выйдет что-то убедительное. Мы с коллегами в конечном итоге решили поверить, что это просто отличная разница в эффективности версий Framework. Мы закончили реструктуризацию веб-службы, так что расчет происходит только в WebAPI.