A Microsoft investiu muito tempo e energia no desenvolvimento do ASP.NET Core. O resultado é uma plataforma aberta em que os novos recursos se beneficiam do envolvimento aberto com uma comunidade de desenvolvedores mais ampla. É de se esperar que o ASP.NET Core tenha um desempenho melhor do que as tecnologias mais antigas, como o Windows Communication Foundation (WCF). Recentemente, descobriu-se que talvez esse não seja o caso.
O desenvolvedor Erik Heemskerk publicou recentemente um artigo descrevendo sua investigação sobre o desempenho do ASP.NET Core em relação ao WCF. Em seu experimento, foi escrito um projeto simples que usava cada tecnologia para "levantar um servidor web localmente e medir quanto tempo leva para criar uma solicitação, enviá-la, desserializá-la, gerar uma resposta, enviá-la de volta e desserializar a resposta".
Para sua surpresa, o WCF foi aproximadamente 1/3 mais rápido do que o projeto equivalente em ASP.NET Core, quando o payload é um GUID simples. Percebendo que a diferença pode ser devido ao WCF ser serializado para XML enquanto o ASP.NET Core está usando JSON, Heemskerk forçou o ASP.NET Core a serializar para XML. Isso resultou em uma melhoria, mas o WCF permaneceu muito mais rápido. Para tentar uma abordagem diferente, Heemskerk aumentou a carga para um tamanho de objeto mais realista e usou o MessagePack com o ASP.NET Core. Aqui, finalmente, o ASP.NET foi um pouco mais rápido que o WCF.
Mas a história não termina aí. O desenvolvedor Josh Bartley examinou o trabalho de Heemskerk e viu que outras mudanças poderiam ser feitas para melhorar os resultados do ASP.NET. Sua análise indicou que talvez o benchmarking para ASP.NET não estivesse incluindo exatamente o mesmo trabalho quando comparado ao trabalho do código WCF.
Portanto, o ASP.NET Core não é um retrocesso no desempenho. Se o desempenho inicial não atender às expectativas, algumas análises poderão ser necessárias para melhorá-lo. A maior lição ao tentar melhorar o desempenho é garantir que a área certa seja selecionada para o benchmarking, de modo que as partes certas do código sejam melhoradas.