WCF
TODO
- web garden? defaultapppool/maxprocesses 4
Зачем
Windows Communication Foundation (WCF) — это платформа для создания приложений, ориентированных на службы.
Возможности:
- Transaction
- Config edit tool
- Several types of hosting are available
- Self Hosting in console application
- Windows Form application hosting
- Windows Service hosting
- WAS hosting
- IIS hosting
- WCF on IIS7 process flow
Производительность
- параллелизм
- Под сеансом понимается скоррелированный набор всех сообщений, переданных между двумя конечными точками.
- Создание экземпляров сервиса означает управление временем жизни определенных пользователем
- __объектов сервиса
- и связанных с ними объектов InstanceContext
- параллелизм означает управление количеством потоков, одновременно выполняющихся в некотором контексте InstanceContext.
- ограничивается (Throttling) MaxConcurrentSessions, MaxConcurrentCalls, MaxConcurrentInstances
Мониторинг
Диагностика Troubleshooting
Настройки
Производительность:
- InstanceContextMode - когда создаются новые объекты службы
- Определяет, общается ли во время сеанса клиентский прокси-сервер:
- с одним и тем же экземпляром объекта сервера (режим PerSession) - default
- или каждый раз, когда использует-ся объект сервера, создается его новый экземпляр, а затем удаляется, как только вызов метода заканчивается (режим PerCall)
- параллелизм не имеет значения, так как каждое сообщение обрабатывается новым InstanceContext и, следовательно, никогда не активируется более одного потока в InstanceContext
- или создается только один экземпляр сервера, независимо от количества клиентов (режим Single )
- все запросы клиентов за время существования приложения обрабатываются одним контекстом InstanceContext
- Определяет, общается ли во время сеанса клиентский прокси-сервер:
- ConcurrencyMode
- Имеет значение для InstanceContextMode.Single
- Single приводит к тому, что система не дает экземплярам службы одновременно выполнять более одного потока, что позволяет избежать решения вопросов многопоточности.
- Multiple означает, что объекты службы могут выполняться несколькими потоками одновременно. В этом случае необходимо обеспечить безопасность потоков.
- Сеансы Session Mode
- Required
- Allowed
- NotAllowed - откажитесь от сессий для масштабирования - Stateless
Throttling:
- MaxConcurrentSessions - максимальное количество сеансов, которые может принимать объект сервиса ServiceHost одновременно
- default=10 100*Processor Count
- Сервис отклоняет подключения новых клиентов, пока не будет закрыт один из текущих сеансов.
- MaxConcurrentCalls - максимальное количество обрабатываемых запросов в одном экземляре сервиса ServiceHost
- default=16*число процессоров
- MaxConcurrentInstances - максимальное количество одновременно выполняющихся объектов InstanceContext в службе
- default=int.MaxValue if not specified, otherwise 116*Processor Count
- Sum of maxConcurrentCalls and maxConcurrentSession