Sekiban.Core
0.14.4
See the version list below for details.
dotnet add package Sekiban.Core --version 0.14.4
NuGet\Install-Package Sekiban.Core -Version 0.14.4
<PackageReference Include="Sekiban.Core" Version="0.14.4" />
paket add Sekiban.Core --version 0.14.4
#r "nuget: Sekiban.Core, 0.14.4"
// Install Sekiban.Core as a Cake Addin #addin nuget:?package=Sekiban.Core&version=0.14.4 // Install Sekiban.Core as a Cake Tool #tool nuget:?package=Sekiban.Core&version=0.14.4
Sekiban
Sekiban - Event Sourcing Framework using .NET. Can store data into Cosmos DB and Dynamo DB
Logo is under redesign process.
What is Sekiban?
Sekiban is an application development framework that leverages Event Sourcing and CQRS principles. Built with C# and .NET Core 7+, it allows developers to use a declarative API to create event sourcing applications. Sekiban supports various event stores such as Microsoft Azure Cosmos DB and Amazon Dynamo DB, facilitating deployment on either Azure or AWS.
Understanding Event Sourcing and CQRS
If you've landed here, you're likely already familiar with Event Sourcing and CQRS. However, if you require more detailed insights, Greg Young's informative YouTube talk might be of assistance. Check out the transcript of Greg's presentation at the Code on the Beach 2014 event on CQRS and Event Sourcing. Greg suggests creating your event sourcing system instead of relying on frameworks, a viewpoint I share, as constructing your framework can deepen your understanding of event sourcing concepts.
However, we recognize many developers prefer concentrating on business logic and swiftly proceeding with tools and document databases. Given the recent advances in database speed and scalability across the cloud, event sourcing can be quite efficient with the use of frameworks and cloud solutions. Fortunately, as Sekiban is open-source, developers wishing to delve deeper can experiment with the source code housed in the repository.
Disclaimer: Despite using a framework, it's essential for developers to be familiar with event sourcing concepts, especially when optimizing Query performance for a growing user base and data set post-launch. Adequate knowledge of Event Sourcing and CQRS is mandatory when converting it to a microservice or improving performances.
Key Features of Sekiban
Enhance your application development experience with Sekiban suited for those who prioritize efficiency and effectiveness:
- Simple Commands and Events: Facilitates straightforward creation of functionality within your application.
- Publish-only Commands and Events: Provides way to save events without projecting aggregates.
- Optimistic Aggregate Version Check: Enables efficient conflict detection in concurrent environments.
- Event Versions: Allows for improved forward compatibility.
- Single/Multi Aggregate Projections: Supports projections at both individual and multiple aggregate levels.
- Projections Snapshots: Offers the ability to capture the state of a projection at a certain point in time.
- Large Snapshots Storage: Accommodate sizable snapshots using Azure Blob Storage or Amazon S3.
- Built-in Testing Framework: Simplifies testing with an integrated suite.
- Cosmos DB / Dynamo DB Datastore: Provides scalable and globally distributed data storage solutions.
- Tenant Partitions: Facilitates separation of data based on tenant for easier data management and handling.
- Query from Multiple Projections: Enables querying from a range of projections for more dynamic data analysis.
- Command and Query Web API Generator with Swagger Support: Streamlines API design, building, and documentation.
These, coupled with many more features, allow developers to focus on business aspects, implementing commands, events, projections, tests, and queries for practical solutions without unnecessary complexity.
Compatibility
Sekiban is compatible with .NET 7 and 8.
For Cosmos DB, Sekiban supports the Hierarchical Partition Key feature. This enables more efficient querying using Cosmos DB by creating a Tenant (or Root Partition Key), Aggregate Type, and Partition Key.
When using Dynamo DB with Sekiban, you need to set up a Partition Key and Sort Key.
Scale of Sekiban Projects
As of Sekiban version 0.14, the framework doesn't have built-in materialized view helper features. Sekiban's Live Projection capability is well-suited for small to medium-sized systems. Typically, Sekiban can handle Live Projections provided the system memory can accommodate the size of the Multiple Projections.
For more insights on Live Projections, please reference this informative article by Anton Stöckl: Live Projections for Read Models with Event Sourcing and CQRS.
Developers can implement materialized views using Cosmos DB's and Dynamo DB's change feed feature. Although creation of materialized views with Change Feed is a straightforward process, it does not directly pertain to the Sekiban Framework's core functions, hence it hasn't been included within the framework.
Open Source
Sekiban is released as open source under the Apache 2.0 license. You can view our License here. We welcome developers to fork the project, fix bugs, or add new features as they wish. For those interested in contributing, we offer a detailed Contribution Guideline and Code of Conduct. J-Tech Japan owns this project and determines its future direction.
Documentation
We are planning to deploy documentation, eventually please see
https://github.com/J-Tech-Japan/Sekiban/blob/main/docs/docfx_project/articles/intro.md
Support and Training
J-Tech Japan welcomes sponsors for this project to help maintain a high-quality framework. If you require training or seminars, please contact us at sekibanadmin@jtechs.com.
License
Apache 2.0 See License
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net7.0 is compatible. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
-
net7.0
- Azure.Storage.Blobs (>= 12.17.0)
- MediatR (>= 12.1.1)
- Microsoft.AspNetCore.Http (>= 2.2.2)
- Microsoft.Extensions.Caching.Memory (>= 7.0.0)
- Microsoft.Extensions.Configuration (>= 7.0.0)
- Microsoft.Extensions.Configuration.Abstractions (>= 7.0.0)
- Microsoft.Extensions.Configuration.Binder (>= 7.0.4)
- Microsoft.Extensions.DependencyInjection (>= 7.0.0)
- Microsoft.Extensions.Hosting (>= 7.0.1)
- NUlid (>= 1.7.1)
- SharpZipLib (>= 1.4.2)
-
net8.0
- Azure.Storage.Blobs (>= 12.17.0)
- MediatR (>= 12.1.1)
- Microsoft.AspNetCore.Http (>= 2.2.2)
- Microsoft.Extensions.Caching.Memory (>= 7.0.0)
- Microsoft.Extensions.Configuration (>= 7.0.0)
- Microsoft.Extensions.Configuration.Abstractions (>= 7.0.0)
- Microsoft.Extensions.Configuration.Binder (>= 7.0.4)
- Microsoft.Extensions.DependencyInjection (>= 7.0.0)
- Microsoft.Extensions.Hosting (>= 7.0.1)
- NUlid (>= 1.7.1)
- SharpZipLib (>= 1.4.2)
NuGet packages (7)
Showing the top 5 NuGet packages that depend on Sekiban.Core:
Package | Downloads |
---|---|
Sekiban.Testing
Sekiban - Event Sourcing Framework Testing |
|
Sekiban.Infrastructure.Cosmos
Sekiban - Event Sourcing Framework CosmosInfrastructure |
|
Sekiban.Web
Sekiban - Event Sourcing Framework WebHelper |
|
Sekiban.Infrastructure.Dynamo
Sekiban - Event Sourcing Framework Dynamo Infrastructure |
|
Sekiban.Infrastructure.Azure.Storage.Blobs
Sekiban - Event Sourcing Framework Azure Storage Blob |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
0.22.0-preview5 | 184 | 10/18/2024 |
0.22.0-preview4 | 171 | 9/14/2024 |
0.22.0-preview3 | 181 | 9/6/2024 |
0.22.0-preview2 | 165 | 9/3/2024 |
0.22.0-preview1 | 163 | 9/3/2024 |
0.21.2 | 596 | 8/17/2024 |
0.21.1 | 181 | 8/16/2024 |
0.21.0 | 178 | 8/15/2024 |
0.20.7 | 184 | 8/15/2024 |
0.20.6 | 133 | 8/2/2024 |
0.20.5 | 130 | 8/1/2024 |
0.20.4 | 118 | 7/31/2024 |
0.20.3 | 307 | 7/26/2024 |
0.20.2 | 192 | 6/25/2024 |
0.20.1 | 194 | 6/23/2024 |
0.20.0 | 179 | 6/22/2024 |
0.19.6 | 172 | 6/21/2024 |
0.19.5 | 170 | 6/21/2024 |
0.19.4 | 187 | 6/19/2024 |
0.19.3 | 160 | 6/14/2024 |
0.19.2 | 154 | 6/12/2024 |
0.19.1 | 231 | 5/24/2024 |
0.19.0 | 322 | 4/26/2024 |
0.18.5 | 224 | 4/24/2024 |
0.18.4 | 253 | 4/11/2024 |
0.18.3 | 291 | 3/30/2024 |
0.18.2 | 576 | 3/26/2024 |
0.18.1 | 208 | 3/7/2024 |
0.18.0 | 342 | 3/5/2024 |
0.17.10 | 216 | 3/3/2024 |
0.17.9 | 202 | 2/29/2024 |
0.17.8 | 200 | 2/29/2024 |
0.17.7 | 198 | 2/27/2024 |
0.17.6 | 174 | 2/27/2024 |
0.17.5 | 178 | 2/16/2024 |
0.17.4 | 224 | 2/15/2024 |
0.17.3 | 198 | 2/13/2024 |
0.17.2 | 215 | 1/21/2024 |
0.17.1 | 239 | 1/18/2024 |
0.17.0 | 175 | 1/17/2024 |
0.16.3 | 315 | 1/10/2024 |
0.16.2 | 248 | 1/5/2024 |
0.16.1 | 213 | 12/30/2023 |
0.16.0 | 182 | 12/30/2023 |
0.15.5 | 306 | 12/26/2023 |
0.15.4 | 183 | 12/26/2023 |
0.15.3 | 368 | 11/18/2023 |
0.15.2 | 367 | 11/3/2023 |
0.15.1 | 244 | 10/27/2023 |
0.15.0 | 360 | 10/27/2023 |
0.14.8 | 206 | 10/24/2023 |
0.14.6 | 445 | 9/30/2023 |
0.14.5 | 320 | 9/26/2023 |
0.14.4 | 215 | 9/26/2023 |
0.14.3 | 222 | 9/20/2023 |
0.14.2 | 247 | 9/8/2023 |
0.14.1 | 412 | 8/24/2023 |
0.14.0 | 251 | 8/24/2023 |
0.13.6 | 364 | 7/29/2023 |
0.13.5 | 269 | 7/29/2023 |
0.13.4 | 267 | 7/28/2023 |
0.13.3 | 314 | 7/21/2023 |
0.13.2 | 292 | 7/21/2023 |
0.13.1 | 289 | 7/18/2023 |
0.13.0 | 284 | 7/14/2023 |
0.12.6 | 298 | 7/13/2023 |
0.12.5 | 313 | 7/13/2023 |
0.12.4 | 304 | 7/8/2023 |
0.12.3 | 301 | 7/8/2023 |
0.12.2 | 307 | 7/8/2023 |
0.12.1 | 291 | 6/27/2023 |
0.12.0 | 298 | 6/22/2023 |
0.11.4 | 317 | 6/6/2023 |
0.11.3 | 285 | 6/5/2023 |
0.11.2 | 412 | 5/25/2023 |
0.11.1 | 315 | 5/25/2023 |
0.11.0 | 178 | 5/25/2023 |