NHibernate will rule, because Ayende already does
First I find out that NHibernate does support “Persistence by Reachability”, even though the docs say it doesn’t. Next, Ayende makes it support multiple queries in a single DB roundtrip, something I’ve...
View ArticlePerformant and Explicit Domain Models
Some Technical Difficulties Ayende and I had an email conversation that started with me asking what would happen if I added an Order to a Customer’s “Orders” collection, when that collection was lazy...
View Article[Podcast] Domain Models, SOA, and The Single Version of the Truth
In this podcast we’ll try to describe some of the pitfalls of trying to split a domain model between multiple services, as well as how SOA side-steps the “single version of the truth” issue found in...
View ArticleFrom CRUD to Domain-Driven Fluency
I got a question about how to stay away from CRUD based service interfaces when the logic itself is like that, and I’ve found that this shift in thinking really needs more examples, so I’ve decided to...
View ArticleHow to create fully encapsulated Domain Models
Update: The new and improved solution is now available: Domain Events, Take 2. Most people getting started with DDD and the Domain Model pattern get stuck on this. For a while I tried answering this...
View ArticleDomain Events – Take 2
Update: The next post in this series is now online here. My previous post on how to create fully encapsulated domain models introduced the concept of events as a core pattern of communication from the...
View ArticleDDD & Many to Many Object Relational Mapping
The ability to map entity relationships is broadly supported by many O/RM tools. For some reason, though, many developers run into issues when trying to map a many-to-many relationship between...
View ArticleALT.NET DDD Podcast
I finally got around to listening to the alt.net podcast on domain driven design and heard Rob Conery telling about his experiences with DDD. I’ve met a fair amount of developers that went through a...
View ArticleDomain Events – Salvation
I’ve been hearing from people that have had a great deal of success using the Domain Event pattern and the infrastructure I previously provided for it in Domain Events – Take 2. I’m happy to say that...
View ArticleDon’t Create Aggregate Roots
My previous post on Domain Events left some questions about how aggregate roots should be created unanswered. It would actually be more accurate to say how aggregate roots should *not* be created. It...
View ArticleMSDN Magazine Domain Model Article
My article on “employing the domain model pattern” has been published in the August edition of MSDN Magazine. Here’s a short excerpt: “In this article, we’ll go through the reasons to (and not to)...
View ArticleDon’t Delete – Just Don’t
After reading Ayende’s post advocating against “soft deletes” I felt that I should add a bit more to the topic as there were some important business semantics missing. As developers discuss the...
View ArticleProgressive .NET Wrap-up
So, I’ve gotten back from a most enjoyable couple of days in Sweden where I gave two half-day tutorials, the first being the SOA and UI composition talk I gave at the European Virtual ALT.NET meeting...
View ArticleDDD Exchange London 2010
Last Friday I was in London for the DDD Exchange. It was great seeing Eric Evans again and Greg Young, who I haven’t seen for at least a couple of years. It might take some time for Skills Matter to...
View ArticleCQRS, DDD, and NServiceBus video
Following the theme of my last few blog posts, this post will also be pointing you to videos of me talking. After I had finished speaking at QCon London last March, I sat down for a short interview...
View ArticleEntities, Transactions, and Broken Boundaries
One of the things I cover early on in my course is the problem with traditional layered architecture driving people to create a business logic layer made up of a bunch of inter-related entities. I see...
View ArticleWhen to avoid CQRS
It looks like that CQRS has finally “made it” as a full blown “best practice”. Please accept my apologies for my part in the overly-complex software being created because of it. I’ve tried to do what I...
View ArticleInconsistent data, poor performance, or SOA – pick one
One of the things that surprises some developers that I talk to is that you don’t always get consistency even with end-to-end synchronous communication and a single database. This goes beyond things...
View ArticleWhy you should be using CQRS almost everywhere…
… but differently than the way most people have been using it. I think I’ve just about drove everybody crazy now with my apparent zigzagging on CQRS. Some people heard about CQRS first from one of my...
View ArticleRecording of joint interview with Eric Evans
Last month both myself and Eric Evans spoke at a conference run by the International Association of Software Architects (IASA) in Madrid. Eric talked about DDD and I talked about CQRS. While the talks...
View ArticleUdi & Greg Reach CQRS Agreement
Hard to believe, isn’t it? Although both myself and Greg have been saying (quite publicly) for a long time now that we’re in agreement in about 99% of the DDD/CQRS content we talk about, it turns out...
View ArticleCommon CQRS Abuses
Abuse #1 “I’m using CQRS because I need to scale.” While CQRS may be more scalable than other more traditional architectures, the use of asynchronous communication often complicates the user...
View ArticleDon’t try to model the real world, it doesn’t exist.
Recently I’ve started talking more about modeling and its relation to the real world. Here’s where it all starts from: Don’t try to model the real world, it doesn’t exist. I know that that sounds like...
View ArticleUI Composition Techniques for Correct Service Boundires
One of the things which often throws people off when looking to identify their service boundaries is the UI design. Even those who know that the screen a user is looking at is the result of multiple...
View ArticleLife without distributed transactions
Occasionally I get questions about the issue of transactional messaging – why is it so important, why does NServiceBus default to this behavior, and if we didn’t use it, what bad things could happen....
View Article