BuildingBlocks.Specification, Ardalis.Specification 9.x üzerine kurulu ince bir katmandır. Sorgu mantığını (where/include/orderby/paging) repository’den ayrı, test edilebilir ve cache’lenebilir spec sınıflarına taşır. İki ek değer sunar: in-memory mantıksal kombinatörler (And/Or/Not) ve spec’e doğrudan cache tag/TTL iliştirme.
Repository altyapısı (
EFRepository, CachedRepository, ListAsync) ve hibrit cache davranışı için bkz. Veri Katmanı ve Cache.CompositeSpecification<T>
Spec’lerin türetildiği temel sınıf. Ardalis.Specification.Specification<T>’i genişletir ve in-memory değerlendirme için IInMemorySpecification<T> sağlar.
Query.* zinciri (Where, Include, OrderBy, Skip, Take) Ardalis’ten gelir ve EF Core’a çevrilir; IsSatisfiedBy ise aynı kuralı bellekte de uygulanabilir kılar.
Filtreler — IFilter / FilterBase
API’den gelen liste/arama parametrelerini standartlaştıran kontrat. FilterBase türetilerek aggregate’e özel filtre yapılır.
Cache entegrasyonu
Cache, Ardalis’in mevcutQuery.EnableCache(name, args) zinciriyle açılır. Paket buna iki fluent uzantı ekler:
Ad bilerek
WithCacheTtl’dir — Ardalis’in WithTimeToLive’i ile ambiguous reference olmasın diye. Aynı şekilde paralel ICacheSpecificationBuilder<T> kaldırılmıştır; Ardalis.Specification.ICacheSpecificationBuilder<T> kullanılır.Kullanım — spec tanımı + Repository.ListAsync
İlgili
Veri katmanı
EFRepository, CachedRepository ve SpecificationEvaluator.
Cache
EnableCache/WithTags ile hibrit cache entegrasyonu.
Domain
Spec’lerin aggregate başına organizasyonu.
Invalidation
Tag-based eviction ve domain event tetikleme.