WCF не обязательно медленный, но если приложение не разработано должным образом, приложение может быть медленным. Это можно сравнить с нагрузкой в несколько тысяч фунтов на спортивный автомобиль. Машина - это быстрая машина, но на самом деле она не используется должным образом.
Во-первых, я бы сказал, что вы должны минимизировать объем данных, отправляемых по проводам (подробнее об этом позже). Когда вы подключитесь к сети, вы получите намного лучшую производительность, если будете использовать TCP или именованные каналы вместо HTTP. См. Выбор транспорта . HTTP прост, так как большинство сетей настроено так, что он легко проходит, но он не предназначен для больших наборов данных.
Если задержка возникает из-за вычислений, то единственное, что сделает служба WCF, - это переложит обработку с сервера на клиент. В конечном итоге это может быть полезно - или даже необходимо - если вы планируете иметь большое количество одновременных запросов к серверу, но, как вы заметили, это не обязательно означает сокращение времени для конечного пользователя. То, на чем вы должны сосредоточиться, это минимизировать время расчета.
Трудно дать конкретику, так как вы мало что рассказали о том, что запрашивается, что возвращается и что делают вычисления. Тем не менее, я получил впечатляющие результаты с большими наборами данных, выгружая код с сервера приложений на сервер базы данных через Visual Studio SQL Server Projects . Поскольку .NET и MSSQL оба написаны на CLR, вы можете написать собственные объекты базы данных (например, пользовательские функции ) в C # или VB или любом другом языке CLR и развернуть их непосредственно в базе данных. Затем вы можете использовать эти функции в своих запросах, и они будут очень быстрыми, поскольку они скомпилированы в собственный SQL. Я видел разницу в размерах между запуском C # в приложении и запуском той же функции в базе данных.