| Contents |
|---|
The framework imparts the property of extensibility on its applications in addition to being extensible itself via its API. This makes the Spiralcraft framework useful for efficiently building and maintaining domain specific frameworks that are amenable to further specialization and customization.
An Object-Relational data engine in the framework core provides a type system and a common Tuple based data model interface. The data engine is used to model and manipulate relational data, and enables a variety of configuration and persistence related features.
A fluent XML syntax and a powerful expression language help implement a dependency injection mechanism that seeks to maximize expressive power while minimizing complexity.
Using this mechanism, most, and in many cases, all domain specific application structure can be defined in data and encapsulated into re-usable components.
Configuration data can be injected and application structural data can be recomposed from many different sources, including databases and other networked services, in addition to reading it from local XML files.
The type-safe, early-binding dynamic expression language in the spiralcraft.lang Subsystem helps to bind re-usable components into integration environments at load-time, when type checking and data pathway resolution takes place, to avoid delayed error conditions while supporting late integration.
A recursive model-view-controller architecture such as in spiralcraft.textgen and spiralcraft.servlet.webui coupled with this functionality supports the definition of pluggable components which communicate within a shared compositional model, and can publish or consume various data elements or references withing this model.
Spiralcraft Framework components universally support load time binding, and support efficient multi-threaded operation through explicit state management and the minimization of contention points.
The type-safe, early-binding dynamic expression language in the spiralcraft.lang Subsystem helps to bind components into integration environments at load-time, when data pathway resolution takes place, to construct a highly efficient, stateless, thread-safe data structure called a Channel tree which implements the expression.
The Channel tree computes the expression result, and provides a back-channel for bidirectional bindings when all associated transformations are reversible. As a thread-safe data structure, the Channel tree can efficiently conduct parallel processing on iterative data.
Expressions can be reflected, and their structure can be used as metadata for translating an operation to a different form, such as SQL or another language that can be dispatched to a server, or for otherwise optimizing an operation based on local invariants.