Common Utilities
A comprehensive collection of .NET utilities and extensions designed to reduce boilerplate code and accelerate development. These packages provide solutions for common cross-cutting concerns in modern .NET applications.
Package Overview
AdaptArch.Common.Utilities
Core utilities package - Dependency-free foundation providing:
- Extension Methods: Enhanced DateTime, Dictionary, Task, JSON, and Exception utilities
- Encoding: RFC-compliant Base32 and Base64Url encoding
- Global Abstractions: Testable wrappers for DateTime, Random, and UUID generation
- Delay & Jitter: Exponential backoff and retry strategies
- PubSub System: In-process publish-subscribe messaging
- Synchronization: Thread-safe exclusive access utilities
- Job Contracts: Background job execution interfaces
AdaptArch.Common.Utilities.Configuration
Configuration extensions for Microsoft.Extensions.Configuration
:
- Custom Configuration Providers: Integrate any data source as configuration
- Dynamic Reloading: Automatic configuration updates with polling
- JSON Parsing: Handle complex nested configuration formats
- Error Handling: Robust exception handling with retry policies
AdaptArch.Common.Utilities.Hosting
Hosting extensions for Microsoft.Extensions.Hosting
:
- Background Jobs: Periodic and delayed job execution
- Message Handler Discovery: Automatic registration of pub/sub handlers
- Dependency Injection: Enhanced service scope management
- Configuration-Driven: JSON-based job scheduling and configuration
AdaptArch.Common.Utilities.AspNetCore
ASP.NET Core extensions:
- Response Rewriting: Middleware for transforming HTTP responses
- HttpContext Extensions: Utility methods for request processing
- Performance Optimized: Stream-based processing without buffering
AdaptArch.Common.Utilities.Redis
Redis integrations built on StackExchange.Redis
:
- Distributed PubSub: Redis-backed message hub implementation
- Serialization: Pluggable JSON and custom serialization
- Connection Management: Simplified Redis connection setup
Key Benefits
✅ Testability: All time, random, and external dependencies are abstracted
✅ Performance: Optimized with Span<T> and minimal allocations
✅ Reliability: Built-in error handling, timeouts, and retry mechanisms
✅ Flexibility: Multiple implementations for different scenarios
✅ Standards Compliance: RFC-compliant encoding and industry best practices
✅ Thread Safety: Safe concurrent operations with proper synchronization
✅ Dependency Injection Ready: Full integration with Microsoft.Extensions.DependencyInjection
✅ Production Ready: Includes logging, proper disposal, and resource management
Quick Start
// Install the core package
dotnet add package AdaptArch.Common.Utilities
// Basic usage examples
using AdaptArch.Common.Utilities.Extensions;
using AdaptArch.Common.Utilities.GlobalAbstractions.Contracts;
using AdaptArch.Common.Utilities.PubSub.Contracts;
// Extension methods
var timestamp = DateTime.UtcNow.ToUnixTimestampMilliseconds();
var config = settings.GetValueOrDefault("ApiUrl", "https://localhost");
ProcessDataAsync().Forget(); // Fire-and-forget
// Testable abstractions
public class OrderService
{
public OrderService(IDateTimeProvider dateTime, IMessageHubAsync messageHub) { }
}
// PubSub messaging
await messageHub.PublishAsync("order.created", orderEvent);
messageHub.Subscribe<OrderEvent>("order.created", HandleOrder);
Getting Started
- Install packages based on your needs
- Register services in your DI container
- Explore the documentation for detailed usage examples
- Check the API reference for complete method signatures
These utilities form the foundation for building robust, maintainable, and testable .NET applications.