Подобных вопросов много, но все они касаются медлительности на стороне сервера — это все о проблемах на стороне клиента.
1-й вызов занимает 900 мс. Второй вызов занимает 20 мс.
Я сократил медлительность при первом вызове serviceProxy.Method(). Fiddler сообщает, что фактическое время на линии для 1-го вызова составляет 16 мс. Поскольку второй вызов намного быстрее, я вынужден сделать вывод, что проблема возникает с некоторым кодом создания экземпляра на стороне клиента WCF, который срабатывает при вызове первого метода.
Факты:
- Подключение к серверу происходит через wsHttpBinding
- Объекты закодированы с помощью библиотеки Protobufs.NET Марка Гравелла.
- Вопросы здесь, на SO, которые действительно решают проблемы на стороне клиента, такие как мои, рекомендуют сделать 1-й вызов в фоновом потоке, чтобы просто избавиться от медлительности. Однако это устранение симптомов, а не основной причины.
Есть идеи, почему замедление происходит на 1-м посте?