<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Evolving Software</title>
	<atom:link href="http://evolving-software.co.uk/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://evolving-software.co.uk/blog</link>
	<description>General tidbits about Domain Driven Design and TrueView</description>
	<lastBuildDate>Sat, 20 Feb 2010 13:21:57 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Update to DomainTypes library</title>
		<link>http://evolving-software.co.uk/blog/2010/02/20/update-to-domaintypes-library/</link>
		<comments>http://evolving-software.co.uk/blog/2010/02/20/update-to-domaintypes-library/#comments</comments>
		<pubDate>Sat, 20 Feb 2010 13:18:24 +0000</pubDate>
		<dc:creator>Vijay</dc:creator>
				<category><![CDATA[New releases]]></category>
		<category><![CDATA[c# library]]></category>
		<category><![CDATA[domaintypes]]></category>
		<category><![CDATA[interfaces]]></category>
		<category><![CDATA[source code]]></category>

		<guid isPermaLink="false">http://evolving-software.co.uk/blog/?p=350</guid>
		<description><![CDATA[The initial release of DomainTypes was heavily influenced by the existing TrueView framework.  After spending much time working with a current client, it&#8217;s clear that a more &#8216;POCO&#8217; 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 [...]]]></description>
			<content:encoded><![CDATA[<p>The initial release of <em>DomainTypes</em> was heavily influenced by the existing TrueView framework.  After spending much time working with a current client, it&#8217;s clear that a more &#8216;POCO&#8217; approach has significantly more benefits.</p>
<p>Based on my findings (and <a href="http://stackoverflow.com/questions/tagged/domain-driven-design">questions over at StackOverflow</a>), here are the major changes:</p>
<ul>
<li>Refined and enhanced most of the interfaces</li>
<li>Removed the concept of <strong>persistent</strong> and <strong>transient</strong> classes</li>
<li><strong>Domain Services</strong> and <strong>Application Services</strong> have explicit interfaces</li>
<li>Domain Objects no longer implement <strong>IDependencyAware</strong></li>
<li>Removed the <strong>ITrackable</strong> interface</li>
</ul>
<p>I&#8217;ve also added more examples to clarify how you might use the interfaces.</p>
<p>You can <a href="http://evolving-software.co.uk/downloads/DomainTypes.zip">download the code here</a>.  All comments are welcome.</p>
<p><strong>P.S.</strong> Note that this library is <strong>NOT </strong>compatible with the current TrueView framework.  Watch this space for the new version!</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px;">http://evolving-software.co.uk/blog/wp-admin/post-new.php</div>
]]></content:encoded>
			<wfw:commentRss>http://evolving-software.co.uk/blog/2010/02/20/update-to-domaintypes-library/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Merry Christmas and a Happy New Year!</title>
		<link>http://evolving-software.co.uk/blog/2009/12/24/merry-christmas-and-a-happy-new-year/</link>
		<comments>http://evolving-software.co.uk/blog/2009/12/24/merry-christmas-and-a-happy-new-year/#comments</comments>
		<pubDate>Thu, 24 Dec 2009 09:10:35 +0000</pubDate>
		<dc:creator>Vijay</dc:creator>
				<category><![CDATA[News items]]></category>

		<guid isPermaLink="false">http://evolving-software.co.uk/blog/?p=342</guid>
		<description><![CDATA[A new version of TrueView is in the pipeline for next year.  The features on the whiteboard are:

Better support for true DDD concepts
Allow code models to be reused without TrueView
Configuration without using .NET attributes
Open architecture, to let consumers develop custom &#8216;persistence providers&#8217;
More UI interception points, to allow greater customisation
Auto-databinding features, for WPF and possibly Silverlight
N-Tier [...]]]></description>
			<content:encoded><![CDATA[<p>A new version of TrueView is in the pipeline for next year.  The features on the whiteboard are:</p>
<ul>
<li>Better support for true DDD concepts</li>
<li>Allow code models to be reused without TrueView</li>
<li>Configuration without using .NET attributes</li>
<li>Open architecture, to let consumers develop custom &#8216;persistence providers&#8217;</li>
<li>More UI interception points, to allow greater customisation</li>
<li>Auto-databinding features, for WPF and possibly Silverlight</li>
<li>N-Tier support (finally)</li>
</ul>
<p>And we&#8217;re considering making TrueView <strong>FREE </strong>for non-commercial use.</p>
<p><strong>We&#8217;re going to need beta-testers for the new version</strong>, so if you&#8217;re interested <strong>please email us</strong>.</p>
<p>In the meantime, have a very Happy Christmas!</p>
]]></content:encoded>
			<wfw:commentRss>http://evolving-software.co.uk/blog/2009/12/24/merry-christmas-and-a-happy-new-year/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Domain Types &#8211; Interfaces</title>
		<link>http://evolving-software.co.uk/blog/2009/11/24/domain-types-interfaces/</link>
		<comments>http://evolving-software.co.uk/blog/2009/11/24/domain-types-interfaces/#comments</comments>
		<pubDate>Tue, 24 Nov 2009 18:20:30 +0000</pubDate>
		<dc:creator>Vijay</dc:creator>
				<category><![CDATA[Useful info]]></category>
		<category><![CDATA[ddd]]></category>
		<category><![CDATA[domaintypes]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[interfaces]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[source code]]></category>

		<guid isPermaLink="false">http://evolving-software.co.uk/blog/?p=313</guid>
		<description><![CDATA[In the last post, I published the DomainTypes library: a set of .NET interfaces &#38; base classes to provide the building blocks for DDD (source code included).
In this post I&#8217;ll describe the interfaces and supporting design decisions.
IDomainObject
Represents any type of object within the Domain model. Currently this is simply used as a marker, signalling to [...]]]></description>
			<content:encoded><![CDATA[<p>In the <a href="http://evolving-software.co.uk/blog/2009/11/19/free-net-type-library-for-domain-driven-design-source-code/">last post</a>, I published the <a href="http://evolving-software.co.uk/downloads/DomainTypes.zip">DomainTypes library</a>: a set of .NET interfaces &amp; base classes to provide the building blocks for DDD (source code included).</p>
<p>In this post I&#8217;ll describe the interfaces and supporting design decisions.</p>
<h3>IDomainObject</h3>
<p>Represents any type of object within the Domain model. Currently this is simply used as a marker, signalling to developers that the implementation has DDD semantics.</p>
<h3>IEntity</h3>
<p>Represents a unique Entity within the system.  The <strong>ID </strong>property is used to identify the instance during it&#8217;s lifetime.  Using a GUID allows identity to be established without having to talk to a persistence store (i.e. database).</p>
<h3>IValueObject</h3>
<p>Represents a non-unique object within the system.  Note that it&#8217;s an object, and not a struct.  Structs may seem like a better semantic fit with DDD, but too many instances can cause memory problems (structs &#8211; like value types &#8211; are created on the stack).</p>
<div>The <strong>Clone() </strong>method is used to create copies.  The implementing class can decide whether to create new instances, or use the <em>FlyWeight</em> pattern.</div>
<h3>IList&lt;T&gt;</h3>
<p>Represents a list of Domain Objects.  It&#8217;s crucial that the implementing class raises events <em>before </em>items are added or removed from the list.  This allows consumer code to execute any domain rules, and cancel the action if necessary.</p>
<h3>IEvent</h3>
<p>This is one that <a href="http://domaindrivendesign.org/library/evans_2009_1">Eric Evans mentioned earlier this year</a>.  It is used to record &amp; identify <strong>domain events</strong>, and must be immutable. For example, a child&#8217;s birth should be captured, be identifiable, but never modified.</p>
<h3>IAggregateRoot</h3>
<p>Most people understand Aggregate Roots as a cluster of closely associated entities.  However, there are 2 additional concerns that an Aggregate Root has:</p>
<ol>
<li>It knows how to validate the entire aggregate</li>
<li>It is used to lock it&#8217;s contents in a multi-user environment</li>
</ol>
<p>The <strong>IsConsistent()</strong> method is a placeholder for all rules/invariants that apply to the aggregate.  The locking concerns are handled by<strong> IRepository&lt;T&gt; </strong>(see below).</p>
<h3>IFactory&lt;T&gt;</h3>
<p>Used to create Domain Objects/Entities/Aggregate Roots that are complex to build.  Only use factories when the code within your constructors becomes unweildy.</p>
<h3>IRepository&lt;T&gt;</h3>
<p>Used as a facade to a persistence store.  Strictly speaking, repositories should only deal with Aggregate Roots &#8211; to access other entities you would navigate through the Aggregate.</p>
<p>In addition to the typical <strong>Load()</strong>/<strong>Save()</strong>/<strong>Delete() </strong>methods, I&#8217;ve also included <strong>Lock()</strong> and <strong>Unlock</strong>() methods.  This is a crucial function in a multi-user system, and should be considered when designing your Aggregates.</p>
<h3>IService</h3>
<p>Currently this is simply used as a marker.  Only consider using Services if :</p>
<ol>
<li>Try as you might, <em>you can&#8217;t decide</em> on which Domain Object to place your logic</li>
<li>The logic requires the use of several unassociated Domain Objects</li>
<li>You&#8217;re communicating with another module/tier/component</li>
</ol>
<p>The remaining interfaces aren&#8217;t DDD specific, but are to aid real-world implementations.  I&#8217;ll discuss those in the near future.</p>
<p><a href="http://evolving-software.co.uk/downloads/DomainTypes.zip">Download the source code</a></p>
]]></content:encoded>
			<wfw:commentRss>http://evolving-software.co.uk/blog/2009/11/24/domain-types-interfaces/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Free .NET type library for Domain Driven Design + source code</title>
		<link>http://evolving-software.co.uk/blog/2009/11/19/free-net-type-library-for-domain-driven-design-source-code/</link>
		<comments>http://evolving-software.co.uk/blog/2009/11/19/free-net-type-library-for-domain-driven-design-source-code/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 21:18:42 +0000</pubDate>
		<dc:creator>Vijay</dc:creator>
				<category><![CDATA[Useful info]]></category>
		<category><![CDATA[building blocks]]></category>
		<category><![CDATA[c# library]]></category>
		<category><![CDATA[domain driven design]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[source code]]></category>

		<guid isPermaLink="false">http://evolving-software.co.uk/blog/?p=284</guid>
		<description><![CDATA[I&#8217;ve observed a lot of newcomers to the DDD scene, and typically there&#8217;s lots of talk about Entities, Value Objects, Aggregate Roots, Repositories, Factories, IoC, and various technical concerns.
But I&#8217;m seeing a lot missing from the discussions.  Like &#8220;What about the locking implications around an Aggregate?&#8221; or &#8220;Must Value Objects be immutable&#8220;, or even &#8220;How [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve observed a lot of newcomers to the DDD scene, and typically there&#8217;s lots of talk about Entities, Value Objects, Aggregate Roots, Repositories, Factories, IoC, and various technical concerns.</p>
<p>But I&#8217;m seeing a lot missing from the discussions.  Like &#8220;<em>What about the locking implications around an Aggregate?</em>&#8221; or &#8220;<em>Must Value Objects be immutable</em>&#8220;, or even &#8220;<em>How do entities retrieve data if they can&#8217;t access a repository?</em>&#8220;.</p>
<p>To that end, I&#8217;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.</p>
<p>You can <a href="http://evolving-software.co.uk/downloads/DomainTypes.zip">download the source code here</a>.  It has a Ms-Pl licence, so you can modify and use the code as you wish.</p>
<p>The DDD related interfaces are:</p>
<ul>
<li>IDomainObject</li>
<li>IEntity</li>
<li>IAggregateRoot</li>
<li>IValueObject</li>
<li>IList&lt;T&gt;</li>
<li>IFactory&lt;T&gt;</li>
<li>IRepository&lt;T&gt;</li>
<li>IService&lt;T&gt;</li>
<li>ISpecification&lt;T&gt;</li>
<li>IQuerySpecification&lt;TRequestor, TResult&gt;</li>
</ul>
<p>Additional interfaces for orthogonal concerns are:</p>
<ul>
<li>IPersistable</li>
<li>IPersistableList&lt;T&gt;</li>
<li>IAudit</li>
<li>IAggregateLock</li>
<li>IAssertion</li>
<li>IDependencyAware</li>
<li>IDependencyLocator</li>
<li>ITrackable</li>
</ul>
<p><a href="http://evolving-software.co.uk/blog/wp-content/uploads/2009/11/Interfaces1.png"><img class="alignnone size-medium wp-image-295" title="Interfaces" src="http://evolving-software.co.uk/blog/wp-content/uploads/2009/11/Interfaces1-300x59.png" alt="Interfaces" width="300" height="59" /></a></p>
<p>This is still a work-in-progress, so feedback would be greatly appreciated.  In the next couple of posts, I&#8217;ll describe the interfaces and classes.</p>
<p><a href="http://evolving-software.co.uk/downloads/DomainTypes.zip">Download the C# project</a></p>
<p>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) <span style="text-decoration: underline;">directly from your model.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://evolving-software.co.uk/blog/2009/11/19/free-net-type-library-for-domain-driven-design-source-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Domain Driven Design reference card</title>
		<link>http://evolving-software.co.uk/blog/2009/11/17/domain-driven-design-reference-card/</link>
		<comments>http://evolving-software.co.uk/blog/2009/11/17/domain-driven-design-reference-card/#comments</comments>
		<pubDate>Tue, 17 Nov 2009 09:46:20 +0000</pubDate>
		<dc:creator>Vijay</dc:creator>
				<category><![CDATA[Useful info]]></category>

		<guid isPermaLink="false">http://evolving-software.co.uk/blog/?p=282</guid>
		<description><![CDATA[Spotted this handy online reference for Domain Driven Design:
http://www.scribd.com/doc/21997741/DZone-Refcard-76-Domain-Driven-Design
]]></description>
			<content:encoded><![CDATA[<p>Spotted this handy online reference for Domain Driven Design:</p>
<p><a href="http://www.scribd.com/doc/21997741/DZone-Refcard-76-Domain-Driven-Design">http://www.scribd.com/doc/21997741/DZone-Refcard-76-Domain-Driven-Design</a></p>
]]></content:encoded>
			<wfw:commentRss>http://evolving-software.co.uk/blog/2009/11/17/domain-driven-design-reference-card/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upgrade from Windows 7 beta/RC to Windows 7 RTM</title>
		<link>http://evolving-software.co.uk/blog/2009/10/05/upgrade-from-windows-7-betarc-to-windows-7-rtm/</link>
		<comments>http://evolving-software.co.uk/blog/2009/10/05/upgrade-from-windows-7-betarc-to-windows-7-rtm/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 19:10:11 +0000</pubDate>
		<dc:creator>Vijay</dc:creator>
				<category><![CDATA[News items]]></category>
		<category><![CDATA[Useful info]]></category>
		<category><![CDATA[upgrade]]></category>
		<category><![CDATA[Windows 7 beta]]></category>
		<category><![CDATA[Windows 7 RC]]></category>
		<category><![CDATA[Windows 7 RTM]]></category>

		<guid isPermaLink="false">http://evolving-software.co.uk/blog/?p=279</guid>
		<description><![CDATA[Finally got around to upgrading to Windows 7 RTM, only to be greeted with the following:
You cannot upgrade this prerelease version of Windows 7. Go online to see how to install Windows 7 and keep your files and settings
A quick Google found these instructions.   Should save you the hassle of rebuilding your PC  
]]></description>
			<content:encoded><![CDATA[<p>Finally got around to upgrading to Windows 7 RTM, only to be greeted with the following:</p>
<blockquote><p><strong>You cannot upgrade this prerelease version of Windows 7. Go online to see how to install Windows 7 and keep your files and settings</strong></p></blockquote>
<p>A quick Google found <a href="http://webupd8.blogspot.com/2009/07/how-to-upgrade-from-windows-7-beta-or.html">these instructions</a>.   Should save you the hassle of rebuilding your PC <img src='http://evolving-software.co.uk/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://evolving-software.co.uk/blog/2009/10/05/upgrade-from-windows-7-betarc-to-windows-7-rtm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TrueView Maintenance Release 1.3.0908.21</title>
		<link>http://evolving-software.co.uk/blog/2009/08/21/trueview-maintenance-release-13090821/</link>
		<comments>http://evolving-software.co.uk/blog/2009/08/21/trueview-maintenance-release-13090821/#comments</comments>
		<pubDate>Fri, 21 Aug 2009 12:28:22 +0000</pubDate>
		<dc:creator>Vijay</dc:creator>
				<category><![CDATA[New releases]]></category>
		<category><![CDATA[databridge]]></category>
		<category><![CDATA[ui]]></category>

		<guid isPermaLink="false">http://evolving-software.co.uk/blog/?p=273</guid>
		<description><![CDATA[The latest release has some UI fixes for TrueView, and mapping fixes for DataBridge.  Download it here.
TrueView Fixes

UI now shows changes if entities are modified inside constructors
Corrected treenode selection when removing a previously selected node
Fixed race condition when opening Entity property nodes
Entity Property treenode no longer renders with the Entity&#8217;s style
Fixed window layout for magnetic [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://evolving-software.co.uk/downloads/TrueViewFreeTrial.exe">latest release</a> has some UI fixes for TrueView, and mapping fixes for DataBridge.  <a href="http://evolving-software.co.uk/downloads/TrueViewFreeTrial.exe">Download it here</a>.</p>
<h3>TrueView Fixes</h3>
<ul>
<li>UI now shows changes if entities are modified inside constructors</li>
<li>Corrected treenode selection when removing a previously selected node</li>
<li>Fixed race condition when opening Entity property nodes</li>
<li>Entity Property treenode no longer renders with the Entity&#8217;s style</li>
<li>Fixed window layout for magnetic windows</li>
<li>Fixed window positioning when overlaying windows</li>
<li>Correctly identifies the top-most window in multi-monitor mode</li>
<li>Exceptions when retrieving Summary value are no longer fatal</li>
<li>Fixed Search Results window ownership in MyApplication.Load&lt;T&gt;(query, parameters)</li>
<li>Shortcut key presses are now handled for multi-monitor mode</li>
</ul>
<h3>Enhancements</h3>
<ul>
<li>&#8216;Short&#8217; values now have smaller widgets (Strings)</li>
<li>Improved &#8216;Version Check&#8217; dialog messages</li>
</ul>
<h3>DataBridge Fixes</h3>
<ul>
<li>Corrected writing of Component properties</li>
<li>Fixed Foreign Key names for Entity properties of the same type</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://evolving-software.co.uk/blog/2009/08/21/trueview-maintenance-release-13090821/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Multi-monitor support and popup Search Queries</title>
		<link>http://evolving-software.co.uk/blog/2009/08/10/multi-monitor-support-and-popup-search-queries/</link>
		<comments>http://evolving-software.co.uk/blog/2009/08/10/multi-monitor-support-and-popup-search-queries/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 06:46:08 +0000</pubDate>
		<dc:creator>Vijay</dc:creator>
				<category><![CDATA[TrueView tips]]></category>
		<category><![CDATA[multi monitor]]></category>
		<category><![CDATA[search dialog]]></category>
		<category><![CDATA[ui]]></category>

		<guid isPermaLink="false">http://evolving-software.co.uk/blog/?p=261</guid>
		<description><![CDATA[The latest release includes 2 very useful UI features:
Multi-monitor support
This option is specially useful when you&#8217;re demoing to others, and can be enabled from Tools-&#62;Options-&#62;UI Settings-&#62;Allow MultiMonitor Use. All subsequent windows will open outside of the Workbench, allowing them to be dragged to other monitors.
Popup Search Dialogs
Although drag &#38; drop is very powerful, not all [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://evolving-software.co.uk/downloads/TrueViewFreeTrial.exe">latest release</a> includes 2 very useful UI features:</p>
<h3>Multi-monitor support</h3>
<p>This option is specially useful when you&#8217;re demoing to others, and can be enabled from <strong>Tools-&gt;Options-&gt;UI Settings-&gt;Allow MultiMonitor Use</strong>. All subsequent windows will open <em>outside</em> of the Workbench, allowing them to be dragged to other monitors.</p>
<h3>Popup Search Dialogs</h3>
<p>Although drag &amp; drop is very powerful, not all users are comfortable with it, instead preferring to select items from a list.  With this is mind, a new context menu item was added:</p>
<p><img class="alignnone size-full wp-image-264" title="popup-search-dialog-for-entity-property" src="http://evolving-software.co.uk/blog/wp-content/uploads/2009/08/popup-search-dialog-for-entity-property.png" alt="popup-search-dialog-for-entity-property" width="640" height="480" /></p>
<p>Selecting this will open a Search Dialog, where the user can query and select an Entity.  It also works for EntityList properties (multiple Entities can be selected in this case):</p>
<p><img class="alignnone size-full wp-image-265" title="popup-search-dialog-for-entitylist-property" src="http://evolving-software.co.uk/blog/wp-content/uploads/2009/08/popup-search-dialog-for-entitylist-property.png" alt="popup-search-dialog-for-entitylist-property" width="640" height="480" /></p>
<p>It&#8217;s also possible to pre-load the popup search dialog using <strong>Query Specifications</strong>.  See the section &#8220;<strong>Pre-filtered Search Query Dialogs</strong>&#8221; in the <a href="http://evolving-software.co.uk/downloads/TrueViewDevelopersGuide.pdf">user guide</a> to learn more.</p>
]]></content:encoded>
			<wfw:commentRss>http://evolving-software.co.uk/blog/2009/08/10/multi-monitor-support-and-popup-search-queries/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TrueView Release 1.3.0908.09 &#8211; ServiceLocator and Dependency Injection</title>
		<link>http://evolving-software.co.uk/blog/2009/08/09/trueview-release-13090809-servicelocator-and-dependency-injection/</link>
		<comments>http://evolving-software.co.uk/blog/2009/08/09/trueview-release-13090809-servicelocator-and-dependency-injection/#comments</comments>
		<pubDate>Sun, 09 Aug 2009 16:45:17 +0000</pubDate>
		<dc:creator>Vijay</dc:creator>
				<category><![CDATA[News items]]></category>
		<category><![CDATA[Dependency Injection]]></category>
		<category><![CDATA[multi monitor]]></category>
		<category><![CDATA[popup search query]]></category>
		<category><![CDATA[Service Locator]]></category>

		<guid isPermaLink="false">http://evolving-software.co.uk/blog/?p=256</guid>
		<description><![CDATA[The latest release adds Dependency Injection to the mix.  The default behaviour uses a simple Service Locator, but you can inject your own dependencies as you wish.  See the user guide for more info.
BREAKING CHANGES:
The following interfaces now implement IServiceDependent:

 IEntity
 IFactory
 IRepository
 IService

Enhancements

Added MyApplication.ServiceLocator (for locating Factory/Repository/Service classes)
 Added IServiceDependent for DependencyInjection services
Added IService [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://evolving-software.co.uk/downloads/TrueViewFreeTrial.exe">latest release</a> adds <strong>Dependency Injection</strong> to the mix.  The default behaviour uses a simple <strong>Service Locator</strong>, but you can inject your own dependencies as you wish.  See the <a href="http://evolving-software.co.uk/downloads/TrueViewDevelopersGuide.pdf">user guide</a> for more info.</p>
<p><strong>BREAKING CHANGES:</strong></p>
<p>The following interfaces now implement IServiceDependent:</p>
<ul>
<li> IEntity</li>
<li> IFactory</li>
<li> IRepository</li>
<li> IService</li>
</ul>
<p><strong>Enhancements</strong></p>
<ul>
<li>Added MyApplication.ServiceLocator (for locating Factory/Repository/Service classes)</li>
<li> Added IServiceDependent for DependencyInjection services</li>
<li>Added IService interface (similar to IFactory and IRepository)</li>
<li>Services are now shown in the Class Library treeview</li>
<li>MyApplication now raises EntityCreated event when entities come into scope</li>
<li>MyApplication now raises EntityDisposed event when entities are no longer required</li>
<li>MyApplication now raises ApplicationInitialised event at startup</li>
<li>Many delegates moved out of classes (reduce API clutter)</li>
<li>Added EntityListAttribute.HasUniqueItems, to determine if duplicate items are allowed</li>
<li>Drag/Drop tip now detects duplicate items</li>
<li>Replaced Class Library CheckBoxes with ToggleButton</li>
<li>Added Search box to Class Library to allow easy finding of Entity classes</li>
<li>Increased scrolling speed when using Drag/Drop on treeview</li>
<li>ListView numeric columns are now right-aligned</li>
<li>Re-instated &#8220;Explore&#8221; context-menu option for root Entities</li>
<li>Added support for parameterised Methods</li>
<li>Window buttons bar is now visible by default (to reduce flickering)</li>
<li>Added AddRange &amp; RemoveRange methods to TransientEntityList</li>
<li>Added AddRange &amp; RemoveRange methods to EntityList</li>
<li>Search Form now shows Query text as query is built</li>
<li>Boolean editor now changes value immediately</li>
<li>Hitting F2 over a listview opens the editor beneath the mouse cursor</li>
<li>&#8216;Short&#8217; values now have smaller widgets (Numbers, Enums, Dates)</li>
<li>Added new &#8220;Replace/Add&#8221; context-menu items for context sensitive queries</li>
<li>&#8220;Open File&#8221; option renamed to &#8220;View File&#8221;</li>
<li>Changed internal async command processing</li>
<li>Added &#8220;Allow multi-monitor use&#8221; option for non-MDI interfaces</li>
<li>Query List no longer shows &#8220;Type&#8221; in first header</li>
<li>Entity treeview no longer scales when window is resized</li>
<li>Changed error message when trying to execute HQL using MemoryCache provider</li>
</ul>
<p><strong>Fixes</strong></p>
<ul>
<li>Reduced flickering when rendering/repainting controls</li>
<li>Corrected header style for each window</li>
<li>Correction in MyApplication.Start() to allow repeated calls</li>
<li>Saving object graphs with unmapped entities now always forces NHibernatePersistence</li>
<li>Corrected UI updates when setting Parameters</li>
<li>Applied [Visible=false] attribute to all public interface members</li>
<li>Exceptions no longer thrown if Providers aren&#8217;t defined in app.config</li>
<li>Correction in collection/list count</li>
<li>Correction in identifying parent widgets</li>
<li>Fixed margin settings for collapsible panels</li>
<li>Corrected identification/caching of icons for sub-classes</li>
<li>Corrected icon for Namespace nodes</li>
<li>ListView &#8220;Auto-resize&#8221; option now overrides user defined widths</li>
<li>Window button tooltip is updated for Search Forms</li>
<li>Corrected culture setting for DateTimePicker</li>
<li>Better handling of exceptions when editor controls are rendered</li>
<li>Now uses correct DateTimePicker rendering for Windows 7</li>
<li>Corrected background colour in Enum editor</li>
<li>Empty Category headers are no longer displayed</li>
<li>Disabled &#8220;Explore&#8221; option for primitive types</li>
<li>Corrected multiple argument injection in EntityList Add &amp; Remove methods</li>
<li>Reduced Drag/Drop tip flickering</li>
<li>ListView &#8220;Property&#8221; column is now sized to fit</li>
<li>Selected TreeView node is now scrolled into view</li>
<li>Corrected border colour for Boolean editor</li>
<li>Corrected Entity Relationships for properties in super classes</li>
<li>Corrected event handler disposal in a few controls</li>
</ul>
<p><strong>Optimisations</strong></p>
<ul>
<li>Improved string building performance</li>
<li>Optimised widget detection at mouse co-ords</li>
<li>DynamicMethods are now created lazily</li>
<li>Entity Relationships are now resolved lazily</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://evolving-software.co.uk/blog/2009/08/09/trueview-release-13090809-servicelocator-and-dependency-injection/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eric Evans: &#8220;What I&#8217;ve learned about DDD since the book&#8221;</title>
		<link>http://evolving-software.co.uk/blog/2009/06/30/eric-evans-what-ive-learned-about-ddd-since-the-book/</link>
		<comments>http://evolving-software.co.uk/blog/2009/06/30/eric-evans-what-ive-learned-about-ddd-since-the-book/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 11:33:55 +0000</pubDate>
		<dc:creator>Vijay</dc:creator>
				<category><![CDATA[Useful info]]></category>
		<category><![CDATA[ddd]]></category>
		<category><![CDATA[domain driven design]]></category>
		<category><![CDATA[eric evans]]></category>
		<category><![CDATA[experimenting]]></category>
		<category><![CDATA[exploring]]></category>
		<category><![CDATA[ubiquitous language]]></category>

		<guid isPermaLink="false">http://evolving-software.co.uk/blog/?p=247</guid>
		<description><![CDATA[Eric Evans talks about the most essential parts of his book, having practiced it over the last 5 years.
One of the topics that caught my attention was Exploration and Experimentation (3m 25s into the video).  Evans suggests that teams should be exploring &#38; experimenting even after a useful domain model is created.  His quote:
What are [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://domaindrivendesign.org/library/evans_2009_1">Eric Evans talks about</a> the most essential parts of his book, having practiced it over the last 5 years.</p>
<p>One of the topics that caught my attention was <strong>Exploration and Experimentation</strong> (3m 25s into the video).  Evans suggests that teams should be exploring &amp; experimenting even after a useful domain model is created.  His quote:</p>
<blockquote><p>What are the odds that [the first good model] is the best you could have done?</p></blockquote>
<p>So why aren&#8217;t teams doing this already?  Typically, it&#8217;s because of <strong>fear </strong>and <strong>cost of change</strong><em>. </em>Traditionally, software has never been easy to change (read <em>expensive</em>).  And for all of the new technology being spewed out, not all of it is designed to <em>make change easy</em>.</p>
<p>This is the void that <a href="http://www.evolving-software.co.uk/trueview-domain-modeller.html">TrueView </a>attempts to address.  It&#8217;s not about UI design, or database design, or Web Service contracts.  It&#8217;s about creating interactive domain models that Domain Experts and Software Experts can explore, discuss, and help refine the <strong>ubiquitous language</strong>.</p>
<p>If you haven&#8217;t tried it already, you can <a href="http://www.evolving-software.co.uk/downloads/TrueViewFreeTrial.exe">download it here</a>. I hope you find it useful.</p>
]]></content:encoded>
			<wfw:commentRss>http://evolving-software.co.uk/blog/2009/06/30/eric-evans-what-ive-learned-about-ddd-since-the-book/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
