Kck.Exceptions.Abstractions
3.2.0
See the version list below for details.
dotnet add package Kck.Exceptions.Abstractions --version 3.2.0
NuGet\Install-Package Kck.Exceptions.Abstractions -Version 3.2.0
<PackageReference Include="Kck.Exceptions.Abstractions" Version="3.2.0" />
<PackageVersion Include="Kck.Exceptions.Abstractions" Version="3.2.0" />
<PackageReference Include="Kck.Exceptions.Abstractions" />
paket add Kck.Exceptions.Abstractions --version 3.2.0
#r "nuget: Kck.Exceptions.Abstractions, 3.2.0"
#:package Kck.Exceptions.Abstractions@3.2.0
#addin nuget:?package=Kck.Exceptions.Abstractions&version=3.2.0
#tool nuget:?package=Kck.Exceptions.Abstractions&version=3.2.0
Kck Modular Architecture Framework
Modular, extensible .NET framework organized around an Abstractions → Providers → Bundles pattern. Abstractions declare contracts; providers implement them against concrete technologies; bundles compose opinionated defaults for specific hosting models (WebApi, WorkerService, etc.).
Quick Start
Web API (ASP.NET Core, full Bundle)
dotnet add package Kck.Bundle.WebApi
var builder = WebApplication.CreateBuilder(args);
builder.Services
.AddKckWebApi()
.AddKckCachingInMemory()
.AddKckMessagingMailKit(opt =>
{
opt.Host = builder.Configuration["Mail:Host"]!;
opt.Port = 587;
opt.UseSsl = true;
});
var app = builder.Build();
app.UseKckExceptionHandler();
app.MapGet("/", () => Results.Ok("Hello from Kck!"));
app.Run();
Tam ornek:
samples/Kck.Sample.WebApi
Minimal API (Slim, only what you need)
dotnet add package Kck.AspNetCore
dotnet add package Kck.Caching.InMemory
dotnet add package Kck.Pipeline.Mediator
var builder = WebApplication.CreateBuilder(args);
builder.Services
.AddKckExceptions()
.AddKckCachingInMemory()
.AddMediator() // Mediator source-gen dispatcher
.AddKckMediatorPipeline(p => p
.UseValidationBehavior()
.UseLoggingBehavior());
var app = builder.Build();
app.MapPost("/users", async (CreateUserCommand cmd, IMediator mediator) =>
Results.Ok(await mediator.Send(cmd)));
app.Run();
Tam ornek:
samples/Kck.Sample.MinimalApi
Worker Service (background jobs, no HTTP)
dotnet add package Kck.BackgroundJobs.Quartz
dotnet add package Kck.Logging.Serilog
dotnet add package Kck.Observability.OpenTelemetry
var builder = Host.CreateApplicationBuilder(args);
builder.Services
.AddKckSerilog(builder.Configuration)
.AddKckOpenTelemetry()
.AddKckQuartz(opt => opt.UseInMemoryStore())
.AddKckJob<EmailDigestJob>(triggerCron: "0 0 9 * * ?");
await builder.Build().RunAsync();
Tam ornek:
samples/Kck.Sample.WorkerService
Target Frameworks
| Paket Sinifi | TFM |
|---|---|
| Tüm paketler | net10.0 |
Kütüphane yalnızca net10.0 ve üzerini hedefler (ADR-0019). Detay: ADR-0019.
Why Kck?
Kck, ABP'den daha hafif, FastEndpoints'ten daha kapsamli, Aspire'a uyumlu olmayi hedefler:
| Konu | Kck | ABP Framework | FastEndpoints | Microsoft .NET Aspire |
|---|---|---|---|---|
| Lisans | MIT | LGPL (Pro: ucretli) | MIT | MIT |
| Yaklasim | Modular, opt-in | Tum-in-bir, opinionated | Endpoint-only | Orchestration |
| DI Konvansiyonu | Microsoft.Extensions.* native |
ABP DI extension'lari | Microsoft.Extensions.* |
Microsoft.Extensions.* |
| Source-gen / Proxy | Yok (saf C#) | Cok (UoW interceptor, dynamic proxy) | Yok | Yok |
| TFM Destegi | net10.0 | net8 + net9 | net8 + net9 + net10 | net8 + net9 + net10 |
| AOT-uyumu | Kismen (abstraction'lar) | Hayir | Evet | Evet |
| Provider Sayisi | 30+ resmi | 15+ resmi (Pro) | N/A | N/A (orchestration) |
| Battery-included | Opt-in modullerle | Tum-in-bir | Sadece HTTP | Yok |
| Source-Link + Symbols | Var | Var | Var | Var |
| Ogrenme Egrisi | Dusuk-Orta | Yuksek | Dusuk | Orta |
Kck'i secmen gerekiyorsa eger:
- ASP.NET Core'a sadik kalmak istiyorsan (DI, options, hosting konvansiyonlari)
- Modul modul ekleme/cikarma yetkisi istiyorsan (ABP'nin "her sey otomatik" yaklasimini istemeyen)
- Source-gen veya runtime proxy magic'inden kaciniyorsan (debug edilebilirlik onemliyse)
- Modern .NET 10 API'larını (AOT,
Guid.CreateVersion7()) tam destekleyen framework istiyorsan - 9+ ADR + 17 provider doc + 0 warning build hijiyenine deger veriyorsan
Kck'i secmemen gerekiyorsa:
- "Tek paket kurar tum ihtiyacim biter" istiyorsan → ABP
- Yalniz HTTP endpoint API yaziyorsan → FastEndpoints daha hafif
- Microservice orchestration istiyorsan → Aspire (Kck ile birlikte de calisir)
Modules
Abstractions
| Package | Responsibility |
|---|---|
Kck.Core.Abstractions |
Core entities, paging, result types |
Kck.Authorization.Abstractions |
Permission / policy contracts |
Kck.BackgroundJobs.Abstractions |
Job scheduling contracts |
Kck.Caching.Abstractions |
Distributed cache contracts |
Kck.Documents.Abstractions |
PDF / Excel / image processing contracts |
Kck.EventBus.Abstractions |
Pub/sub event bus contracts |
Kck.Exceptions.Abstractions |
Domain exception types |
Kck.FeatureFlags.Abstractions |
Feature flag contracts |
Kck.FileStorage.Abstractions |
FTP / blob storage contracts |
Kck.Http.Abstractions |
Resilient HTTP client contracts |
Kck.Localization.Abstractions |
i18n / l10n contracts |
Kck.Messaging.Abstractions |
Email / SMS contracts |
Kck.Observability.Abstractions |
Tracing / metrics / health contracts |
Kck.Persistence.Abstractions |
Repository, UoW, query contracts |
Kck.Search.Abstractions |
Full-text search contracts |
Kck.Security.Abstractions |
Hashing, JWT, TOTP, secrets contracts |
Providers
| Area | Packages |
|---|---|
| Background Jobs | Kck.BackgroundJobs.Hangfire, Kck.BackgroundJobs.Quartz |
| Caching | Kck.Caching.InMemory, Kck.Caching.Redis, Kck.Caching.Hybrid |
| Documents | Kck.Documents.ClosedXml, Kck.Documents.ImageSharp |
| Event Bus | Kck.EventBus.InMemory, Kck.EventBus.RabbitMq, Kck.EventBus.AzureServiceBus |
| Exceptions | Kck.Exceptions.AspNetCore |
| Feature Flags | Kck.FeatureFlags.InMemory |
| File Storage | Kck.FileStorage.FluentFtp |
| HTTP | Kck.Http.Resilience |
| Hosting | Kck.Hosting.Aspire |
| Resilience | Kck.Resilience.Polly |
| Localization | Kck.Localization, Kck.Localization.Json, Kck.Localization.Yaml |
| Logging | Kck.Logging.Serilog |
| Messaging | Kck.Messaging.MailKit, Kck.Messaging.SendGrid, Kck.Messaging.AmazonSes |
| Observability | Kck.Observability.OpenTelemetry |
| Persistence | Kck.Persistence.EntityFramework |
| Pipeline | Kck.Pipeline.MediatR (deprecated, KCK0200), Kck.Pipeline.Mediator |
| Search | Kck.Search.Elasticsearch |
| Security | Kck.Security.Argon2, Kck.Security.Jwt, Kck.Security.Totp, Kck.Security.TokenBlacklist.Redis, Kck.Security.Secrets.UserSecrets, Kck.Security.Secrets.AzureKeyVault |
| Web | Kck.AspNetCore |
Background Jobs ipucu: Hangfire ve Quartz alternatiftir, beraber kullanilmasi onerilmez. Hangfire dashboard ve persistent storage ihtiyaciniz varsa onu, daha hafif cron + DI entegrasyonu istiyorsaniz Quartz'i secin. Ikisi birden bagimliliklarinizi gereksiz sisirir (~5MB+ assembly farki).
Bundles
| Bundle | Contents |
|---|---|
Kck.Bundle.WebApi |
Opinionated ASP.NET Core stack: Mediator pipeline, exception handler, Serilog, OpenTelemetry, JWT |
Kck.Bundle.MinimalApi |
Slim ASP.NET Core stack: exception handler, caching, JWT, Serilog, OpenTelemetry |
Kck.Bundle.WorkerService |
Worker/daemon stack: Serilog, OpenTelemetry, EventBus, Hangfire + Quartz |
Samples
samples/Kck.Sample.WebApi— Full WebApi sample with RabbitMQ, Redis, EF Coresamples/Kck.Sample.MinimalApi— Minimal API with Bundle.WebApisamples/Kck.Sample.WorkerService— Hangfire + Quartz hosted jobs
Testing
# Unit testler (Docker gerektirmez, Windows + Ubuntu hepsi):
dotnet test --filter "Category!=Integration"
# Integration testler (Docker Desktop gerekir):
dotnet test --filter "Category=Integration"
Detay: docs/test-strategy.md ve docs/policies/test-coverage.md
Documentation
- Documentation index — landing page
- Architecture Decision Records — binding technical decisions
- Provider guides — per-category usage notes (17 guides)
Development
dotnet restore
dotnet build -c Release
dotnet test -c Release --no-build
Requirements: .NET 10 SDK
Benchmarks
dotnet run -c Release --project tests/Kck.Benchmarks
BenchmarkDotNet --filter ile spesifik benchmark calistir:
dotnet run -c Release --project tests/Kck.Benchmarks -- --filter "*Paginate*"
Sadece Release konfigurasyonunda anlamli sonuc verir; Debug uyari ile kosur.
Contributing
See CONTRIBUTING.md. Issues and PRs are welcome.
License
MIT © Omerkck
| 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
- No dependencies.
NuGet packages (3)
Showing the top 3 NuGet packages that depend on Kck.Exceptions.Abstractions:
| Package | Downloads |
|---|---|
|
Kck.Exceptions.AspNetCore
ASP.NET Core global exception handler for Kck exceptions. Maps Kck exception types to RFC 7807 ProblemDetails responses with correct HTTP status codes via [HttpStatusCodeAttribute]. Registered via AddKckExceptionHandling(). |
|
|
Kck.Pipeline.MediatR
MediatR-backed pipeline behaviors for Kck. Provides Authorization, Caching, Logging, Transaction, and Validation behaviors. DEPRECATED — use Kck.Pipeline.Mediator instead. Will be removed in a future version (KCK0200). |
|
|
Kck.Pipeline.Mediator
Mediator.Abstractions 3.x-backed pipeline behaviors for Kck. Provides Authorization, Caching, Logging, Transaction, and Validation cross-cutting behaviors. The recommended pipeline provider since Kck v2. Registered via AddKckMediator(). |
GitHub repositories
This package is not used by any popular GitHub repositories.