As of the latest architecture update, the SourceFlow.Cloud.Core project has been consolidated into the main SourceFlow project. This architectural change simplifies the dependency structure and reduces the number of separate packages required for cloud integration.
The consolidation was driven by several factors:
- Simplified Dependencies - Eliminates an intermediate package layer
- Reduced Complexity - Fewer projects to maintain and version
- Better Developer Experience - Single core package contains all fundamental functionality
- Cleaner Architecture - Cloud abstractions are part of the core framework
Before:
src/
├── SourceFlow/ # Core framework
├── SourceFlow.Cloud.Core/ # Shared cloud functionality
└── SourceFlow.Cloud.AWS/ # AWS integration (depends on Cloud.Core)
After:
src/
├── SourceFlow/ # Core framework with integrated cloud functionality
│ └── Cloud/ # Cloud abstractions and patterns
│ ├── Configuration/ # Bus configuration and routing
│ ├── Resilience/ # Circuit breaker patterns
│ ├── Security/ # Encryption and data masking
│ ├── Observability/ # Cloud telemetry
│ ├── DeadLetter/ # Failed message handling
│ └── Serialization/ # Polymorphic JSON converters
└── SourceFlow.Cloud.AWS/ # AWS integration (depends only on SourceFlow)
All cloud core functionality has been moved from SourceFlow.Cloud.Core.* to SourceFlow.Cloud.*:
| Old Namespace | New Namespace |
|---|---|
SourceFlow.Cloud.Core.Configuration |
SourceFlow.Cloud.Configuration |
SourceFlow.Cloud.Core.Resilience |
SourceFlow.Cloud.Resilience |
SourceFlow.Cloud.Core.Security |
SourceFlow.Cloud.Security |
SourceFlow.Cloud.Core.Observability |
SourceFlow.Cloud.Observability |
SourceFlow.Cloud.Core.DeadLetter |
SourceFlow.Cloud.DeadLetter |
SourceFlow.Cloud.Core.Serialization |
SourceFlow.Cloud.Serialization |
For existing code using the old namespaces, update your using statements:
Before:
using SourceFlow.Cloud.Core.Configuration;
using SourceFlow.Cloud.Core.Resilience;
using SourceFlow.Cloud.Core.Security;After:
using SourceFlow.Cloud.Configuration;
using SourceFlow.Cloud.Resilience;
using SourceFlow.Cloud.Security;Cloud extension projects now reference only the core SourceFlow project:
Before (SourceFlow.Cloud.AWS.csproj):
<ItemGroup>
<ProjectReference Include="..\SourceFlow\SourceFlow.csproj" />
<ProjectReference Include="..\SourceFlow.Cloud.Core\SourceFlow.Cloud.Core.csproj" />
</ItemGroup>After (SourceFlow.Cloud.AWS.csproj):
<ItemGroup>
<ProjectReference Include="..\SourceFlow\SourceFlow.csproj" />
</ItemGroup>- Simplified Package Management - One less NuGet package to manage and version
- Reduced Build Complexity - Fewer project dependencies to track
- Improved Discoverability - Cloud functionality is part of the core framework
- Easier Testing - No need to mock intermediate package dependencies
- Better Performance - Eliminates one layer of assembly loading
The following components are now part of the core SourceFlow package:
BusConfiguration- Fluent API for routing configurationIBusBootstrapConfiguration- Bootstrapper integrationICommandRoutingConfiguration- Command routing abstractionIEventRoutingConfiguration- Event routing abstractionIIdempotencyService- Duplicate message detectionInMemoryIdempotencyService- Default implementation
ICircuitBreaker- Circuit breaker pattern interfaceCircuitBreaker- Implementation with state managementCircuitBreakerOptions- Configuration optionsCircuitBreakerOpenException- Exception for open circuitsCircuitBreakerStateChangedEventArgs- State transition events
IMessageEncryption- Message encryption abstractionSensitiveDataAttribute- Marks properties for encryptionSensitiveDataMasker- Automatic log maskingEncryptionOptions- Encryption configuration
IDeadLetterProcessor- Failed message handlingIDeadLetterStore- Failed message persistenceDeadLetterRecord- Failed message modelInMemoryDeadLetterStore- Default implementation
CloudActivitySource- OpenTelemetry activity sourceCloudMetrics- Standard cloud metricsCloudTelemetry- Centralized telemetry
PolymorphicJsonConverter- Handles inheritance hierarchies
If you're using the AWS cloud extension, no code changes are required. The consolidation is transparent to consumers of the cloud package.
If you were directly referencing SourceFlow.Cloud.Core (not recommended), you'll need to:
- Remove the
SourceFlow.Cloud.Corepackage reference - Add a reference to
SourceFlowinstead - Update namespace imports as shown in the Migration Guide above
This consolidation sets the stage for:
- Unified Cloud Abstractions - Common patterns across cloud providers
- Extensibility - Easier to add new cloud providers in future releases
- Hybrid Cloud Support - Simplified multi-cloud scenarios when additional providers are added
- Local Development - Cloud patterns available without cloud dependencies
Date: March 3, 2026
Version: 2.0.0
Status: Implemented