It is now possible to run TenForce on a Web Farm configuration. This means we can much better handle large volume of concurrent users.
To achieve this some changes to the application were done.
1) Implemented distributed lock mechanism using Redis server (Distributed Lock Manager implementation). New class LockManager was introduced that can transparently change lock implementation from local ( for single-instance configurations without Redis) to distributed, using the same codebase.
2) Added support for managing shared state ( like selection Ids, list NRs) in distributed manner using Redis as storage instead of in-memory handling for single-instance setup.
3) To achieve failover of webfarm (ability to handle request by different server in webfarm when one of server, that initially handled user session, is down) common machine key were introduced in web configuration (instead of autogenerated machine key by default). Except using the same machine keys on every webfarm server instance (it is done in web.config file of the application) no other special configuration steps in the application is required.
4) Also data home folder was configured to use the network share, so all webfarm instances use the same folder.
5) License check mechanism was changed to not taking in account server's MAC address if it's in webfarm configuration.