21 August, 2008. It was a Thursday. Services are first-class citizens of the domain model. When concepts of the model would distort any Entity or Value Object, a Service is appropriate. From Evans’ ...
13 October, 2016. It was a Thursday. A while ago, I blogged about using MediatR to build a processing pipeline for requests in the form of commands and queries in your application. MediatR is a ...
6 April, 2011. It was a Wednesday. A common point of confusion when getting started with Git on Windows is line endings, with Windows still using CR+LF while every other modern OS uses LF only. Git ...
13 May, 2014. It was a Tuesday. Domain events are one of the final patterns needed to create a fully encapsulated domain model – one that fully enforces a consistency boundary and invariants. The need ...
22 April, 2014. It was a Tuesday. I’ve been a supporter and user of NHibernate for nearly 10 years. While not part of the original NHibernate Mafia, I’ve long enjoyed NHibernate’s ability to rich, ...
This is the third installment to the series: RabbitMQ for Windows. In the last installment, we discussed some basic messaging concepts and created our first RabbitMQ application. In this installment, ...
1 June, 2016. It was a Wednesday. In many of my applications, the UI and API gravitate towards task-oriented UIs. Instead of “editing an invoice”, I “approve an invoice”, with specialized models, ...
Way too many times I encounter applications that claim to have a domain (model) and that domain driven design has been used to develop it, but in reality what I find is a collection of entities or ...
12 August, 2008. It was a Tuesday. A question came up on the ALT.NET message board asking whether Value Objects should be used across service boundaries. Of course, the conversation took several ...
31 October, 2012. It was a Wednesday. I often hear people say something like “if you need it once, build it. If you need it twice, abstract it.” People often say then in the context of the “DRY” – or ...
20 January, 2015. It was a Tuesday. One of the design goals I had in mind with MediatR was to limit the 3rd party dependencies (and work) needed to integrate MediatR. To do so, I only take a ...
Many systems implement CRUD (create, read, update, and delete) using a repository pattern. An entity is loaded using a Get method, some business layer logic makes changes to the entity, and ultimately ...