Anton Sidorov homepage

Bookmark this to keep an eye on my project updates!

Follow me on GitHub

WCF

TODO

Зачем

Windows Communication Foundation (WCF) — это платформа для создания приложений, ориентированных на службы.

Возможности:

Производительность

ability

  • параллелизм
    • Под сеансом понимается скоррелированный набор всех сообщений, переданных между двумя конечными точками.
    • Создание экземпляров сервиса означает управление временем жизни определенных пользователем
      • __объектов сервиса
      • и связанных с ними объектов InstanceContext
        • параллелизм означает управление количеством потоков, одновременно выполняющихся в некотором контексте InstanceContext.
        • ограничивается (Throttling) MaxConcurrentSessions, MaxConcurrentCalls, MaxConcurrentInstances

Мониторинг

Диагностика Troubleshooting

Настройки

Производительность:

  • InstanceContextMode - когда создаются новые объекты службы
    • Определяет, общается ли во время сеанса клиентский прокси-сервер:
      • с одним и тем же экземпляром объекта сервера (режим PerSession) - default
      • или каждый раз, когда использует-ся объект сервера, создается его новый экземпляр, а затем удаляется, как только вызов метода заканчивается (режим PerCall)
        • параллелизм не имеет значения, так как каждое сообщение обрабатывается новым InstanceContext и, следовательно, никогда не активируется более одного потока в InstanceContext
      • или создается только один экземпляр сервера, независимо от количества клиентов (режим Single )
        • все запросы клиентов за время существования приложения обрабатываются одним контекстом InstanceContext
  • ConcurrencyMode
    • Имеет значение для InstanceContextMode.Single
    • Single приводит к тому, что система не дает экземплярам службы одновременно выполнять более одного потока, что позволяет избежать решения вопросов многопоточности.
    • Multiple означает, что объекты службы могут выполняться несколькими потоками одновременно. В этом случае необходимо обеспечить безопасность потоков.
  • Сеансы Session Mode

Throttling:

  • MaxConcurrentSessions - максимальное количество сеансов, которые может принимать объект сервиса ServiceHost одновременно
    • default=10 100*Processor Count
    • Сервис отклоняет подключения новых клиентов, пока не будет закрыт один из текущих сеансов.
  • MaxConcurrentCalls - максимальное количество обрабатываемых запросов в одном экземляре сервиса ServiceHost
    • default=16*число процессоров
  • MaxConcurrentInstances - максимальное количество одновременно выполняющихся объектов InstanceContext в службе