Copyright © Herman Schoenfeld 2005 - Present
A mature, production-ready .NET framework providing a complete foundation for building full-stack applications across desktop, mobile, and web platforms. Originally designed for blockchain systems, Sphere10 Framework has evolved into a comprehensive general-purpose framework offering robust abstractions, advanced data structures, cryptographic primitives, and utilities for high-performance .NET development.
Core Foundation
- Unified Architecture: Consistent patterns for application lifecycle, dependency injection, configuration, and component lifecycle across all platforms
- Enterprise Data Access: Abstracted data layer with support for multiple database engines (SQL Server, SQLite, Firebird, NHibernate) and advanced query building
- Advanced Cryptography: Comprehensive cryptographic implementations including post-quantum algorithms, digital signatures, and multiple hashing algorithms
- Multi-Protocol Networking: TCP, UDP, WebSockets, and RPC frameworks for building distributed systems
- Rich Serialization: Flexible binary serialization, JSON support, and streaming implementations
Application Development
- Desktop UI Framework: Full-featured Windows Forms component library with data binding, validation, and plugin support
- Web Integration: ASP.NET Core middleware, filters, routing, and form components for server-side web applications
- Cross-Platform: Run applications on Windows, macOS, iOS, Android, or .NET Core/5+
- Plugin Architecture: Dynamic plugin loading and lifecycle management for extensible applications
Specialized Features
- Memory Efficiency: Advanced collections, paged data structures, and streaming for handling large datasets
- Graphics & Drawing: Cross-platform drawing utilities and image manipulation
- Performance: Caching, connection pooling, and optimized algorithms
- Testing: Comprehensive testing framework and utilities for unit and integration testing
- .NET 10.0 SDK or later
- An IDE that supports the .NET 10 SDK, such as Visual Studio or JetBrains Rider
- Windows required for
Sphere10.Framework.Windows.*projects - Two solution files available:
src/Sphere10.Framework (CrossPlatform).sln— Cross-platform projects onlysrc/Sphere10.Framework (Win).sln— All projects including Windows-specific
Sphere10 Framework is available as NuGet packages. Install the packages you need:
# Core framework (required)
dotnet add package Sphere10.Framework
# Additional packages as needed
dotnet add package Sphere10.Framework.Application
dotnet add package Sphere10.Framework.Data
dotnet add package Sphere10.Framework.Data.Sqlite
dotnet add package Sphere10.Framework.CryptoEx
dotnet add package Sphere10.Framework.CommunicationsUse Windows with the .NET 10 SDK to build the full package set. Set the numeric release version in VersionPrefix in Directory.Build.props; the package and assembly versions derive from it. CI supplies BuildRevision from its workflow run number, producing file versions such as 3.1.3.114. Local builds default to 3.1.3.0; override with -p:BuildRevision=1 for 3.1.3.1. The NuGet version remains 3.1.3, and assembly identity remains 3.1.3.0 across builds. For prerelease packages, pass -p:Version=3.1.3-preview.1 while keeping VersionPrefix numeric. Use a new package version for each release; published versions cannot be overwritten.
From the repository root, run pack.ps1 to clean and pack the Windows solution in Release configuration. It builds into a staging directory, verifies matching package and symbol files, then replaces the framework packages in nuget-packages. Failed builds leave the previous packages intact; unrelated files and packages are preserved. Packing does not run tests. Use -OutputDirectory to select a different destination.
.\pack.ps1
.\publish.ps1 -IncludeSymbols -WhatIf
.\publish.ps1 -IncludeSymbolspublish.ps1 validates the entire batch before publishing: each package must have a matching ID and version, duplicate versions are rejected, and requested symbols must match their packages. Only Sphere10.Framework, its subpackages, and Sphere10.HashLib4CSharp are selected. Independent packages such as Sphere10.VisualRenderer live under Components/ and are packed separately. Symbols are sent only with -IncludeSymbols. -WhatIf validates and previews without requesting credentials or pushing anything.
The publisher accepts -ApiKey, reads NUGET_API_KEY, or prompts with hidden input. Ordinary publication asks for PowerShell confirmation; use -Confirm:$false for an automated run with credentials supplied. -Source, -SymbolSource, and -PackagesDirectory override the default feeds and package directory. Both scripts support Windows PowerShell 5.1 and PowerShell 7 and resolve default paths relative to the script location.
The Tools namespace is a defining architectural feature providing a global, IntelliSense-discoverable collection of static utility methods across the entire framework. Simply type Tools. to explore all available operations:
- Tools.Crypto — Hashing, signatures, key derivation
- Tools.Text — String manipulation, validation, generation
- Tools.Collection — Collection operations, filtering, transformation
- Tools.FileSystem — File I/O, directory management, temp files
- Tools.Reflection — Type inspection, member discovery, attributes
- Tools.Json / Tools.Xml — Data serialization
- Tools.Memory — Buffer operations, memory allocation
- Tools.Maths — Mathematical utilities and RNG
- And 30+ more...
- Tools.WinTool (Windows) — Registry, services, event logging, privileges
- Tools.Web.Html / Tools.Web.AspNetCore (Web) — HTML utilities, ASP.NET Core integration
- Tools.iOSTool (iOS) — iOS-specific operations
- Tools.Data / Tools.Sqlite / Tools.MSSQL (Database) — Database provider utilities
using Sphere10.Framework;
// Discovery-first pattern — IntelliSense shows all available tools
byte[] hash = Tools.Crypto.SHA256(data);
string sanitized = Tools.Text.RemoveWhitespace(input);
var connection = Tools.Sqlite.Create(connectionString);
bool running = Tools.WinTool.IsServiceRunning("MyService");For the complete Tools reference, see docs/tools-reference.md.
Note: The
blackhole/directory contains archived/experimental projects (DApp framework) that are not part of the active framework. These are retained for reference but are not maintained or included in NuGet packages.
The Sphere10 Framework consists of 45+ projects organized by category within src/, tests/, and utils/:
| Project | Purpose | NuGet |
|---|---|---|
| Sphere10.Framework | General-purpose core library with utilities for caching, collections, cryptography, serialization, streaming, and more | |
| Sphere10.Framework.Application | Application lifecycle, dependency injection, command-line interface, and presentation framework | |
| Sphere10.Framework.Communications | Multi-protocol networking layer: TCP, UDP, WebSockets, RPC, and pipes | |
| Sphere10.Framework.Generators | C# source generators for compile-time code generation | |
| Sphere10.Framework.Runtime | Runtime environment detection, diagnostics, and platform utilities | |
| Sphere10.HashLib4CSharp | Hashing library with support for MD5, SHA, BLAKE2, CRC, checksums, and more |
| Project | Purpose | NuGet |
|---|---|---|
| Sphere10.Framework.CryptoEx | Extended cryptography: Bitcoin (SECP256k1), elliptic curves, hash functions, post-quantum algorithms | |
| Sphere10.Framework.Consensus | Blockchain consensus mechanisms and validation rules framework |
| Project | Purpose | NuGet |
|---|---|---|
| Sphere10.Framework.Data | Data access abstraction layer with ADO.NET enhancements, SQL query building, CSV support | |
| Sphere10.Framework.Data.Sqlite | SQLite implementation for embedded databases | |
| Sphere10.Framework.Data.Firebird | Firebird database implementation | |
| Sphere10.Framework.Data.MSSQL | Microsoft SQL Server implementation | |
| Sphere10.Framework.Data.NHibernate | NHibernate ORM integration |
| Project | Purpose | NuGet |
|---|---|---|
| Sphere10.Framework.Windows | Windows platform integration: registry, services, event logging | |
| Sphere10.Framework.Windows.Forms | Windows Forms UI framework and components | |
| Sphere10.Framework.Windows.Forms.Sqlite | Windows Forms with SQLite data binding | |
| Sphere10.Framework.Windows.Forms.Firebird | Windows Forms with Firebird data binding | |
| Sphere10.Framework.Windows.Forms.MSSQL | Windows Forms with SQL Server data binding | |
| Sphere10.Framework.Windows.LevelDB | LevelDB integration for fast key-value storage |
| Project | Purpose | NuGet |
|---|---|---|
| Sphere10.Framework.Web.AspNetCore | ASP.NET Core integration: middleware, filters, routing, forms | |
| Sphere10.Framework.Drawing | Cross-platform graphics and drawing utilities | |
| Sphere10.Framework.NUnit | NUnit testing utilities and framework test support | |
| Sphere10.Framework.NUnit.DB | Database-specific NUnit testing utilities | |
| Sphere10.Framework.iOS | Xamarin.iOS integration for native iOS apps | |
| Sphere10.Framework.Android | Xamarin.Android integration for native Android apps | |
| Sphere10.Framework.macOS | Xamarin.macOS integration for native macOS apps |
The tests/ directory contains 2000+ comprehensive unit and integration tests covering all framework subsystems:
GitHub Actions discovers tests automatically and runs independent partitions with concise failure summaries. Each partition publishes its test counts and failures, with full logs and TRX reports available as artifacts. Failed partitions can be rerun independently. See the CI test guide for adding tests, finding failures, and reproducing a partition locally.
| Test Project | Purpose |
|---|---|
| Sphere10.HashLib4CSharp.Tests | Tests for hashing algorithms |
| Sphere10.Framework.Communications.Tests | Networking and RPC tests |
| Sphere10.Framework.CryptoEx.Tests | Cryptography implementation tests |
| Sphere10.Framework.Data.Tests | Database access layer tests |
| Sphere10.Framework.Tests | Core framework tests |
| Sphere10.Framework.Windows.LevelDB.Tests | LevelDB integration tests |
| Sphere10.Framework.Windows.Tests | Windows platform tests |
| Project | Purpose |
|---|---|
| Sphere10.Framework.Windows.Forms | Comprehensive Windows Forms UI framework with data binding, validation, and component library |
| Sphere10.Framework.Windows.Forms.Sqlite | Windows Forms with SQLite data binding and persistence |
| Sphere10.Framework.Windows.Forms.MSSQL | Windows Forms with SQL Server data binding and persistence |
| Sphere10.Framework.Windows.Forms.Firebird | Windows Forms with Firebird data binding and persistence |
| Project | Purpose |
|---|---|
| Sphere10.Framework.Web.AspNetCore | ASP.NET Core integration with middleware, filters, routing, and form components |
| Sphere10.Framework.Drawing | Cross-platform graphics and drawing utilities for all platforms |
- Documentation Home — Complete documentation index
- Getting Started Guide — Quick orientation for new developers
- Tools Reference — Complete Tools.* namespace catalog
- Real-World Examples — Practical patterns from test suite
- Framework Architecture — Design philosophy, layers, subsystems
- Framework Domains — Catalog of 40+ specialized domains
- 3-Tier Architecture — Architectural patterns
- Code Styling — Coding standards and conventions
- Dynamic Merkle Trees
- Abstract Merkle Signatures (AMS)
- Winternitz Abstracted Merkle Signatures (WAMS)
- Faster and Smaller Winternitz Signatures
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-feature) - Commit your changes
- Push to your branch
- Open a Pull Request
Please follow the Code Styling Guidelines.
Sphere10 Framework is distributed under the MIT License.
More information: MIT License
