Event-driven, in-memory database with advanced .NET types and SQL integration

Platform → TechnologyCore → Real-Time | AI-Ready | .NET | Native | UNSPython 


Real-Time In-Memory Database

FrameworX's real-time core is an in-memory, event-driven database that bridges hard process control (Level 1) and enterprise applications (Level 2/3). When a solution executes, Tags, Templates, and Assets load into memory, maintained by the TServer.exe process running as a Windows Service or on Linux.

For historical context: From DOS to .NET: Forty Years of SCADA/HMI


Event-Driven Architecture

All FrameworX modules interact through a publish-subscribe model, where data changes trigger immediate notifications to subscribed components. This event-driven approach ensures:

  • Deterministic updates - Changes propagate immediately to all subscribers
  • Efficient resource usage - Only active subscriptions consume resources
  • Decoupled architecture - Modules operate independently while sharing data
  • Scalable performance - Event routing optimized for millions of data points

Publish-Subscribe Implementation

When a tag value changes in the real-time database:

  1. The change triggers an event in the TServer process
  2. All subscribed modules receive immediate notification
  3. Each module processes the change according to its logic (alarms, historian, displays)
  4. Updates cascade through dependent calculations and expressions

This pattern appears throughout FrameworX - from device communications publishing to the database, to displays subscribing for updates, to scripts triggering on value changes.

When a solution executes, variables like Tags, Templates, and Assets are loaded into memory, acting as a central point of reference for all functional modules. The TServer.exe process maintains this real-time database, running as either a Windows Service or deployed to Linux and other supported operating systems.

All modules interact with the real-time database through a publish/subscribe model, ensuring consistent data access and efficient performance across the entire system.


Advanced Data Types

FrameworX supports the full spectrum of .NET types, going beyond traditional SCADA primitives:

  • Numeric types - Integer, Long, Double, Decimal (for high-precision calculations)
  • Time types - DateTime with timezone support, TimeSpan for durations
  • Complex types - DataTable for structured data, byte arrays for binary content
  • Special types - Timer types with built-in wave patterns, GUID for unique identifiers

This rich type system enables direct SQL mapping and eliminates conversion overhead when integrating with enterprise systems.

CategoryTypes SupportedUse Cases
Time-basedDateTime, TimeSpan, DateTimeOffsetPrecise timestamps, duration calculations, timezone handling
Complex DataDataTable, JSON objectsRecipe management, batch records, configuration data
BinaryByte arrays, Images, FilesDocument storage, camera snapshots, binary protocols
CollectionsArrays (up to 3 dimensions), Lists, DictionariesMatrix calculations, lookup tables, dynamic sets
StructuredCustom classes, Structures, EnumerationsComplex equipment models, state machines

This type richness enables direct 1-to-1 mapping with SQL databases and seamless integration with enterprise systems without data conversion overhead.


Memory-On-Demand Architecture

For applications with millions of tags, FrameworX implements intelligent memory management:

Dynamic Property Allocation

Tag properties (Min, Max, Engineering Units, Retentive values, etc.) are only allocated when actually configured or accessed. A tag with just a current value uses minimal memory, while a fully-configured tag with alarms, scaling, and history allocates additional structures as needed.

Lazy Loading

Large data structures like templates and complex types load into memory only when referenced, reducing startup time and baseline memory consumption.


Integration with SQL Databases

The real-time database provides bidirectional synchronization with SQL databases:

  • Type compatibility - All RTDB types map directly to SQL types
  • Automatic schema generation - Create SQL tables from tag definitions
  • Transaction support - Batch updates with rollback capability
  • Query integration - SQL results populate real-time tags directly

This seamless integration enables FrameworX to function equally well in:

  • Level 1 Control - Millisecond response with in-memory data
  • Level 2 MES - Production tracking with SQL persistence
  • Level 3 ERP - Business integration with enterprise databases



In this section...