Является ли WCF Durable Services правильным выбором?
Мы находимся в процессе выбора лучшего метода для сохранения состояния между сеансами / вызовами WCF. Мы обнаружили, что WCF DurableService удовлетворяет наши потребности.
Мы хотели бы знать, нормально ли это для интенсивного использования. Мы ожидаем более 1000 сеансов, и каждый сеанс будет сохранять около 100 КБ данных (сериализованный формат XML), при этом сохранится сложный объект (только 1 объект).
Учитывая наши требования, является ли WCF DurableServices правильным решением?
1 ответ
DurableService использует встроенные функции WCF для передачи состояния (переменных уровня модуля) клиенту, используя либо BasicHttpContextBinding, либо WSHttpContextBinding. Механизм сохранения зависит от HTTP-куки на клиенте или мыльных заголовков для хранения сериализованных данных между вызовами. Ваш средний размер сообщения мыла будет 100 КБ плюс любая полезная нагрузка, которую параметры операции сохраняют при каждом вызове. Вы также должны спроектировать семантику CanCreateInstance и CompleteInstance в свои контракты операций и логику приложения, чтобы правильно удалить полезную нагрузку сеанса.
DurableService, скорее всего, не будет очень производительным, учитывая ваш сценарий 1000+ одновременных сеансов и 100 КБ сеансовых данных. По умолчанию службы WCF, которые разрешают сеансы любого типа, ограничены 16 одновременными сеансами. Вы можете увеличить это число, но я сомневаюсь, что вы сможете обрабатывать более 1000 сеансов на одном экземпляре сервера. Для такого количества сеансов вам, вероятно, потребуется использовать аппаратный или программный балансировщик нагрузки для нескольких хост-серверов, что делает поддержание работы сессии незадействованной даже при так называемой поддержке соответствия сеансов. Я бы рекомендовал использовать дизайн службы без учета состояния для каждого вызова и сделать код приложения ответственным за управление состоянием.