Configure distributed runtime domains.
Reference → Solution → Runtime → UI | Engine | Troubleshooting | Diagnostics | Client-Server
Runtime Client-Server Domains (Reference): Understanding the client-server architecture and domain separation in FrameworX runtime execution.
FrameworX uses a client-server architecture that clearly separates server-side processes (data acquisition, alarms, historian) from client-side processes (displays, local scripts). This separation enables:
Namespace | Description | Access | Example |
---|---|---|---|
@Server | Server computer properties | Global to all clients | @Server.Date |
@Client | Client computer properties | Local to each client | @Client.Username |
Tag | All project tags | Based on tag domain | Tag.Temperature.Value |
Device | Communication points | Server only | Device.PLC1.Status |
Alarm | Alarm management | Server only | Alarm.Group1.Active |
Dataset | Database access | Both domains | Dataset.Query1.Execute() |
Characteristics:
Use Cases:
Characteristics:
Use Cases:
Module | Domain | Tag Access | Execution |
---|---|---|---|
Devices | Server only | Server tags | TServer.exe |
Alarms | Server only | Server tags | TServer.exe |
Historian | Server only | Server tags | TServer.exe |
Displays | Client only | Server + Client | Client.exe |
Script Tasks | Configurable | Based on domain | Server or Client |
Script Classes | Configurable | Based on domain | Server or Client |
Script Expressions | Automatic | Based on tags used | Auto-allocated |
csharp
// Executes where called (client or server)
@Dataset.Table.Table1.SelectCommand()
csharp
// Always executes on server
@Dataset.Table.Table1.Select += 1
Important: When using client tags in SQL queries or mappings, use synchronous methods from client domain.
Similar to datasets, reports support both synchronous and asynchronous execution:
Method | Domain | File Location | Usage |
---|---|---|---|
SaveCommand() | Calling domain | Server | Direct method call |
Save += 1 | Server only | Server | Property toggle |
Files always save on the server, regardless of where the command originated.
When calling server methods from client scripts, use async/await:
C#:
csharp
public async Task DisplayOpening()
{
await @Script.Class.ServerMain.Method1();
}
VB.NET:
vbnet
Public Async Function DisplayOpening() As Task
Await @Script.Class.ServerMain.Method1()
End Function
Use Server Domain for:
Use Client Domain for: