In DDD, the value object is used when your entity conceptually does not have an identity and it is all about the data. Now the question of something being a value object or an entity - where we care about the actual Id - is a business question but think about an address in a ordering management system where a customer has addresses. You probably don’t care about the address as something on its own, so you don’t care about it’s identity and as such, two addresses are the same if their values are the same. Another away about the value object, is that it is immutable, meaning if you want to change an address, you need to create a new one and replace an existing address as it is not possible to change an existing address.

Continue reading

F# Type Providers

You’re going to think I’m jumping on the F# bandwagon as well. Well kind of but that’s not the point of this post. The thing is, people ask me all the time: Why should I even care about F#? I have my own C# language that I love, why go through the burden of learning another language, and more importantly, another way of thinking, as functional programming is not only about the language but more conceptual way of thinking.

Continue reading

In this series, I’m going to write about some of the challenges we’ve been facing with DDD. If you want to adapt DDD on .NET stack, this hopefully will be useful for you. Along with concepts I’ll talk about what works (or doesn’t) well with EntityFramework, but most of it will still be useful with other ORMs - or even without one.

Continue reading

One of the four fundamentals of Object-Oriented Programing is Encapsulation which is defined as: “A language mechanism for restricting access to some of the object’s components”. This would help us separate the internal implementation from the publicly accessible surface of the object. The idea is to hide how the object actually work from the outside world, so that we can change the internal without breaking anything as the object still looks the same from the outside.

Continue reading

If you’ve been following me, you know by now that recently I’ve been dedicating my extra time enhancing ServiceInsight application. For those of you living under a rock, it is a part of NServiceBus suite of applications and the focus there is to give you a better tooling so that you’ll have a much better experience using NServiceBus framework. Among the few tools we are building are ServicePulse which is designed for DevOps and ServiceInsight which is targeted mostly for average Joe developers. Continue reading

The level of customization that Silverlight comes with - even when you don’t have access to the source code of the control you are using - is simply amazing. Those who experienced WinForms control customization or control centric web frameworks like ASP.NET already know how much trouble they face when customizing a 3rd party control, if there is any customization support at all. Continue reading

When working on a project using NServiceBus, we came up with an interesting requirement. The messages in the queue should be processed only in certain time frames. The reason is that message handler is making a webservice call and the other party is only available at certain times and system is not even allowed to make a call during the outage window. Continue reading

Author's picture

Hadi Eskandari

Developer, amateur photographer, coffee snob, husband and father.