Dynamic Consistency Boundary in Marten, Part 1: The aggregate trap
The structural problem DCB solves: business rules that span multiple aggregates and cannot be defended by per-stream optimistic concurrency.
17 posts
The structural problem DCB solves: business rules that span multiple aggregates and cannot be defended by per-stream optimistic concurrency.
We build the coupon redemption command from Part 1 using Marten's DCB API: tag types, BoundaryAggregate, FetchForWritingByTags, and the explicit ConcurrencyException retry cycle.
We rebuild the redemption command from Part 2 using Wolverine.HTTP with a [WolverinePost] endpoint, where the HTTP route, the DCB consistency boundary, and the business decision live in one static method. Includes an Alba HTTP test.
Tag storage modes, the global-lock failure mode of over-broad queries, tag governance, schema evolution, incremental migration from existing aggregates, and when DCB is the wrong tool.
ReverseMarkdown 5.0.0 is out! It’s our biggest leap in years - dramatically faster, more resilient on edge cases, and friendlier .NET HTML to Markdown converter library. Upto to 200× faster on huge HTML via TextWriter refactor. Fixed nested <p> exp...
Protecting Personally Identifiable Information (PII) has become essential as organizations handle increasing volumes of sensitive data. Regulations like the GDPR (General Data Protection Regulation) mandate strict controls over PII to safeguard indiv...
Protecting Personally Identifiable Information (PII) has become essential as organizations handle increasing volumes of sensitive data. Regulations like the GDPR (General Data Protection Regulation) mandate strict controls over PII to safeguard indiv...
Protecting Personally Identifiable Information (PII) has become essential as organizations handle increasing volumes of sensitive data. Regulations like the GDPR (General Data Protection Regulation) mandate strict controls over PII to safeguard indiv...
This is a continuation of the Marten native partial updates patching post. All the native patch operations are driven by a bunch of custom PL/pgSQL functions with prefix mt_jsonb_. Marten uses JSONB for all its JSON storage hence all th...
An interesting issue was raised in my ReverseMarkdown GitHub library repository wherein conversion of HTML table containing colspan in cells does not convert properly to Markdown. Let me show you a representative example of the HTML table content for...
Partial update or patching JSON involves making changes to specific parts of a JSON document without replacing the entire document. This is particularly useful when you only need to modify certain fields or elements within a large JSON object, rather...
I was quite intrigued by the recent version of [Bun](https://bun.sh/docs/bundler/executables#embedding-sqlite-databases) supporting a one liner call to embed a SQLite file and use it as part of a single file binary. This is super cool. See the code b...
MysticMind.PostgresEmbed v4.0 released with support for .NET 8 and few enhancements. This library provides minimum Postgres binaries for development or unit testing purposes. This library has had around 92K NuGet downloads so far. https://github.com/...
VitePress uses Shiki for syntax highlighting which is a fantastic library. Shiki automatically fetches language grammar from VSCode so the language names etc for the fenced code block comes from it. For .NET, the language names captured are csharp a...
Maintaining and managing documentation for software products or libraries require a good amount of time and discipline to keep it up to date with the latest code base. Typically code samples are the ones which can quickly go out of sync when it is ma...
NAnt was quite a popular build tool used by projects of all sizes targeting .NET Framework on Windows. I have written many complex build systems using NAnt in the past. But XML based DSL was quite clunky to use and maintain. Besides, it was always a ...
I have been a co-maintainer of .NET OSS library Marten and largely involved in taking care of the DevOps stuff pertaining to CI pipeline, build and docs system. In the early days, the build was driven using a RAKE build script written by Jeremy Mille...