Configuration management, shared caches, memory resident databases, games, search
applications, web application persistence; these are just some examples of where Persistore™
may be applied and used in real-world applications.
Because Persistore™ provides simple yet powerful persistence support as well as access to
Windows memory-mapped file functionality, it can be used in any conventional scenario in which this is a requirement.
It is possible to open, access, update, flush, lock/unlock and close memory-mapped
files with almost no loss of generality, using managed .NET code, which means C#,
VB.NET and J#.
By encapsulating Win32 and providng a unique set of pragmatic abstractions, it is
possible to manipulate memory-mapped file data with relative ease. You can now process
almost any file based data using this approach, long recognized as powerful yet
often regarded as a "black art" by many.
However because Persistore™ goes far beyond being a simple encapsulation of Win32, it
may be used in ways that have hitherto not been possible, even in C/C++.
Applications that manipulate large, complex memory based structures such as games
or CAD can now build and manage these structures using Persistore™ and never need to
deal with files in the conventional sense.
It becomes possible for a game to simply load a Persistore™ repository file and immediately
have all data structures present and accessible with no need to iterate through
file data or construct memory data from file records.
Likewise an application may simply Unload a repository and all data is saved as-is, a complete snapshot of the
address space. Because Persistore™ makes repositories fully relocatable, such data may be processed by
seperate applications and utilities, even at the same time.
Applications that need to search elaborate data structures such as search engines,
may now operate directly on memory based data, with no need to address issues of
file opening, reading etc. In fact because a repository may be loaded directly by an
ASP.NET application, it is possible for the web server to access or process data
without ever needing to do IO, this approach to managing external data without the
need to explicitly perform IO operations - we term "NoIO".
Because Persistore™ supports powerful persistence features, applications may store
configration data simply by simply writing .NET objects that encapsulate that data.
The underlying core of Persistore™ manages memory with great
flexibility, so it is easy to modify an object even if its overall size changes.
The SharedString and the powerful Shared<T> classes facilitaties the creation and manipulation
of true shared variables; shared across process address spaces in real-time. Declaring
a page-counter for a website, a very common requirement; has typically required
cumbersome file IO or database interactions. This is now a thing of the past as
Persistore™ enables true persistent shared variables to be easily created, updated and
accessed. Declaring a page counter is now a single line of code and furthermore
this code is fast, thread-safe and completely persistent, we call this NoIO.