FractalDataWorks.Configuration
0.1.3-alpha-gc2820fa97d
See the version list below for details.
dotnet add package FractalDataWorks.Configuration --version 0.1.3-alpha-gc2820fa97d
NuGet\Install-Package FractalDataWorks.Configuration -Version 0.1.3-alpha-gc2820fa97d
<PackageReference Include="FractalDataWorks.Configuration" Version="0.1.3-alpha-gc2820fa97d" />
<PackageVersion Include="FractalDataWorks.Configuration" Version="0.1.3-alpha-gc2820fa97d" />
<PackageReference Include="FractalDataWorks.Configuration" />
paket add FractalDataWorks.Configuration --version 0.1.3-alpha-gc2820fa97d
#r "nuget: FractalDataWorks.Configuration, 0.1.3-alpha-gc2820fa97d"
#:package FractalDataWorks.Configuration@0.1.3-alpha-gc2820fa97d
#addin nuget:?package=FractalDataWorks.Configuration&version=0.1.3-alpha-gc2820fa97d&prerelease
#tool nuget:?package=FractalDataWorks.Configuration&version=0.1.3-alpha-gc2820fa97d&prerelease
FractalDataWorks Developer Kit
A comprehensive .NET library framework providing foundational abstractions and implementations for building scalable, maintainable enterprise applications.
Overview
The FractalDataWorks Developer Kit is a layered architecture framework that provides:
- Core abstractions for services, configuration, validation, and results
- Service patterns with built-in validation, logging, and error handling
- Configuration management with validation and registry patterns
- Enhanced messaging using the EnhancedEnums pattern for type-safe, maintainable messages
- Extensible architecture supporting dependency injection, data access, hosting, and tools
Architecture
The framework follows a progressive layered architecture:
Layer 0.5 - Core Foundation (No Dependencies)
- FractalDataWorks.net - Core abstractions and base types (targets netstandard2.0 for maximum compatibility)
IFractalService
- Base service abstractionIFractalConfiguration
- Configuration abstractionIServiceResult
&FractalResult<T>
- Consistent result patternServiceMessage
- Enhanced enum-based messaging systemIFractalValidator<T>
- Validation abstractions
Layer 1 - Domain-Specific Abstractions
FractalDataWorks.Services - Service patterns and base implementations
ServiceBase<TConfiguration, TCommand>
- Base service with validation and loggingIConfigurationRegistry<T>
- Configuration management pattern- Built-in command validation and error handling
FractalDataWorks.Configuration - Configuration providers and patterns
ConfigurationBase<T>
- Self-validating configuration base classConfigurationProviderBase
- Provider pattern implementationConfigurationSourceBase
- Configuration source abstractions
FractalDataWorks.Connections - Data and messaging connection abstractions
- Connection interfaces for various data sources
- Retry and resilience patterns
FractalDataWorks.DependencyInjection - DI container abstractions
- Container-agnostic dependency injection patterns
- Service registration extensions
FractalDataWorks.Tools - Common utilities and helpers
- Extension methods and utility classes
- Common helper functions
FractalDataWorks.Hosts - Web and worker host abstractions
- Host service abstractions
- Background service patterns
FractalDataWorks.Data - Data abstractions and common types
- Repository patterns
- Data access abstractions
Git Workflow
This repository follows a git-flow branching strategy:
- master - Production-ready releases only
- develop - Main development branch
- feature/ - Feature branches
- beta/ - Beta release branches
- release/ - Release candidate branches
- experimental/ - Experimental features
Setting up the Development Branch
After cloning, create the develop branch from master:
git checkout -b develop
git push -u origin develop
Creating Feature Branches
Always branch from develop:
git checkout develop
git pull origin develop
git checkout -b feature/your-feature-name
Building and Testing
Prerequisites
- .NET 10.0 Preview SDK
- Visual Studio 2022 Preview or VS Code
Build Commands
# Restore packages
dotnet restore
# Build solution
dotnet build
# Run tests
dotnet test
# Pack NuGet packages
dotnet pack
Configuration-Specific Builds
# Debug build (default)
dotnet build
# Alpha build
dotnet build -c Alpha
# Beta build
dotnet build -c Beta
# Release build
dotnet build -c Release
Package Dependencies
Each Layer 1 package depends on FractalDataWorks.net. Additional dependencies:
- FractalDataWorks.DependencyInjection also depends on FractalDataWorks.Configuration
- FractalDataWorks.Hosts also depends on FractalDataWorks.Services
Testing
All projects use xUnit.v3 for testing. Test projects follow the naming convention:
FractalDataWorks.[Package].Tests
Run tests with:
dotnet test
CI/CD
This repository includes both Azure Pipelines and GitHub Actions workflows for CI/CD.
Azure Pipelines
- Configuration:
azure-pipelines.yml
- Publishes to Azure Artifacts feed:
dotnet-packages
GitHub Actions
- Configuration:
.github/workflows/ci.yml
- Publishes to GitHub Packages and optionally Azure Artifacts
Contributing
- Create a feature branch from develop
- Make your changes
- Ensure all tests pass
- Submit a pull request to develop
Key Features
Service Pattern
public class MyService : ServiceBase<MyConfiguration, MyCommand>
{
public MyService(ILogger<MyService> logger, IConfigurationRegistry<MyConfiguration> configs)
: base(logger, configs)
{
}
protected override async Task<FractalResult<TResult>> ExecuteCore<TResult>(MyCommand command)
{
// Implementation with automatic validation and error handling
}
}
Configuration Management
public class MyConfiguration : ConfigurationBase<MyConfiguration>
{
public string ConnectionString { get; set; }
public int Timeout { get; set; }
protected override FluentValidation.Results.ValidationResult ValidateCore()
{
var validator = new MyConfigurationValidator();
return validator.Validate(this);
}
}
Enhanced Messaging
// Type-safe, discoverable service messages
_logger.LogError(ServiceMessages.InvalidConfiguration.Format("Missing connection string"));
_logger.LogInformation(ServiceMessages.ServiceStarted.Format(ServiceName));
// Messages are strongly-typed with consistent formatting
var message = ServiceMessages.ConnectionFailed;
_logger.LogError(message.Format(retries, errorMessage));
Result Pattern
// Consistent error handling across all services
var result = await service.Execute<Customer>(command);
if (result.IsSuccess)
{
return Ok(result.Value);
}
else
{
return BadRequest(result.Error);
}
Code Quality
The framework enforces code quality through:
- Analyzers: StyleCop, AsyncFixer, Meziantou.Analyzer, Roslynator
- Threading Analysis: Microsoft.VisualStudio.Threading.Analyzers
- XML Documentation: Required for all public/protected members
- Testing: xUnit v3 with parallel execution
- Coverage: Coverlet integration for code coverage
- Build Configurations: Progressive quality gates from Debug to Release
Quality Gate Configurations
Configuration | Warnings as Errors | Analyzers | Code Style | Use Case |
---|---|---|---|---|
Debug | No | Disabled | No | Fast development |
Experimental | No | Minimal | No | Early prototyping |
Alpha | No | Minimal | No | Initial testing |
Beta | Yes | Recommended | Yes | Development |
Preview | Yes | Recommended | Yes | Pre-release |
Release | Yes | Recommended | Yes | Production |
License
Apache License 2.0 - see LICENSE file for details.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- FluentValidation (>= 12.0.0)
- FractalDataWorks.net (>= 0.1.3-alpha-gc2820fa97d)
- Microsoft.Extensions.Configuration (>= 10.0.0-preview.6.25358.103)
- Microsoft.Extensions.Configuration.Binder (>= 10.0.0-preview.6.25358.103)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.0-preview.6.25358.103)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.0-preview.6.25358.103)
- Microsoft.Extensions.Options (>= 10.0.0-preview.6.25358.103)
NuGet packages (4)
Showing the top 4 NuGet packages that depend on FractalDataWorks.Configuration:
Package | Downloads |
---|---|
FractalDataWorks.Connections
Package Description |
|
FractalDataWorks.Services
Package Description |
|
FractalDataWorks.DependencyInjection
Package Description |
|
FractalDataWorks.Connections.Stream
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last Updated |
---|---|---|
0.1.44-alpha-gd2bf3f4538 | 96 | 8/9/2025 |
0.1.42-alpha-g345959b890 | 110 | 8/8/2025 |
0.1.41-alpha-ga32832a9b9 | 110 | 8/8/2025 |
0.1.40-alpha-gfc34918491 | 123 | 8/8/2025 |
0.1.35-alpha-gcdb5cd2e4e | 180 | 8/8/2025 |
0.1.26-alpha-gf64f8fdedf | 468 | 7/24/2025 |
0.1.25-alpha-g87df5f233b | 464 | 7/23/2025 |
0.1.24-alpha-g91e50a832c | 465 | 7/23/2025 |
0.1.20-alpha-ge511ae2524 | 508 | 7/23/2025 |
0.1.5-alpha-g6de9a08280 | 514 | 7/22/2025 |
0.1.3-alpha-gc2820fa97d | 123 | 7/17/2025 |
0.1.2-alpha-g88aa8ffb70 | 114 | 7/16/2025 |
0.1.1-alpha-g482604bba8 | 119 | 7/14/2025 |