Skip to content

Details Patterns

The problem of presenting a detailed view of an item in the system is a common one. The user or the system needs to interact with a single item at once, with a focus on the details of the item. This section details the patterns that can be used to address this problem.

Attributes

The attributes to consider when deciding for a pattern to implement a solution to a specific problem are:

  • Addressing: How to address the item in the system? Use only its identifier or any other unique attribute? Is it necessary to retrieve multiple items at once?
  • Consistency: How to ensure that the item is consistent? How to handle concurrency issues?
  • Performance: How to retrieve the item? How to ensure that the item is retrieved in a timely manner?
  • Evolution: How to evolve the construction of the item? How to fix any bugs or issues without breaking the system?
  • Denormalization: Is it necessary to denormalize the item? How to ensure that the item is up-to-date?

For each attributes we need to consider the following questions:

  • How complex actually is the attribute? Do not try to design a solution for a problem that does not exist.
  • How much value the system will get from the attribute? Do not incur in technical debt for a feature that is not used.
  • How open to evolution the attribute is? Do not design a solution that will not be able to evolve with the system.

Conventions

  • Marten Event Sourcing Aggregate: How to address the problem of managing a single item in the system using Marten Event Sourcing Aggregate.
  • Snapshotting: TBD
  • Time Travel: TBD