Composite UIs for Microservices - A Primer

Microservices can be easy, if we never have to compose, orchestrate, or otherwise integrate between multiple services. If our inter-service communication is low, we can piecemeal a solution based on basic integration patterns such as messaging. A land without composition and integration is when I have highly decoupled systems and business organization. If I strictly build systems around the organization structure, and if that organizational structure is entirely driven by [Read More]

AutoMapper 6.1.0 released

See the release notes: v6.1.0 As with all of our dot releases, the 6.0 release broke some APIs, and the dot release added a number of new features. The big features for 6.1.0 include those for reverse-mapping support. First, we detect cycles in mapping classes to automatically preserve references. Much larger however is unflattening. For reverse mapping, we can now unflatten into a richer model: [Read More]

Dealing With Optimistic Concurrency Control Collisions

Optimistic Concurrency Control (OCC) is a well-established solution for a rather old problem - handling two (or more) concurrent writes to a single object/resource/entity without losing writes. OCC works (typically) by including a timestamp as part of the record, and during a write, we read the timestamp: Begin: Record timestamp Modify: Read data and make tentative changes Validate: Check to see if the timestamp has changed Commit/Rollback: [Read More]

Respawn 0.3.0-preview1 released for netstandard2.0

Respawn, a small library designed to ease integration testing by intelligently clearing out test data, now supports .NET Core. Specifically, I now target: net45 netstandard1.2 netstandard2.0 I had waited quite a long time because I needed netstandard2.0 support for some SqlClient pieces. With those pieces in place, I can now support running Respawn on full .NET and .NET Core 1.x and 2.0 applications (and tests) [Read More]

Domain Command Patterns - Handlers

In the last post, we looked at validation patterns in domain command handlers in response to a question, "Command objects should [always/never] have return values". This question makes an assumption - that we have command objects! In this post, I want to look at a few of our options for handling domain commands: When I look at command handling, I'm really talking about the actual "meat" of the request [Read More]