Posts Tagged ‘c# library’

Update to DomainTypes library

Saturday, February 20th, 2010

The initial release of DomainTypes was heavily influenced by the existing TrueView framework.  After spending much time working with a current client, it’s clear that a more ‘POCO’ approach has significantly more benefits.

Based on my findings (and questions over at StackOverflow), here are the major changes:

  • Refined and enhanced most of the interfaces
  • Removed the concept of persistent and transient classes
  • Domain Services and Application Services have explicit interfaces
  • Domain Objects no longer implement IDependencyAware
  • Removed the ITrackable interface

I’ve also added more examples to clarify how you might use the interfaces.

You can download the code here.  All comments are welcome.

P.S. Note that this library is NOT compatible with the current TrueView framework.  Watch this space for the new version!

http://evolving-software.co.uk/blog/wp-admin/post-new.php

Free .NET type library for Domain Driven Design + source code

Thursday, November 19th, 2009

I’ve observed a lot of newcomers to the DDD scene, and typically there’s lots of talk about Entities, Value Objects, Aggregate Roots, Repositories, Factories, IoC, and various technical concerns.

But I’m seeing a lot missing from the discussions.  Like “What about the locking implications around an Aggregate?” or “Must Value Objects be immutable“, or even “How do entities retrieve data if they can’t access a repository?“.

To that end, I’ve created a set of interfaces and base classes that represent the building blocks of DDD.  The idea is to get developers thinking about key concepts early in the design process, and let Intellisense provide some guidance.

You can download the source code here.  It has a Ms-Pl licence, so you can modify and use the code as you wish.

The DDD related interfaces are:

  • IDomainObject
  • IEntity
  • IAggregateRoot
  • IValueObject
  • IList<T>
  • IFactory<T>
  • IRepository<T>
  • IService<T>
  • ISpecification<T>
  • IQuerySpecification<TRequestor, TResult>

Additional interfaces for orthogonal concerns are:

  • IPersistable
  • IPersistableList<T>
  • IAudit
  • IAggregateLock
  • IAssertion
  • IDependencyAware
  • IDependencyLocator
  • ITrackable

Interfaces

This is still a work-in-progress, so feedback would be greatly appreciated.  In the next couple of posts, I’ll describe the interfaces and classes.

Download the C# project

P.S. The next version of TrueView will be based on these interfaces.  So if you code a domain model using the compiled library, TrueView will auto-generate a completely interactive UI (with the appropriate semantics) directly from your model.