Hiperspace.Rocks
2.0.0
See the version list below for details.
dotnet add package Hiperspace.Rocks --version 2.0.0
NuGet\Install-Package Hiperspace.Rocks -Version 2.0.0
<PackageReference Include="Hiperspace.Rocks" Version="2.0.0" />
paket add Hiperspace.Rocks --version 2.0.0
#r "nuget: Hiperspace.Rocks, 2.0.0"
// Install Hiperspace.Rocks as a Cake Addin #addin nuget:?package=Hiperspace.Rocks&version=2.0.0 // Install Hiperspace.Rocks as a Cake Tool #tool nuget:?package=Hiperspace.Rocks&version=2.0.0
Hiperspace.Rocks
RocksDB is a remarkable technology, originally developed by Google (LevelDB) and optimized by Facebook for
absolutely lowest possible latency writing to SSD devices.
RocksDB used Log-structured-Merge (LSM) to stream updates while maintaining fast key access.
It is used both as a key/value database, and also as a driver for relational-databases, message-stores,
blockchain and various analytical services. The use of LSM optimizes performance and life of SSD devices.
Hiperspace.Rocks uses RockDB to store elements in durable SSD memory
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. |
-
net8.0
- Hiperspace (>= 2.0.0)
- Microsoft.Bcl.HashCode (>= 6.0.0)
- protobuf-net.Core (>= 3.2.45)
- RocksDB (>= 9.4.0.50294)
- System.Numerics.Tensors (>= 9.0.0)
-
net9.0
- Hiperspace (>= 2.0.0)
- Microsoft.Bcl.HashCode (>= 6.0.0)
- protobuf-net.Core (>= 3.2.45)
- RocksDB (>= 9.4.0.50294)
- System.Numerics.Tensors (>= 9.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
2.1.0 | 46 | 1/24/2025 |
2.0.0 | 38 | 1/14/2025 |
1.3.9 | 91 | 11/15/2024 |
1.3.0 | 102 | 10/5/2024 |
1.2.31 | 146 | 9/15/2024 |
1.2.28 | 110 | 9/7/2024 |
1.2.26 | 103 | 9/1/2024 |
1.2.8 | 111 | 7/15/2024 |
1.2.4 | 119 | 7/4/2024 |
1.2.0 | 115 | 5/30/2024 |
1.0.34 | 126 | 3/14/2024 |
1.0.28 | 128 | 2/26/2024 |
1.0.27 | 125 | 2/16/2024 |
1.0.24 | 165 | 1/11/2024 |
1.0.23 | 154 | 1/1/2024 |
1.0.1 | 153 | 11/18/2023 |
## Overview
This Version is a major refactor, taking into consideration lessons learned from implementing hyperspace with blazer web assembly. It was hoped that .NET 9 would include greater compatibility with runtime type creation (used by protobuf-net for serialisation classes) or that protobuf-net "Ahead of time" (AOT) code generation would be included, but switching to direct protobuf serialization has the additional benefit of simplify usage with {Android, iOS, [Unity](https://unity.com/), zOS, [Meadow](https://www.wildernesslabs.co/)}. **Hiperspace** is the only domain-oriented object mapping technology that can be deployed into these environments, providing transparent sharing of elements between edge devices and server context.
The companion change to [HiLang](HiLang) includes the generation of serialization code for domain models.
### Security enhancement
Previously the predicates provided to **Horizon** filters look an instance of an element and return true if it was within the horizon of the subspace. This has been expanded to allow three types of Horizon Filter
* `new Horizon<Element_Type> ( element => element.Valid == true)' a horizon predicate with the element only
* `new Horizon<Element_Type> ( (element, read) => element.Valid == true || read)' a horizon predicate with a flag to indicate a read operation
* `new Horizon<Element_Type> ( (element, context, read) => element.Valid == true || read)' a horizon predicate with a context parameter and a flag to indicate a read operation
* `new Horizon<Element_Type> ( (element, context, user, read) => element.Valid == true || user?.IsInRole("BULK"))' a horizon predicate with a context parameter, user IPrinciple and a flag to indicate a read operation
Subspace has three labels added to support enhanced security
| Label name | Description |
| ------------- | ------------- |
| Context | Context that the space was opened with e.g. "Front Office", "Risk", "Settlement" |
| User | an optional `IPrincipal` for access control |
| Remote | Was the subspace opened remotely, and security/validation need to be re-applied on the server |
### Protobuf-net
[protobuf-net](protobuf-net) dependency for all .NET assemblies have been changed to [protobuf-net.Core](protobuf-net.Core) which does not include dynamic generation of serialization/deserialization code.
### Web applications
Web applications can take advantage of the HiperSpace shared between the web-client (or desktop applications) and the server session for the user with full lazy loading as required.
Hiperspace elements are transferred using [gRPC-Web](https://github.com/grpc/grpc-web) for web-clients {browser, Android, iOS, [Unity](https://unity.com/)} and [gRPC](https://grpc.io/) for desktop applications.
gRPC-Web packets are exchanged space efficient binary messages without JSON text conversion