Skip to content

Latest commit

 

History

History
70 lines (57 loc) · 10.3 KB

Domains.md

File metadata and controls

70 lines (57 loc) · 10.3 KB

Domains

The Hydrogen framework comprises of a variety of modules and domains. A domain comprises of a collection of code artefacts that are all logically related in the abstraction they model. Whereas a module is a horizontal-slice of a single-tier, a domain can span across multiple tiers. This is so since a domain may comprise of UI, Business Logic and Data components. A domain can be visualized as a vertical slice through the 3-tier architecture. Modules are a .NET project that typically contain multiple domains each under a sub-folder. Below are domains available in the Hydrogen framework.

Hydrogen Framework Domains

Hydrogen Framework provides modules across all 3 tiers of the architecture. Of significance is the Hydrogen module which provides system-tier functionality that can be used anywhere in an application (from server-end to front-end including within Blazor web-assembly code). This module should be considered like an extension to the system .NET library.

Domain Tiers Module / Location Functionality
Cache System Hydrogen/Cache Caching abstractions, batch caching, caching policies (least-used, largest, smallest, etc), bulk caching, session caching.
Collections System Hydrogen/Collections Arrays, buffers, paged collections, transactional collections, stream mapped collections, transactional collections, observable collections, dictionary implementations (b-tree, etc) as well as merkle trees.
Comparers System Hydrogen/Comparers Assortment of Comparers
Conversion System Hydrogen/Conversion Primarily Endian-based conversion and other.
Cryptography System Hydrogen/Crypto Cryptographic primitives, checksums, encryption, key-derivation functions, post-quantum cryptography.
Encoding System Hydrogen/Encoding Hexadecimal.
Environment System Hydrogen/Environment Support for OS and runtime-level concerns.
Events System Hydrogen/Events Support for all things event.
Exceptions System Hydrogen/Exceptions Collection of exceptions and exception tools.
Extensions System Hydrogen/Extensions Vast collection of extension methods for .NET framework.
Functional System Hydrogen/Functional Support for functional programming including tools for expressions, lambdas, operators.
Introspection System Hydrogen/Conversion Fast reflection library and tools.
IO System Hydrogen/IO Endian-aware IO, file stores and file-system tools.
IoC System, Processing Hydrogen/IoC
Hydrogen.Application/ComponentRegistry
Framework-wide Inversion of Control container (uses TinyIoC under the hood).
Logging System Hydrogen/Logging Support for all things logging.
Math System Hydrogen/Maths Math abstractions and tools, bloom filters, fixed point math, random number generators and other interesting math artefacts.
Memory System Hydrogen/Memory Minor tooling for memory unit conversion and other obscure tools.
Misc System Hydrogen/Misc Miscellaneous tools that don't belong in known domain.
Networking System Hydrogen/Network All things networking, a full P2P abstraction library (TODO) as well tools for URL's, Mimes and POP3.
Objects System Hydrogen/Objects Assortment of tools that deal with Objects.
ObjectSpaces System Hydrogen/ObjectSpace A storage-engine for objects, used within Hydrogen.
Peripherals System Hydrogen/Peripherals Tooling and abstractions for keyboard, mouse and hooks.
Scheduler System Hydrogen/Scheduler A background scheduler to run code based on time rules.
Scopes System Hydrogen/Scopes Broad support for scope-based patterns.
Serialization System Hydrogen/Serialization Broad support for object serialization.
Streams System Hydrogen/Streams Tooling for Streams including bit streams, blocking streams, bounded streams, stream pipelines.
Text System Hydrogen/Text All things text including parsers, inflectors, fast string builder, fluent regex builders, obscure html tools.
TextWriters System Hydrogen/TextWriters Assortment of TextWriter's including console, debug, file-based, etc.
Threading System Hydrogen/Threading Threading tools for multi-threaded applications.
Types System Hydrogen/Types Tools for Type including activation, resolution and switches.
Values System Hydrogen/Values Tools for futures, GUIDs, Enums, Results, Value Ranges.
XML System Hydrogen/XML Tools for XML including deep object serialization.

Hydrogen Domains

Domain Tier Module/Area Notes
Host Presentation, Core Handles the execution and lifecycle of Hydrogen application packages
GUI Core Presentation The core Blazor-based UI. UI Skeleton, bootstrap, navigation, modals, etc
Wizards Presentation Collection of components to compose wizard UI flows via Blazor
Grids Presentation Collection of components for grids in Blazor
Plugins Presentation, Core Plugin extensions for node and GUI
Node Presentation, Core The node daemon/service
Consensus Core Components for consensus rules
Cryptography Core Digital signature schemes for ECDSA and PQC
Object Spaces Core Decentralized database technology
Blockchain Core Consensus-stream based blockchain components
Wallet Core Managing and organizing user keys
Networking Core P2P networking library

Helium Domains

Conceptual Overview (Technical)

This is a technial overview that shows the basic internal components of the Helium system. ConceptualOverview