Three client architectures delivering the same solution to different operational contexts
Platform → UI Technology → Clients | WebAssembly | Symbols | Drawing | Responsive | Layouts
Client Architecture Overview
FrameworX provides three client types addressing different operational requirements: Desktop clients for control rooms, Web clients for browser access, and Mobile clients for workforce mobility. All run the same solution with technology-appropriate adaptations.
Client Types, deployment options:
- Web & Mobile (HTML5) - Browser-based, no install required
- Desktop - Rich Client (installed) or Smart Client (ClickOnce)
- API Clients - API-based data access
Client Comparison
| Feature | Rich Client | Smart Client | Web HTML5 |
|---|---|---|---|
| Platform | Windows/Linux | Windows only | All platforms |
| Installation | Local install | ClickOnce | None |
| Performance | Highest | High | Standard |
| Task Switching | Can block | Can block | Cannot block |
| Updates | Manual | Automatic | Immediate |
| Redundancy | Automatic | Automatic | Manual |
| Threading | Multi | Multi | Single |
| Port | 3101 (ServiceClient) | 3101 (ServiceClient) | 80/443 (HTTP) |
Rich Client
Desktop application with maximum control and performance.
Client Types - Rich Client | |
|---|---|
Characteristics
| Advantages
|
Requirements
| Deployment |
Smart Client
One-click deployment with automatic updates.
Client Types - Smart Client | |
|---|---|
Characteristics
| Advantages
|
Requirements
| Deployment |
Browsers Compatible with ClickOnce
Historically, only Internet Explorer (IE) ever had built-in ClickOnce support.
ClickOnce was a Microsoft deployment technology (introduced with .NET 2.0) that allowed launching and installing Windows apps directly from a link (.application file).
IE could recognize and execute those files without add-ons.
Browsers that require a plugin/extension
Microsoft Edge (Legacy / Chromium)
No native support.
Possible with the “ClickOnce for Microsoft Edge” extension (Microsoft-published).
Extension is available in the Microsoft Edge Add-ons store.
Google Chrome
No native support.
Possible with the “Meta4 ClickOnce Launcher” or “ClickOnce for Google Chrome” extension.
Extensions pass the .application file to the local ClickOnce handler.
Mozilla Firefox
No native support.
Possible with the “FFClickOnce” add-on (popular for years).
Other browsers (Opera, Safari, etc.)
Generally no plugin support for ClickOnce.
Workarounds involve downloading the .application file manually and running it with the Windows ClickOnce runtime.
- Not recommended, the RichClient installation is better in this scenario, or the web client.
Web & Mobile Clients
Web and Mobile clients compile .NET code to WebAssembly, running in any modern browser without plugins. They share the same technology but optimize for different interactions:
Note: "Mobile" refers to mobile workforce scenarios (tablets, phones, field devices), not exclusively smartphones.
Browser-based access with zero installation.
Client Types - WebAssembly Client | |
|---|---|
Characteristics
| Advantages
|
Limitations
| Deployment |
Deployment Considerations
Client Type Deployment Considerations | ||
Rich Client DeploymentBest for:
| Smart Client DeploymentBest for:
| Web Client DeploymentBest for:
|
Security Features
| Feature | RichClient | SmartClient | WebClient |
|---|---|---|---|
| User Authentication | |||
| Task Switch Block | |||
| Encrypted Comm | HTTPS | ||
| Sandbox Mode | |||
| Certificate Auth |
Web Client URLs and Automation
Bookmark and Share a Display
Available from FrameworX 10.1.6. The web client (HTML5) shows the current display in the browser address bar as a URL fragment, for example http://<ServerIP>/html5/#Pipeline. Bookmark the URL or share it in email, chat or a wiki page. Opening the link loads the same display directly.
To open the display with parameter values, add them to the fragment after a question mark, for example http://<ServerIP>/html5/#Pipeline?Territory=usa. Separate several parameters with &.
Declare a parameter. A display accepts only the parameters its author declares. To declare one, reference it by name in braces in the binding where you use it, for example a label bound to {#Territory}. This reference is both the declaration and the list of accepted names. A parameter name the display does not reference has no effect. The braces are required. A bare #Territory renders as literal text.
Security. A URL parameter only fills in a value the display author declared. A value matching a tag name is treated as plain text and never reads the tag. A link to a display the signed-in user is not allowed to view does not open it.
Links keep working when a tool adds a query string before the fragment, for example http://<ServerIP>/html5/?x=1#Pipeline?Territory=usa.
From FrameworX 10.1.6, the web client ignores the startupobjectlist URL argument. The Rich Client and the Smart Client keep accepting it at start-up.
Automated Testing of Web Displays
Available from FrameworX 10.1.6. Each control rendered in the web client carries its element Uid in the data-fx-name attribute of its HTML element. Browser automation tools, including AI-driven test tools, find a control by name with a selector such as [data-fx-name="StartButton"], then click it or read its value. The attribute stays the same across page reloads. Elements without a Uid have no data-fx-name attribute.
Display Rendering Pipeline
All clients receive identical display definitions but render using platform-appropriate technologies:
Server Redundancy
Desktop clients implement automatic failover:
- Primary server monitored continuously
- Automatic switch on failure (< 1 second)
- No operator intervention required
- Seamless return when primary recovers
Web/Mobile clients require external load balancers or manual server selection due to browser security restrictions preventing direct socket control.
Deployment Guidelines
| Use Case | Recommended Client | Reasoning |
|---|---|---|
| Control Room | Rich Client | Task switching block, maximum performance |
| Engineering Station | Smart Client | Auto-updates, full functionality |
| Management Office | Web Client | Zero installation, IT friendly |
| Field Operations | Mobile Client | Touch interface, works on tablets |
| Remote Access | Web Client | Works through firewalls, HTTPS |
Unified Development Model
Despite different runtime technologies, development remains unified:
- Single display configuration for all clients
- Same tag database connections
- Identical scripting (C# compiled appropriately)
- Unified security model
The system determines which displays appear on each client type, enabling optimized experiences without duplicate development.
Performance Guidelines
Rich/Smart Clients
- Multi-threaded execution
- Local graphics acceleration
- Binary communication
- Cached resources
Web Clients
- Single-threaded JavaScript
- Browser rendering engine
- HTTP overhead
- No local caching
Troubleshooting
Connection Issues:
- Verify server port access
- Check firewall settings
- Test network connectivity
- Review server logs
Update Problems:
- Clear browser cache (Web)
- Reset ClickOnce cache (Smart)
- Reinstall client (Rich)
Performance Issues:
- Check network latency
- Monitor server load
- Verify client resources
- Review display complexity
In this section...