DDD Step By Step
A Practical Guide to Domain Driven Design

October 2009 - DDD on the Web

  • SOA Manifesto by Colin Jack

    I've just gotten through reading the SOA Manifesto and reactions from (among others) Jim Webber and Stefan Tilkov and I can't help feeling the whole thing is a missed opportunity. In particular you'll notice is that the manifesto doesn't deal with the "what is a service" issue and so fails to deal with the Service Oriented Ambiguity issue. Although Martin Fowler covers multiple ways of viewing services in his post I think two are probably most relevant when considering the manifesto: Business Level SOA (B-SOA) - Services for business capabilities/functions (think Strategic Design in DDD , Enterprise SOA ). This approach focuses on bringing IT and the business together and in my view should lead to large and loosely coupled autonomous services. Technical Level SOA (T-SOA) - Services here are the individual endpoints. These end-points could be Web Services (RPC/WS-*), they could be resources (REST), they could be messaging endpoints, or they could be something else.Each B-SOA service exposes one or more T-SOA services. Stefan Tilkov has a good blog entry about the two which is worth a read, and with these two types of SOA in mind its worth looking at the values in the manifesto to see how each apply in each...
  • C# Static interfaces by Jérémie Chassaing

    No DDD today, let’s talk a bit about our favorite language after a short night (I should really tell my neighbors that 3am is not the good time to move their furniture all around the flat). You can find requests for static methods in interfaces all over the internet .. But there are good reasons not to . According to Eric Lippert , the main reasons is the difference in inheritance between static methods and instance method du to the absence of shared slots between static methods. Mixing both static methods and instance methods in interfaces would lead to a real nightmare when you try to understand what really happens. But why does this question arise so often then ? What’s really needed ? Static classes as type instances Let’s take a simple class with both static and instance members : class Sample { // static part private static int count; public static int Count { get { return count; } } // instance part private readonly string name; public Sample( string name) { this .name = name; } public void Method() { count++; Console .WriteLine( "Total count {0} incremented by {1}" , count, name); } } Here, Count is a static Property. Static part is different from instance part in that static part exist only once per type. But we...
  • Quit Living in the Past - Practices Evolve by Scott C Reynolds

    In 1846 it wasn't a required practice for medical professionals to wash their hands or equipment when treating a patient. In 1847, Ignaz Semmelweis experimented and discovered that incidences of maternal death from Puerperal fever at Vienna General Hospital were drastically reduced simply by requiring midwife ward staff to wash their hands. Despite showing data that mortality rates under his watch at his hospital rapidly fell off after instituting this new practice, his theories were not widely accepted until well after his death when Louis Pasteur confirmed the germ theory of disease. What does this have to do with software? Well, I have to wonder why we are so filled with hubris as to think that we are not subject, as a profession, to the same evolutionary improvement steps of every other profession in existence. In a previous post , a commenter said: There is bucketloads of software out there designed by good coders who didn't follow every tenent [sic] of the Alt.NET manifesto, yet their code works just fine. On the same post, another commenter says: Some people without a lot of credibility to back them up like to talk about quality and maintainability and simply ignore the history of software development. Another "gem"...
  • Well-constructed != Over-architected by Scott C Reynolds

    Let's imagine for a moment that we're building a dog house for our beloved family pet. We want it to protect Rover from the elements, be a comfortable place for him to escape the sun and relax, and in general, have the structure hold up for quite some time. We are probably going to select decent wood, rather than scraps. We'll probably frame it out, make sure it's sturdy, make sure the joints are secure, that it has a solid base, and that the roof is well put together. We're probably going to plan it out, draw it up, and do the measurements to make sure Rover fits inside. If we aren't that good at carpentry, we may grab a book or two and follow the recommendations of people more practiced than us. Sure, we can hammer nails, but we don't necessarily know whether a miter joint is more appropriate than a dovetail joint in this case. We're not just going to slap it together with glue and tacks, leaving gaps between boards, and not being too concerned if it skews in a strong wind. In short, we're going to build a shelter that we're happy to put a loved one in. We aren't going to support the walls with flying buttresses to future-proof the structure. We aren't going to build it with steel girders...