Sekiban.Aspire.Infrastructure.Cosmos 0.22.0-preview8

This is a prerelease version of Sekiban.Aspire.Infrastructure.Cosmos.
There is a newer version of this package available.
See the version list below for details.
dotnet add package Sekiban.Aspire.Infrastructure.Cosmos --version 0.22.0-preview8                
NuGet\Install-Package Sekiban.Aspire.Infrastructure.Cosmos -Version 0.22.0-preview8                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Sekiban.Aspire.Infrastructure.Cosmos" Version="0.22.0-preview8" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Sekiban.Aspire.Infrastructure.Cosmos --version 0.22.0-preview8                
#r "nuget: Sekiban.Aspire.Infrastructure.Cosmos, 0.22.0-preview8"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install Sekiban.Aspire.Infrastructure.Cosmos as a Cake Addin
#addin nuget:?package=Sekiban.Aspire.Infrastructure.Cosmos&version=0.22.0-preview8&prerelease

// Install Sekiban.Aspire.Infrastructure.Cosmos as a Cake Tool
#tool nuget:?package=Sekiban.Aspire.Infrastructure.Cosmos&version=0.22.0-preview8&prerelease                

Sekiban - Event Sourcing and CQRS Framework using C#

Sekiban - Event Sourcing and CQRS Framework using C#. It can store data into Azure Cosmos DB or AWS Dynamo DB

sekiban logo

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.

Getting started

Do you want to start coding? If so, please see Quick Start

日本語の情報をお探しでしょうか? Sekiban - イベントソーシングとCQRSフレームワークの紹介 のページから幾らかの記事が日本語で書かれています。開発者は日本語も分かりますので日本語の情報も増やしていきたいと思っています。

Sponsors

Sekiban is an Apache 2.0 open source project with its ongoing development. We will launch soon for the sponsorship information. If you are interested in the special sponsorship, please contact us. Also, you can sponsor us from Github Sponsors

Special Sponsor

JTS

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.
  • Azure 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 Azure Cosmos DB, Sekiban supports the Hierarchical Partition Key feature. This enables more efficient querying using Azure 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.15.x, 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 Azure 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 on Sekiban.dev, we have not done yet. 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.

Contribution Guideline

Code of Conduct

About Us

J-Tech Japan (株式会社ジェイテックジャパン) has been developing sekiban since 2022. We are located in Tokyo, Japan and we have been developing enterprise web application since 2008. J-Tech Japan

License

Apache 2.0 See License

Copyright (c) 2022- J-Tech Japan

Product Compatible and additional computed target framework versions.
.NET 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.  net9.0 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.22.1 33 11/15/2024
0.22.0-preview9 30 11/14/2024
0.22.0-preview8 28 11/14/2024
0.22.0-preview7 30 11/14/2024
0.22.0-preview6 34 11/14/2024
0.22.0-preview5 84 10/18/2024
0.22.0-preview4 74 9/14/2024
0.22.0-preview3 81 9/6/2024
0.22.0-preview2 81 9/3/2024
0.22.0-preview10 32 11/15/2024
0.22.0-preview1 76 9/3/2024
0.21.2 112 8/17/2024
0.21.1 108 8/16/2024
0.21.0 106 8/15/2024
0.20.7 117 8/15/2024
0.20.6 57 8/2/2024
0.20.5 61 8/1/2024
0.20.4 59 7/31/2024
0.20.3 263 7/26/2024
0.20.2 88 6/25/2024
0.20.1 106 6/23/2024
0.20.0 100 6/22/2024
0.19.6 85 6/21/2024
0.19.5 100 6/21/2024
0.19.4 96 6/19/2024
0.19.3 74 6/14/2024
0.19.2 82 6/12/2024
0.19.1 161 5/24/2024
0.19.0-preview 71 4/26/2024
0.18.5-preview 69 4/24/2024
0.18.4-preview 77 4/11/2024
0.18.3-preview 79 3/30/2024
0.18.2-preview 74 3/26/2024
0.18.1-preview 58 3/7/2024
0.18.0-preview 62 3/5/2024
0.17.10-preview 63 3/3/2024
0.17.9-preview 61 2/29/2024
0.17.8-preview 66 2/29/2024
0.17.7-preview 60 2/27/2024
0.17.6-preview 63 2/27/2024
0.17.5-preview 63 2/16/2024
0.17.4-preview 61 2/15/2024
0.17.3-preview 76 2/13/2024
0.17.2-preview 69 1/21/2024
0.17.1-preview 112 1/18/2024
0.17.0-preview 63 1/17/2024
0.16.3-preview 88 1/10/2024