Persistore™ has been designed for the .NET developer to more easily implement
persistence and more rapidly harness the unique capabilities of shared memory on
Windows®. Persistore™
enables applications
to create and manage
Repository and
Mapping objects. These classes
encapsulate unique and powerful memory management capabilities; these capabilities
serve as the foundation for innovative high performance object persistence and in-memory
data processing.
For example you may use a Repository to easily persist .NET objects, by writing,
reading or updating the objects to/from the Repository; full control over
the serialization method (Binary, SOAP etc) is provided. The persisted object is
then safely stored within non-volatile shared memory and is thus rapidly accessible yet transparently
backed to the disk file system.
Any number of objects may be written to a Repository, and there is
flexible support for labelling persisted objects and to subsequently reinstantiate (deserialize) them, even between multiple processes and threads; Persistore even provides its
own directory features making it straightforward to structure and organize your
data.
By implementing our own derived Provider classes for ASP.NET authentication, roles,
settings, session state and personalization, Morantex make it possible to take an
existing ASP.NET site, make a few small changes to it's web.config file and immediately
begin to benefit from the products features like an in-memory data repository, resilience
and simplicity.
Persistore™ includes its own hierarchical storage much like a file system, enabling you
to create directories in which objects, shared variables and raw data may be organized. When an instance
of a class is persisted for the first time, Persistore™ creates a directory tree that
corresponds to the objects class inheritance hierarchy and version; by exploiting
directories, completely separate instances of object repositories for the same class
may be created in separate directories.
Directories may be manually or programatically created, moved, renamed and deleted
just like with a conventional file system.
Furthermore, Persistore™ makes it very easy to create
Directories may be manually or programatically created, moved, renamed and deleted
just like with a conventional file system.
Furthermore, Persistore™ makes it very easy to create SharedArea objects; raw areas
of unmanaged shared memory that may be concurrently
accessed by unsafe code in multiple processes. Such functionality allows the design
of high performance memory resident yet resilient, data repositories. Persistore™ also
provides the Area class for simple regions of unmanaged and unlabelled shared memory.
In additon to SharedArea, classes for various shared value types are supported
with SharedString and the generic Shared<T> class. Arrays
of these types
are also supported as is a SharedStream (derived from System.IO.Stream)
class, each of which is readily accessible by both safe and unsafe code and include full support
for locking making them suitable for demanding multithreaded settings.
Use of unsafe Area and SharedArea objects, allows persistent memory
resident data to be updated and referenced in-situ, avoding the overhead of serialization;
thus providing opportunities
for achieving
The Mapping class encapsulates a conventional memory mapped file and provides
managed access and control as well as several uniquely useful features for processing
files using memory mapping from C# and VB.NET, including their use by ASP.NET applications.
Because Persistore™ is built on top of the Operating Systems VM Manager and Memory Mapped
File functionality, all data within a repository is resilient, even if the application
(or even IIS)
should crash or terminate unexpectedly.
If your looking for flexible and resilient management for your applications persistence
needs, if your looking for fast in-memory data repositories, or if you
simply want to fully exploit the full potential of the fastest form of inter-process communication
on both 32-bit
and 64-bit platforms, then you need to have a serious look at Persistore™.
hould crash or terminate unexpectedly.
If your looking for flexible and resilient management for your applications persistence
needs, if your looking for fast in-memory data repositories, or if you
simply want to fully exploit the full potential of the fastest form of inter-process communication
on both 32-bit
and 64-bit platforms, then you need to have a serious look at Persistore™.