Skip to content

Release v3.0.0-beta.3

Pre-release
Pre-release

Choose a tag to compare

@amarinsek amarinsek released this 30 Aug 18:29
· 1 commit to main since this release
d04fe09

CacheOrchestrator 3.0.0-beta.3

Third v3 beta. This build closes major prerelease contract work before a stable freeze: Redis is split into leaf packages (AspNetCore.Redis, FusionCache.Redis) plus meta CacheOrchestrator.Redis, endpoint cache identity supports non-GET reads (with analyzer COIDENTITY001), and physical-key / stale / health / public-surface contracts are finalized. Documentation and the playground multi-instance labs are updated to match.

v3 remains a full redesign relative to 1.x / 2.x. Cache entries from beta.2 are not reused after the physical-key format change — allow natural refill or invalidate after upgrade.

Changelog

Added

  • Redis leaf packages: CacheOrchestrator.AspNetCore.Redis (AddRedisOutputCacheBackend) and CacheOrchestrator.FusionCache.Redis (AddRedisFusionCacheBackend), with support package CacheOrchestrator.Redis.Shared (transitive only). Meta CacheOrchestrator.Redis / AddRedisBackend still registers both surfaces.
  • Endpoint cache identity for non-GET reads: WithCacheIdentity / WithContentHashCacheIdentity, [CacheIdentity] / [ContentHashCacheIdentity], named ICacheIdentityContract + AddCacheIdentityContract<T>(), CacheIdentities.Url.
  • Roslyn analyzer COIDENTITY001 (duplicate HTTP method identity bindings), delivered through AspNetCore and transitively to meta-package consumers.
  • Reference doc cache-identity.md; Minimal POST /echo; Sample POST identity playground.
  • Pack-time package validation and a packaged-analyzer consumer smoke in CI.
  • Playground product store on SQLite; labs 03–05 share /shared/playground.db so product GET/PUT across instances matches a shared database.
  • Observability logging docs: event levels, hierarchical category table, appsettings fine-tuning examples.

Changed

  • Public / runtime contracts finalized toward API freeze: unambiguous versioned physical-key format; explicit provider hit/miss/stale outcomes (including Fusion soft-timeout / background refresh); Output-Cache-only Null-provider health treated as supported; fail-fast validation of the effective default Data Cache instance.
  • Reduced avoidable public implementation surface (orchestration / extensibility shapes, EF interceptor visibility, key-generator context).
  • Both net8.0 and net10.0 aligned on FusionCache 2.6 / Microsoft.Extensions 10 for that stack.
  • Docs hub, guide, reference, package READMEs, and releasing notes updated for the Redis split, identity, and contracts. NuGet package Documentation sections unified (root README, docs index, repository).
  • Root README NuGet table points at 3.0.0-beta.3, including the Redis leaf packages.

Fixed

  • FusionCache CacheKeyPrefix uses the effective FC namespace.
  • Sample lab Docker build after the Redis package split.
  • Meta-package consumers receive the identity analyzer without duplicate execution.
  • Stale reporting and default Data Cache instance validation gaps from the major-readiness pass.

Removed

  • Monolithic Redis assembly that forced AspNetCore + Fusion for every Redis consumer.
  • Avoidable public physical-key escape / implementation details that froze internal format without need.

Deprecated

  • None

Security

  • Stronger domain/key isolation via the unambiguous physical-key format.

Breaking changes (prerelease)

  • Redis package layout: prefer meta CacheOrchestrator.Redis / AddRedisBackend for dual-surface DX; Fusion-only or OC-only hosts can take the matching leaf package. First nuget.org publish of the split must include Shared + both leaves + meta together.
  • Physical cache-key format changed — do not expect beta.2 L2 / Redis entries to hit after upgrade.
  • Prerelease public extension contracts are tightened; further additive changes may still occur until stable 3.0.0.

Packages in this release

All library packages below use version 3.0.0-beta.3.

Package Role
CacheOrchestrator Meta: AspNetCore + FusionCache
CacheOrchestrator.Core HTTP-free core
CacheOrchestrator.AspNetCore Output Cache, Client Cache, Admin API, identity
CacheOrchestrator.FusionCache FusionCache Data Cache provider
CacheOrchestrator.HybridCache HybridCache Data Cache provider
CacheOrchestrator.Redis Meta Redis (OC store + Fusion L2 / backplane)
CacheOrchestrator.AspNetCore.Redis Redis Output Cache store only
CacheOrchestrator.FusionCache.Redis Redis Fusion L2 / backplane only
CacheOrchestrator.HttpBus HTTP cluster bus
CacheOrchestrator.EFCore.Invalidation EF Core SaveChanges invalidation

CacheOrchestrator.Redis.Shared is published as transitive support — do not reference it directly.
Admin Console App: Docker / GHCR (ghcr.io/amarinsek/cacheorchestrator-admin-console), not a NuGet package (latest image tag is not applied on prereleases).

Install

Usual web app start:

dotnet add package CacheOrchestrator --version 3.0.0-beta.3

Full set (same version):

dotnet add package CacheOrchestrator --version 3.0.0-beta.3
dotnet add package CacheOrchestrator.Core --version 3.0.0-beta.3
dotnet add package CacheOrchestrator.AspNetCore --version 3.0.0-beta.3
dotnet add package CacheOrchestrator.FusionCache --version 3.0.0-beta.3
dotnet add package CacheOrchestrator.HybridCache --version 3.0.0-beta.3
dotnet add package CacheOrchestrator.Redis --version 3.0.0-beta.3
dotnet add package CacheOrchestrator.AspNetCore.Redis --version 3.0.0-beta.3
dotnet add package CacheOrchestrator.FusionCache.Redis --version 3.0.0-beta.3
dotnet add package CacheOrchestrator.HttpBus --version 3.0.0-beta.3
dotnet add package CacheOrchestrator.EFCore.Invalidation --version 3.0.0-beta.3

You may use --prerelease instead of an explicit --version when this is the latest prerelease on nuget.org. Composition: packages guide · README package list.