The following diagram represents the internal structure of a uniGUI server. Each uniGUI server has a single copy of ServerModule, which is created once per server, along with multiple sessions, which are dynamically created and destroyed according to user activity. A uniGUI session contains a specialized DataModule called MainModule, which is automatically created for each session. It also contains a Form named MainForm, which is the main entry point for the Web application. If the project contains a LoginForm, it will be activated before the MainForm to provide a reliable and secure way for user login. As expected, each session can contain several additional DataModules and Forms.
Each time a user opens a new instance of the Web application, the server creates a new session. A session will remain active until the user logs out, closes the browser/tab, or it times out. Each session keeps a complete state of the running Web application so that uniGUI sessions are called stateful. You can consider each session as a private copy of your Web application, which co-exists with other sessions in the server address space but is isolated from all others. The server creates each session with a unique "Session Id", which it uses for correctly associating client requests with sessions (the Session Id is always part of the AJAX requests).
If the uniGUI application is just an ISAPI module, the running server will instantiate one ISAPI Handler. If there is no Web server, the running server will enable its internal Web server. In both cases, all the requests to the active Web server will eventually go to the correct session.