Является ли WCF Durable Services правильным выбором? - PullRequest
1 голос
/ 15 марта 2011

Мы находимся в процессе выбора лучшего метода для сохранения состояния между сеансами / вызовами WCF. Мы обнаружили, что WCF DurableService удовлетворяет наши потребности.

Мы хотели бы знать, нормально ли это для интенсивного использования. Мы ожидаем более 1000 сеансов, и каждый сеанс будет сохранять около 100 КБ данных (сериализованный формат xml), а сложный объект (только 1 объект) будет сохранен.

Учитывая наши требования, является ли WCF DurableServices правильным решением?

1 Ответ

4 голосов
/ 15 марта 2011

DurableService использует встроенные функции WCF для передачи состояния (переменных уровня модуля) клиенту с помощью BasicHttpContextBinding или WSHttpContextBinding. Механизм сохранения зависит от HTTP-куки на клиенте или мыльных заголовков для хранения сериализованных данных между вызовами. Ваш средний размер сообщения мыла будет 100 КБ плюс любая полезная нагрузка, которую параметры операции сохраняют при каждом вызове. Вы также должны спроектировать семантику CanCreateInstance и CompleteInstance в свои контракты операций и логику приложения, чтобы правильно удалить полезную нагрузку сеанса.

DurableService, скорее всего, не будет очень производительным, учитывая ваш сценарий 1000+ одновременных сеансов и 100 КБ данных сеансов. По умолчанию службы WCF, которые разрешают сеансы любого типа, ограничены 16 одновременными сеансами. Вы можете увеличить это число, но я сомневаюсь, что вы сможете обрабатывать более 1000 сеансов на одном экземпляре сервера. Для такого количества сеансов вам, вероятно, потребуется использовать аппаратный или программный балансировщик нагрузки для нескольких хост-серверов, что делает поддержание работы сессии незадействованной даже при так называемой поддержке соответствия сеансов. Я бы рекомендовал использовать дизайн службы без учета состояния для каждого вызова и сделать код приложения ответственным за управление состоянием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...