Проблема с Silverlight-enabled WCF service - CodeHelper

Проблема с Silverlight-enabled WCF service

2

Следующая ситуация: Есть Silverlight приложение в котором вызывается метод Silverlight-enabled WCF сервиса. Проблема в следующем: очень большое время от вызова метода из Silverlight приложения, до срабатывания самого метода. Порядка 15-20 секунд. Причём есть особенность: Если сделать подряд несколько вызовов метода сервиса, то они приходят все после 15-20 секунд. Т.е. не каждый через 15 сек, а все вместе (ну то есть с минимальной задерщкой) Может кто чем поможет?

Новые ответы

Новые Лучшие

1

Известно, что первый вызов WCF сервиса занимает несколько больше времени, чем остальные. Это связано с тем, что в момент первого вызова происходит инициализация стека канала, security и т.п. Но обычно речь идет о задержке порядка 1-3 секунд, а никак не 20 секунд. Если проблема тут в WCF, то можно попробовать облегчить binding, убрав неиспользуемые настройки безопасности для канала. Для wsHttpBinding:

<bindings>
    <wsHttpBinding>
        <binding name="Binding1">
            <security mode="None">
                <transport clientCredentialType="None" />
                <message establishSecurityContext="false" />
            </security>
        </binding>
    </wsHttpBinding>
</bindings>

Для netTcpBinding:

<bindings>
  <netTcpBinding>
    <binding name="PortSharingBinding" portSharingEnabled="true">
      <security mode="None" />
    </binding>
  </netTcpBinding>
</bindings>

Также есть мнение, что первый вызов замедляет процедура поиска настроек прокси, прописанных в системе. Если не нужно использовать системное прокси, то его отключение (useDefaultWebProxy="false") должно повысить быстродействие.

Можно попробовать посмотреть логи WCF, чтобы выяснить, на какую операцию уходит больше времени. Для этого можно использовать стандартный инструмент Service Trace Viewer Tool (SvcTraceViewer.exe). В документации сказано, что уровень логгера Information может быть использован для замеров производительности.


v1.7.123.556
© 2009—2010 CodeHelper FAQ | О сайте | Обратная связь | История изменений | Статьи
Creative Commons LicenseМатериалы сайта распространяются под лицензией Creative Commons Attribution-Share Alike 3.0 Unported.