<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss 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:media="http://search.yahoo.com/mrss/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>.net and other musings</title>
	
	<link>http://benl.wordpress.com</link>
	<description>the blog by Ben Lovell, developer extraordinaire!</description>
	<pubDate>Thu, 15 May 2008 17:11:54 +0000</pubDate>
	<generator>http://wordpress.org/?v=MU</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/benl" type="application/rss+xml" /><item>
		<title>Incremental development with Monorail: Part Seven</title>
		<link>http://feeds.feedburner.com/~r/benl/~3/291063379/</link>
		<comments>http://benl.wordpress.com/2008/05/15/incremental-development-with-monorail-part-seven/#comments</comments>
		<pubDate>Thu, 15 May 2008 17:11:54 +0000</pubDate>
		<dc:creator>benl</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[ALT.NET]]></category>

		<category><![CDATA[ASP.NET]]></category>

		<category><![CDATA[Monorail]]></category>

		<category><![CDATA[TDD]]></category>

		<category><![CDATA[TestDrivenDevelopment]]></category>

		<category><![CDATA[Visual Studio]]></category>

		<category><![CDATA[Windsor]]></category>

		<guid isPermaLink="false">http://benl.wordpress.com/2008/05/15/incremental-development-with-monorail-part-seven/</guid>
		<description><![CDATA[Since our last installment I slipped in a ninja-edit to one of the configuration files. This was to ensure that our sole service was marked as transient rather than the default Windsor lifestyle of singleton. This was pointed out to me by an eagle-eyed commenter and was an oversight on my part. So we&#8217;re now [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Since our last installment I slipped in a ninja-edit to one of the configuration files. This was to ensure that our sole service was marked as transient rather than the default Windsor lifestyle of singleton. This was pointed out to me by an <a href="http://justinram.wordpress.com/">eagle-eyed commenter</a> and was an oversight on my part. So we&#8217;re now at rev10 and ready to roll once again!</p>
<p>In our last post we tidied up a few bits and improved our code-base rather than actually adding features as such. This time we&#8217;re going to move down into the persistence and start to drive out this notional layer.</p>
<p>We&#8217;re going to handle data access using the repository pattern. The repositories will work on our ActiveRecord entities ensuring they&#8217;re persisted to our database. We will introduce a new interaction between our service <strong>BlogPostService </strong>and the newly introduced repository interface <strong>IBlogPostRepository</strong>. Let&#8217;s get on and write a test:</p>
<p><a href="http://benl.files.wordpress.com/2008/05/71.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="407" alt="71" src="http://benl.files.wordpress.com/2008/05/71-thumb.png?w=508&h=407" width="508" border="0"></a> </p>
<p>The test above is fairly self-explanatory. We&#8217;ve introduced the <strong>IBlogPostRepository </strong>and we&#8217;re passing it into our <strong>BlogPostService </strong>which should then call the <strong>Save </strong>method passing our mapped <strong>post</strong>. We need to get rid of the red code and get the test passing, so first we must create our new interface, and then modify the service constructor:</p>
<p><a href="http://benl.files.wordpress.com/2008/05/72.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="77" alt="72" src="http://benl.files.wordpress.com/2008/05/72-thumb.png?w=508&h=77" width="508" border="0"></a> </p>
<p><a href="http://benl.files.wordpress.com/2008/05/73.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="118" alt="73" src="http://benl.files.wordpress.com/2008/05/73-thumb.png?w=508&h=118" width="508" border="0"></a> </p>
<p>We need to modify our other tests that construct the <strong>BlogPostService </strong>as they&#8217;re still assuming only a single argument constructor exists. As we have some duplication going on we&#8217;ll push this construction up into our setup code:</p>
<p><a href="http://benl.files.wordpress.com/2008/05/74.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="282" alt="74" src="http://benl.files.wordpress.com/2008/05/74-thumb.png?w=508&h=282" width="508" border="0"></a> </p>
<p>We should be able to run our tests in this fixture now:</p>
<p><a href="http://benl.files.wordpress.com/2008/05/75.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="143" alt="75" src="http://benl.files.wordpress.com/2008/05/75-thumb.png?w=508&h=143" width="508" border="0"></a> </p>
<p>As expected, since our <strong>BlogPostService </strong>doesn&#8217;t actually do much with our repository yet, we need to do some pretty minor tweaking to pass this test:</p>
<p><a href="http://benl.files.wordpress.com/2008/05/76.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="113" alt="76" src="http://benl.files.wordpress.com/2008/05/76-thumb.png?w=508&h=113" width="508" border="0"></a></p>
<p>Let&#8217;s try again now:</p>
<p><a href="http://benl.files.wordpress.com/2008/05/77.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="56" alt="77" src="http://benl.files.wordpress.com/2008/05/77-thumb.png?w=508&h=56" width="508" border="0"></a>&nbsp; Cool, let us try and run the whole suite including our integration type tests:</p>
<p><a href="http://benl.files.wordpress.com/2008/05/78.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="138" alt="78" src="http://benl.files.wordpress.com/2008/05/78-thumb.png?w=508&h=138" width="508" border="0"></a> </p>
<p>The integration tests are failing as we&#8217;ve yet to map the new dependency in our Windsor configuration. We can specify this now:</p>
<p><a href="http://benl.files.wordpress.com/2008/05/79.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="54" alt="79" src="http://benl.files.wordpress.com/2008/05/79-thumb.png?w=508&h=54" width="508" border="0"></a> </p>
<p>We still have failing integration tests though, so we need to add the <strong>BlogPostRepository</strong> specified in our configuration:</p>
<p><a href="http://benl.files.wordpress.com/2008/05/80.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="142" alt="80" src="http://benl.files.wordpress.com/2008/05/80-thumb.png?w=508&h=142" width="508" border="0"></a> </p>
<p>As you can see it doesn&#8217;t do much, but we just want our tests passing at this stage. Let&#8217;s run the whole suite of tests now:</p>
<p><a href="http://benl.files.wordpress.com/2008/05/81.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="30" alt="81" src="http://benl.files.wordpress.com/2008/05/81-thumb.png?w=476&h=30" width="476" border="0"></a> </p>
<p>Great, we have a working product once more. I&#8217;m going to finish here, as ever, the latest changes have been committed:</p>
<p><a title="http://code.google.com/p/mr-blogengine/" href="http://code.google.com/p/mr-blogengine/">http://code.google.com/p/mr-blogengine/</a></p>
<p>Next time we&#8217;ll make our new repository more useful and <em>finally </em>hit the database!</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/benl.wordpress.com/385/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/benl.wordpress.com/385/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benl.wordpress.com/385/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benl.wordpress.com/385/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benl.wordpress.com/385/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benl.wordpress.com/385/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benl.wordpress.com/385/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benl.wordpress.com/385/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benl.wordpress.com/385/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benl.wordpress.com/385/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benl.wordpress.com/385/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benl.wordpress.com/385/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benl.wordpress.com&blog=178045&post=385&subd=benl&ref=&feed=1" /></div><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/benl?a=SSafAH"><img src="http://feeds.feedburner.com/~f/benl?i=SSafAH" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=UctmCh"><img src="http://feeds.feedburner.com/~f/benl?i=UctmCh" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=Usfluh"><img src="http://feeds.feedburner.com/~f/benl?i=Usfluh" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=WDwl2h"><img src="http://feeds.feedburner.com/~f/benl?i=WDwl2h" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/benl/~4/291063379" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://benl.wordpress.com/2008/05/15/incremental-development-with-monorail-part-seven/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/benl-128.jpg" medium="image">
			<media:title type="html">Ben</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/05/71-thumb.png" medium="image">
			<media:title type="html">71</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/05/72-thumb.png" medium="image">
			<media:title type="html">72</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/05/73-thumb.png" medium="image">
			<media:title type="html">73</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/05/74-thumb.png" medium="image">
			<media:title type="html">74</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/05/75-thumb.png" medium="image">
			<media:title type="html">75</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/05/76-thumb.png" medium="image">
			<media:title type="html">76</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/05/77-thumb.png" medium="image">
			<media:title type="html">77</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/05/78-thumb.png" medium="image">
			<media:title type="html">78</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/05/79-thumb.png" medium="image">
			<media:title type="html">79</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/05/80-thumb.png" medium="image">
			<media:title type="html">80</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/05/81-thumb.png" medium="image">
			<media:title type="html">81</media:title>
		</media:content>
	<feedburner:origLink>http://benl.wordpress.com/2008/05/15/incremental-development-with-monorail-part-seven/</feedburner:origLink></item>
		<item>
		<title>Incremental development with Monorail: Part Six</title>
		<link>http://feeds.feedburner.com/~r/benl/~3/283826661/</link>
		<comments>http://benl.wordpress.com/2008/05/05/incremental-development-with-monorail-part-six/#comments</comments>
		<pubDate>Mon, 05 May 2008 09:50:14 +0000</pubDate>
		<dc:creator>benl</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[ALT.NET]]></category>

		<category><![CDATA[Castle]]></category>

		<category><![CDATA[Monorail]]></category>

		<category><![CDATA[Open Source]]></category>

		<category><![CDATA[TDD]]></category>

		<category><![CDATA[TestDrivenDevelopment]]></category>

		<category><![CDATA[Windsor]]></category>

		<guid isPermaLink="false">http://benl.wordpress.com/2008/05/05/incremental-development-with-monorail-part-six/</guid>
		<description><![CDATA[We finished up in part five with a full suite of passing tests and our BlogPostService is slowly taking shape now. The next few posts will introduce persistence and validation but before we get started on these features, we have a little housekeeping to perform on our existing code. 
First step is to build the [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>We finished up in part five with a full suite of passing tests and our <strong>BlogPostService </strong>is slowly taking shape now. The next few posts will introduce persistence and validation but before we get started on these features, we have a little housekeeping to perform on our existing code. </p>
<p>First step is to build the Castle trunk and update our references to the latest versions. Secondly, we&#8217;ll incorporate a few changes suggested by <a href="http://hammett.castleproject.org/?p=280">Hammett</a>.</p>
<p>After building and replacing our references with the latest Castle build I&#8217;ll run the tests as a sanity check before we proceed:</p>
<p><a href="http://benl.files.wordpress.com/2008/05/62.png"><img style="border-width:0;" height="28" alt="62" src="http://benl.files.wordpress.com/2008/05/62-thumb.png?w=508&h=28" width="508" border="0"></a> </p>
<p>With that out of the way our first code change will ensure we play nicely with HTTP. It is considered good practice to ensure requests which update or create resources is carried out via POST - so we can modify our only <strong>PostController.Save</strong> action to ensure this is so but before we do this we&#8217;ll write a test:</p>
<p><a href="http://benl.files.wordpress.com/2008/05/60.png"><img style="border-width:0;" height="105" alt="60" src="http://benl.files.wordpress.com/2008/05/60-thumb.png?w=508&h=105" width="508" border="0"></a> </p>
<p>Running our test produces the following:</p>
<p><a href="http://benl.files.wordpress.com/2008/05/61.png"><img style="border-width:0;" height="36" alt="61" src="http://benl.files.wordpress.com/2008/05/61-thumb.png?w=508&h=36" width="508" border="0"></a> </p>
<p>We&#8217;ll modify our <strong>Save </strong>action now to ensure we only accept the <strong>POST</strong> verb:</p>
<p><a href="http://benl.files.wordpress.com/2008/05/63.png"><img style="border-width:0;" height="130" alt="63" src="http://benl.files.wordpress.com/2008/05/63-thumb.png?w=508&h=130" width="508" border="0"></a></p>
<p>We have added the <strong>AccessibleThrough </strong>attribute and explicitly specified that our action must only allow the <strong>POST</strong> verb. We&#8217;ll run our test again and make sure everything is working as expected:</p>
<p><a href="http://benl.files.wordpress.com/2008/05/64.png"><img style="border-width:0;" height="26" alt="64" src="http://benl.files.wordpress.com/2008/05/64-thumb.png?w=508&h=26" width="508" border="0"></a> </p>
<p>The next step is to modify our <strong>add.vm </strong>view to use the helper methods to generate our form tags. We&#8217;ve done that and once again we&#8217;ll run our tests:</p>
<p><a href="http://benl.files.wordpress.com/2008/05/65.png"><img style="border-width:0;" height="25" alt="65" src="http://benl.files.wordpress.com/2008/05/65-thumb.png?w=508&h=25" width="508" border="0"></a> </p>
<p>I&#8217;m noticing a little duplication creeping in to our integration tests that should be removed. Also, until now we&#8217;ve had to assume that a web server is running on a specific port on our development machine in order to run the integration tests. Through a little tweaking we can spin-up a temporary server in our test fixture setup code and host our test code there instead.</p>
<p>First we add the <strong>WebDev.WebHost.dll </strong>to our <strong>lib </strong>project directory and ensure we&#8217;re referencing this from the testing project. The next step is to create an <strong>app.config</strong> file in the testing project so we can configure where and from which port our testing server should be hosting from:</p>
<p><a href="http://benl.files.wordpress.com/2008/05/66.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="114" alt="66" src="http://benl.files.wordpress.com/2008/05/66-thumb.png?w=508&h=114" width="508" border="0"></a>&nbsp; Now we add some setup code for the fixture:</p>
<p><a href="http://benl.files.wordpress.com/2008/05/67.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="241" alt="67" src="http://benl.files.wordpress.com/2008/05/67-thumb.png?w=508&h=241" width="508" border="0"></a> </p>
<p>We&#8217;ll also make sure we bring the server down when we&#8217;re finished:</p>
<p><a href="http://benl.files.wordpress.com/2008/05/68.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="98" alt="68" src="http://benl.files.wordpress.com/2008/05/68-thumb.png?w=508&h=98" width="508" border="0"></a> </p>
<p>Now ensure the VS web server is not running on the same port, then we can run our tests and make sure our latest changes work out:</p>
<p><a href="http://benl.files.wordpress.com/2008/05/69.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="81" alt="69" src="http://benl.files.wordpress.com/2008/05/69-thumb.png?w=508&h=81" width="508" border="0"></a> </p>
<p>Now, since we specify the web root and port through configuration, we should also use these configurable values to determine the URLs in our tests:</p>
<p><a href="http://benl.files.wordpress.com/2008/05/70.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="169" alt="70" src="http://benl.files.wordpress.com/2008/05/70-thumb.png?w=508&h=169" width="508" border="0"></a> </p>
<p>You can see our tests now call <strong>BuildTestUrl </strong>to determine the full URL where we&#8217;re hosting the development server. Neat. I&#8217;m sure when we add further integration fixtures we&#8217;ll extract class this, but for now we have a nice working set of tests and should remember the principle of YAGNI!</p>
<p>I&#8217;m going to cut this installment short here. In the next post we&#8217;ll get back into the swing of it and continue implementing features.</p>
<p>As ever, the latest code has been checked in and is available here:</p>
<p><a href="http://code.google.com/p/mr-blogengine/">http://code.google.com/p/mr-blogengine/</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/benl.wordpress.com/362/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/benl.wordpress.com/362/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benl.wordpress.com/362/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benl.wordpress.com/362/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benl.wordpress.com/362/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benl.wordpress.com/362/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benl.wordpress.com/362/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benl.wordpress.com/362/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benl.wordpress.com/362/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benl.wordpress.com/362/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benl.wordpress.com/362/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benl.wordpress.com/362/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benl.wordpress.com&blog=178045&post=362&subd=benl&ref=&feed=1" /></div><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/benl?a=Sy2dWH"><img src="http://feeds.feedburner.com/~f/benl?i=Sy2dWH" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=eLYXdh"><img src="http://feeds.feedburner.com/~f/benl?i=eLYXdh" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=64AEsh"><img src="http://feeds.feedburner.com/~f/benl?i=64AEsh" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=N4VK7h"><img src="http://feeds.feedburner.com/~f/benl?i=N4VK7h" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/benl/~4/283826661" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://benl.wordpress.com/2008/05/05/incremental-development-with-monorail-part-six/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/benl-128.jpg" medium="image">
			<media:title type="html">Ben</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/05/62-thumb.png" medium="image">
			<media:title type="html">62</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/05/60-thumb.png" medium="image">
			<media:title type="html">60</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/05/61-thumb.png" medium="image">
			<media:title type="html">61</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/05/63-thumb.png" medium="image">
			<media:title type="html">63</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/05/64-thumb.png" medium="image">
			<media:title type="html">64</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/05/65-thumb.png" medium="image">
			<media:title type="html">65</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/05/66-thumb.png" medium="image">
			<media:title type="html">66</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/05/67-thumb.png" medium="image">
			<media:title type="html">67</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/05/68-thumb.png" medium="image">
			<media:title type="html">68</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/05/69-thumb.png" medium="image">
			<media:title type="html">69</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/05/70-thumb.png" medium="image">
			<media:title type="html">70</media:title>
		</media:content>
	<feedburner:origLink>http://benl.wordpress.com/2008/05/05/incremental-development-with-monorail-part-six/</feedburner:origLink></item>
		<item>
		<title>MVC Storefront</title>
		<link>http://feeds.feedburner.com/~r/benl/~3/279911642/</link>
		<comments>http://benl.wordpress.com/2008/04/29/mvc-storefront/#comments</comments>
		<pubDate>Tue, 29 Apr 2008 07:20:57 +0000</pubDate>
		<dc:creator>benl</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[ALT.NET]]></category>

		<category><![CDATA[ASP.NET]]></category>

		<category><![CDATA[Castle]]></category>

		<category><![CDATA[MVC]]></category>

		<category><![CDATA[Monorail]]></category>

		<category><![CDATA[TDD]]></category>

		<category><![CDATA[TestDrivenDevelopment]]></category>

		<guid isPermaLink="false">http://benl.wordpress.com/2008/04/29/mvc-storefront/</guid>
		<description><![CDATA[Rob Conery has been posting a series of screencasts featuring the development of an ASP.NET MVC based product catalogue. This is being carried out in a &#8220;TDD&#8221; like fashion. The interesting difference between his posts and mine (apart from the obvious fact that I&#8217;m lazy and haven&#8217;t screencasted&#8230; yet) is that he starts from the [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://blog.wekeroad.com/" target="_blank">Rob Conery</a> has been posting a <a href="http://blog.wekeroad.com/mvc-storefront/mvcstore-part-6/" target="_blank">series of screencasts</a> featuring the development of an ASP.NET MVC based product catalogue. This is being carried out in a &#8220;TDD&#8221; like fashion. The interesting difference between his posts and mine (apart from the obvious fact that I&#8217;m lazy and haven&#8217;t screencasted&#8230; yet) is that he starts from the bottom of the stack and works upwards towards the UI where as I do the opposite.</p>
<p>Its interesting contrasting the two approaches not to mention the differences between the ASP.NET MVC framework and Castle Monorail way of getting things done.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/benl.wordpress.com/339/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/benl.wordpress.com/339/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benl.wordpress.com/339/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benl.wordpress.com/339/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benl.wordpress.com/339/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benl.wordpress.com/339/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benl.wordpress.com/339/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benl.wordpress.com/339/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benl.wordpress.com/339/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benl.wordpress.com/339/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benl.wordpress.com/339/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benl.wordpress.com/339/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benl.wordpress.com&blog=178045&post=339&subd=benl&ref=&feed=1" /></div><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/benl?a=PL2dyG"><img src="http://feeds.feedburner.com/~f/benl?i=PL2dyG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=JaM8Xg"><img src="http://feeds.feedburner.com/~f/benl?i=JaM8Xg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=mbUEig"><img src="http://feeds.feedburner.com/~f/benl?i=mbUEig" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=t99xlg"><img src="http://feeds.feedburner.com/~f/benl?i=t99xlg" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/benl/~4/279911642" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://benl.wordpress.com/2008/04/29/mvc-storefront/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/benl-128.jpg" medium="image">
			<media:title type="html">Ben</media:title>
		</media:content>
	<feedburner:origLink>http://benl.wordpress.com/2008/04/29/mvc-storefront/</feedburner:origLink></item>
		<item>
		<title>Incremental development with Monorail: Part Five</title>
		<link>http://feeds.feedburner.com/~r/benl/~3/277146398/</link>
		<comments>http://benl.wordpress.com/2008/04/24/incremental-development-with-monorail-part-five/#comments</comments>
		<pubDate>Thu, 24 Apr 2008 20:20:29 +0000</pubDate>
		<dc:creator>benl</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[ALT.NET]]></category>

		<category><![CDATA[ASP.NET]]></category>

		<category><![CDATA[DDD]]></category>

		<category><![CDATA[Monorail]]></category>

		<category><![CDATA[TDD]]></category>

		<category><![CDATA[TestDrivenDevelopment]]></category>

		<category><![CDATA[Windsor]]></category>

		<guid isPermaLink="false">http://benl.wordpress.com/2008/04/24/incremental-development-with-monorail-part-five/</guid>
		<description><![CDATA[Welcome back. In this post I&#8217;ll be getting our tests passing again and cleaning things up a little. We left off with a failing integration test:
 
I suspect this is due to the IBlogPostMapper dependency we introduced to our BlogPostService not being handled by the container. If we run in the browser we can confirm [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Welcome back. In this post I&#8217;ll be getting our tests passing again and cleaning things up a little. We left off with a failing integration test:</p>
<p><a href="http://benl.files.wordpress.com/2008/04/421.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="125" alt="42" src="http://benl.files.wordpress.com/2008/04/42-thumb1.png?w=508&h=125" width="508" border="0"></a> </p>
<p>I suspect this is due to the <strong>IBlogPostMapper </strong>dependency we introduced to our <strong>BlogPostService </strong>not being handled by the container. If we run in the browser we can confirm this is in fact true:</p>
<p><a href="http://benl.files.wordpress.com/2008/04/.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="315" alt="" src="http://benl.files.wordpress.com/2008/04/thumb.png?w=504&h=315" width="504" border="0"></a> </p>
<p>As we&#8217;ve yet to implement our <strong>IBlogPostMapper </strong>we must go ahead and do this before we can add the container configuration to pass our integration test. Lets bust out a test and get things rolling:</p>
<p><a href="http://benl.files.wordpress.com/2008/04/43.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="462" alt="43" src="http://benl.files.wordpress.com/2008/04/43-thumb.png?w=508&h=462" width="508" border="0"></a> </p>
<p>We have a few blanks to fill in in order to get this to compile and run:</p>
<ol>
<li>Make the DTO&#8217;s properties virtual so we can mock them. This is in preference to extracting an interface<strong>. </strong></li>
<li>Implement <strong>IBlogPostMapper</strong>.</li>
<li>Add the necessary properties to the <strong>IBlogPost </strong>interface.</li>
</ol>
<p>Lets go ahead and do this now:</p>
<p><a href="http://benl.files.wordpress.com/2008/04/44.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="438" alt="44" src="http://benl.files.wordpress.com/2008/04/44-thumb.png?w=508&h=438" width="508" border="0"></a></p>
<p><strong>IBlogPostMapper </strong>minimal implementation:</p>
<p><a href="http://benl.files.wordpress.com/2008/04/45.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="162" alt="45" src="http://benl.files.wordpress.com/2008/04/45-thumb.png?w=508&h=162" width="508" border="0"></a>&nbsp; </p>
<p>The necessary modifications to <strong>IBlogPost</strong>:</p>
<p><a href="http://benl.files.wordpress.com/2008/04/46.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="167" alt="46" src="http://benl.files.wordpress.com/2008/04/46-thumb.png?w=508&h=167" width="508" border="0"></a> </p>
<p>Now we can compile and run our test:</p>
<p><a href="http://benl.files.wordpress.com/2008/04/47.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="95" alt="47" src="http://benl.files.wordpress.com/2008/04/47-thumb.png?w=508&h=95" width="508" border="0"></a> </p>
<p>Our <strong>BlogPostMapper </strong>implementation is throwing an exception so lets go back and take another step to try and pass our test:</p>
<p><a href="http://benl.files.wordpress.com/2008/04/48.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="133" alt="48" src="http://benl.files.wordpress.com/2008/04/48-thumb.png?w=508&h=133" width="508" border="0"></a> </p>
<p><strong>BlogPost</strong>:</p>
<p><a href="http://benl.files.wordpress.com/2008/04/49.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="418" alt="49" src="http://benl.files.wordpress.com/2008/04/49-thumb.png?w=508&h=418" width="508" border="0"></a> </p>
<p>I&#8217;m pretty certain we&#8217;ve done enough to pass our test now. Lets have a go:</p>
<p><a href="http://benl.files.wordpress.com/2008/04/50.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="38" alt="50" src="http://benl.files.wordpress.com/2008/04/50-thumb.png?w=508&h=38" width="508" border="0"></a> </p>
<p>OK now lets focus on the full suite:</p>
<p><a href="http://benl.files.wordpress.com/2008/04/51.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="129" alt="51" src="http://benl.files.wordpress.com/2008/04/51-thumb.png?w=508&h=129" width="508" border="0"></a> </p>
<p>Our integration test is still bombing but as we&#8217;ve got a mapper now, we can go ahead and wire up our Windsor configuration and get things moving again:</p>
<p><a href="http://benl.files.wordpress.com/2008/04/52.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="84" alt="52" src="http://benl.files.wordpress.com/2008/04/52-thumb.png?w=508&h=84" width="508" border="0"></a> </p>
<p>We&#8217;ve added another configuration file: <strong>mapper.config</strong> and referenced this from the <strong>web.config</strong>. We shouldn&#8217;t need to do any more than this so lets run our full test suite:</p>
<p><a href="http://benl.files.wordpress.com/2008/04/53.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="28" alt="53" src="http://benl.files.wordpress.com/2008/04/53-thumb.png?w=508&h=28" width="508" border="0"></a> </p>
<p>Our full suite is passing now. Not bad for 5 minutes work! As usual the latest changes are checked in to the <a href="http://code.google.com/p/mr-blogengine/" target="_blank">Google code project hosted here.</a></p>
<p>Now we have a full passing suite, in our next edition I&#8217;ll be moving down into the persistence and also incorporating a <a href="http://hammett.castleproject.org/?p=280" target="_blank">few modifications from Hammett</a>. Stay tuned!</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/benl.wordpress.com/338/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/benl.wordpress.com/338/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benl.wordpress.com/338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benl.wordpress.com/338/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benl.wordpress.com/338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benl.wordpress.com/338/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benl.wordpress.com/338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benl.wordpress.com/338/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benl.wordpress.com/338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benl.wordpress.com/338/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benl.wordpress.com/338/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benl.wordpress.com/338/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benl.wordpress.com&blog=178045&post=338&subd=benl&ref=&feed=1" /></div><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/benl?a=V3Qdr3G"><img src="http://feeds.feedburner.com/~f/benl?i=V3Qdr3G" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=ITJ3hpg"><img src="http://feeds.feedburner.com/~f/benl?i=ITJ3hpg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=PWFxQxg"><img src="http://feeds.feedburner.com/~f/benl?i=PWFxQxg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=wBGe5yg"><img src="http://feeds.feedburner.com/~f/benl?i=wBGe5yg" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/benl/~4/277146398" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://benl.wordpress.com/2008/04/24/incremental-development-with-monorail-part-five/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/benl-128.jpg" medium="image">
			<media:title type="html">Ben</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/42-thumb1.png" medium="image">
			<media:title type="html">42</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/thumb.png" medium="image" />

		<media:content url="http://benl.files.wordpress.com/2008/04/43-thumb.png" medium="image">
			<media:title type="html">43</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/44-thumb.png" medium="image">
			<media:title type="html">44</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/45-thumb.png" medium="image">
			<media:title type="html">45</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/46-thumb.png" medium="image">
			<media:title type="html">46</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/47-thumb.png" medium="image">
			<media:title type="html">47</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/48-thumb.png" medium="image">
			<media:title type="html">48</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/49-thumb.png" medium="image">
			<media:title type="html">49</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/50-thumb.png" medium="image">
			<media:title type="html">50</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/51-thumb.png" medium="image">
			<media:title type="html">51</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/52-thumb.png" medium="image">
			<media:title type="html">52</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/53-thumb.png" medium="image">
			<media:title type="html">53</media:title>
		</media:content>
	<feedburner:origLink>http://benl.wordpress.com/2008/04/24/incremental-development-with-monorail-part-five/</feedburner:origLink></item>
		<item>
		<title>Incremental development with Monorail: Part Four</title>
		<link>http://feeds.feedburner.com/~r/benl/~3/272384223/</link>
		<comments>http://benl.wordpress.com/2008/04/17/incremental-development-with-monorail-part-four/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 19:35:28 +0000</pubDate>
		<dc:creator>benl</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[ALT.NET]]></category>

		<category><![CDATA[DDD]]></category>

		<category><![CDATA[Monorail]]></category>

		<category><![CDATA[TDD]]></category>

		<category><![CDATA[TestDrivenDevelopment]]></category>

		<guid isPermaLink="false">http://benl.wordpress.com/2008/04/17/incremental-development-with-monorail-part-four/</guid>
		<description><![CDATA[We finished up in the last instalment by moving down a layer into our newly introduced BlogPostService. Our tests are passing yet our application is still pretty lacking in the actual functionality department. To move things on a stage further we need to: 

Map from the AddPostRequestDto to our actual BlogPost aggregate root.
Validate the BlogPost.
Persist [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>We finished up in the last instalment by moving down a layer into our newly introduced <strong>BlogPostService. </strong>Our tests are passing yet our application is still pretty lacking in the actual functionality department. To move things on a stage further we need to: </p>
<ol>
<li>Map from the <strong>AddPostRequestDto </strong>to our actual <strong>BlogPost </strong>aggregate root.
<li>Validate the <strong>BlogPost.</strong>
<li>Persist our new <strong>BlogPost</strong>.</li>
</ol>
<p>We need to write another test to flesh out the interaction between our service and something that can map from the DTO to our <strong>BlogPost:</strong></p>
<p><a href="http://benl.files.wordpress.com/2008/04/37.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="238" alt="37" src="http://benl.files.wordpress.com/2008/04/37-thumb.png?w=508&h=238" width="508" border="0"></a> </p>
<p>We&#8217;re now expecting the <strong>BlogPostService</strong> to accept the mapper in its constructor, and defining an interaction between the service and the mapper. Before we can get this to compile we need to make a few more changes to our test fixture:</p>
<p><a href="http://benl.files.wordpress.com/2008/04/371.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="508" alt="37" src="http://benl.files.wordpress.com/2008/04/37-thumb1.png?w=508&h=508" width="508" border="0"></a> </p>
<p>We&#8217;ve modified an existing test to allow for our new dependency and performed some setup tasks. We&#8217;ve introduced the <strong>IBlogPostMapper </strong>and <strong>IBlogPost </strong>interfaces by way of our test. Running the test causes the compiler to choke so lets go ahead and implement what we need to pass the tests:</p>
<p><a href="http://benl.files.wordpress.com/2008/04/38.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="133" alt="38" src="http://benl.files.wordpress.com/2008/04/38-thumb.png?w=508&h=133" width="508" border="0"></a> </p>
<p><a href="http://benl.files.wordpress.com/2008/04/39.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="125" alt="39" src="http://benl.files.wordpress.com/2008/04/39-thumb.png?w=508&h=125" width="508" border="0"></a> </p>
<p><a href="http://benl.files.wordpress.com/2008/04/40.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="250" alt="40" src="http://benl.files.wordpress.com/2008/04/40-thumb.png?w=508&h=250" width="508" border="0"></a> </p>
<p>Lets go ahead and run our <strong>BlogPostServiceFixture </strong>tests:</p>
<p><a href="http://benl.files.wordpress.com/2008/04/41.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="43" alt="41" src="http://benl.files.wordpress.com/2008/04/41-thumb.png?w=508&h=43" width="508" border="0"></a> </p>
<p>Righteo, that went well. For the sake of completeness lets run our full test suite:</p>
<p><a href="http://benl.files.wordpress.com/2008/04/42.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="125" alt="42" src="http://benl.files.wordpress.com/2008/04/42-thumb.png?w=508&h=125" width="508" border="0"></a> </p>
<p>The integration test is failing as we&#8217;ve yet to wire up the <strong>BlogPostService </strong>dependencies in the container. Before we can do this we need to drive out the interfaces we&#8217;ve introduced. We&#8217;ll do that in the next post.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/benl.wordpress.com/311/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/benl.wordpress.com/311/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benl.wordpress.com/311/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benl.wordpress.com/311/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benl.wordpress.com/311/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benl.wordpress.com/311/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benl.wordpress.com/311/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benl.wordpress.com/311/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benl.wordpress.com/311/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benl.wordpress.com/311/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benl.wordpress.com/311/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benl.wordpress.com/311/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benl.wordpress.com&blog=178045&post=311&subd=benl&ref=&feed=1" /></div><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/benl?a=nDt93NG"><img src="http://feeds.feedburner.com/~f/benl?i=nDt93NG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=R1eN0bg"><img src="http://feeds.feedburner.com/~f/benl?i=R1eN0bg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=LMgGcMg"><img src="http://feeds.feedburner.com/~f/benl?i=LMgGcMg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=trBHqmg"><img src="http://feeds.feedburner.com/~f/benl?i=trBHqmg" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/benl/~4/272384223" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://benl.wordpress.com/2008/04/17/incremental-development-with-monorail-part-four/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/benl-128.jpg" medium="image">
			<media:title type="html">Ben</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/37-thumb.png" medium="image">
			<media:title type="html">37</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/37-thumb1.png" medium="image">
			<media:title type="html">37</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/38-thumb.png" medium="image">
			<media:title type="html">38</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/39-thumb.png" medium="image">
			<media:title type="html">39</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/40-thumb.png" medium="image">
			<media:title type="html">40</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/41-thumb.png" medium="image">
			<media:title type="html">41</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/42-thumb.png" medium="image">
			<media:title type="html">42</media:title>
		</media:content>
	<feedburner:origLink>http://benl.wordpress.com/2008/04/17/incremental-development-with-monorail-part-four/</feedburner:origLink></item>
		<item>
		<title>Incremental development with Monorail: Part Three</title>
		<link>http://feeds.feedburner.com/~r/benl/~3/262071901/</link>
		<comments>http://benl.wordpress.com/2008/04/01/incremental-development-with-monorail-part-three/#comments</comments>
		<pubDate>Tue, 01 Apr 2008 16:49:13 +0000</pubDate>
		<dc:creator>benl</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[ALT.NET]]></category>

		<category><![CDATA[ASP.NET]]></category>

		<category><![CDATA[DDD]]></category>

		<category><![CDATA[Design Patterns]]></category>

		<category><![CDATA[Domain Driven Design]]></category>

		<category><![CDATA[MVC]]></category>

		<category><![CDATA[Monorail]]></category>

		<category><![CDATA[TDD]]></category>

		<guid isPermaLink="false">http://benl.wordpress.com/2008/04/01/incremental-development-with-monorail-part-three/</guid>
		<description><![CDATA[Part OnePart Two
In the last instalment we finished up with a suite of passing tests. However, we&#8217;ve yet to produce anything remotely usable so lets continue by reaching down further and driving out our services/persistence. We&#8217;ll start by writing the following test:
 
We&#8217;ve meddled with our test setup a little to introduce the MockRepository for [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://benl.wordpress.com/2008/03/27/incremental-development-with-monorail/">Part One</a><br /><a href="http://benl.wordpress.com/2008/03/27/incremental-development-with-monorail-part-two/">Part Two</a></p>
<p>In the last instalment we finished up with a suite of passing tests. However, we&#8217;ve yet to produce anything remotely usable so lets continue by reaching down further and driving out our services/persistence. We&#8217;ll start by writing the following test:</p>
<p><a href="http://benl.files.wordpress.com/2008/04/23.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="478" alt="23" src="http://benl.files.wordpress.com/2008/04/23-thumb.png?w=508&h=478" width="508" border="0"></a> </p>
<p>We&#8217;ve meddled with our test setup a little to introduce the <strong>MockRepository </strong>for mocking out our <strong>PostController&#8217;s</strong> new dependency on the <strong>IBlogPostService. </strong>Our test now calls the <strong>AddPost </strong>method on our service interface and sets up the resulting <strong>AddPostResponseDto</strong>. Running the test produces a bunch of compiler whinging so we best implement the newly introduced bits:</p>
<p><a href="http://benl.files.wordpress.com/2008/04/24.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="99" alt="24" src="http://benl.files.wordpress.com/2008/04/24-thumb.png?w=508&h=99" width="508" border="0"></a></p>
<p><a href="http://benl.files.wordpress.com/2008/04/25.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="309" alt="25" src="http://benl.files.wordpress.com/2008/04/25-thumb.png?w=508&h=309" width="508" border="0"></a>&nbsp; </p>
<p><a href="http://benl.files.wordpress.com/2008/04/26.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="181" alt="26" src="http://benl.files.wordpress.com/2008/04/26-thumb.png?w=508&h=181" width="508" border="0"></a> </p>
<p>These are the only changes and additions we&#8217;ve made in order for the tests to compile and run. Running our test now produces the following result:</p>
<p><a href="http://benl.files.wordpress.com/2008/04/27.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="27" alt="27" src="http://benl.files.wordpress.com/2008/04/27-thumb.png?w=508&h=27" width="508" border="0"></a> </p>
<p>As we&#8217;ve yet to modify the <strong>PostController.Save(&#8230;) </strong>call to include a call the newly introduced <strong>IBlogPostService </strong>dependency. Lets go ahead and do this now:</p>
<p><a href="http://benl.files.wordpress.com/2008/04/28.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="144" alt="28" src="http://benl.files.wordpress.com/2008/04/28-thumb.png?w=508&h=144" width="508" border="0"></a> </p>
<p>We&#8217;ve now included the call to our newly introduced service and we set the <strong>responseMessage </strong>if the response is signaled as successful. Lets run our test now:</p>
<p><a href="http://benl.files.wordpress.com/2008/04/29.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="24" alt="29" src="http://benl.files.wordpress.com/2008/04/29-thumb.png?w=495&h=24" width="495" border="0"></a> </p>
<p>It works, ship it! Actually no, again we&#8217;re pretty low on <em>actual </em>functionality right now. Remember we&#8217;ve yet to actually drive out any implementation of the <strong>IBlogPostService </strong>interface as yet and I expect that the acceptance test will fail horribly since we didn&#8217;t wire up the necessary container configuration either. Lets go ahead and run the whole test suite and see what gives:</p>
<p><a href="http://benl.files.wordpress.com/2008/04/30.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="132" alt="30" src="http://benl.files.wordpress.com/2008/04/30-thumb.png?w=508&h=132" width="508" border="0"></a> </p>
<p>In the brief moments the browser appears during the test we can see the following:</p>
<p><a href="http://benl.files.wordpress.com/2008/04/31.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="407" alt="31" src="http://benl.files.wordpress.com/2008/04/31-thumb.png?w=508&h=407" width="508" border="0"></a> </p>
<p>Hmm, as I predicted earlier our application fails to run due to the lack of proper container configuration. Before we can do this we need to implement the <strong>IBlogPostService </strong>interface somewhere. We need to write a failing test to begin our foray into the implementation of a <strong>BlogPostService</strong>:</p>
<p><a href="http://benl.files.wordpress.com/2008/04/32.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="124" alt="32" src="http://benl.files.wordpress.com/2008/04/32-thumb.png?w=508&h=124" width="508" border="0"></a> </p>
<p>Lets create the <strong>BlogPostService </strong>only performing the steps necessary to pass the test above:</p>
<p><a href="http://benl.files.wordpress.com/2008/04/33.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="184" alt="33" src="http://benl.files.wordpress.com/2008/04/33-thumb.png?w=508&h=184" width="508" border="0"></a> </p>
<p>Run the test:</p>
<p><a href="http://benl.files.wordpress.com/2008/04/34.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="19" alt="34" src="http://benl.files.wordpress.com/2008/04/34-thumb.png?w=508&h=19" width="508" border="0"></a> </p>
<p>Now we have a working <strong>BlogPostService </strong>we can now wire up our container configuration to pass the acceptance test:</p>
<p><a href="http://benl.files.wordpress.com/2008/04/35.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="86" alt="35" src="http://benl.files.wordpress.com/2008/04/35-thumb.png?w=508&h=86" width="508" border="0"></a> </p>
<p>Now running the full suite of tests produces the following:</p>
<p><a href="http://benl.files.wordpress.com/2008/04/36.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="36" alt="36" src="http://benl.files.wordpress.com/2008/04/36-thumb.png?w=508&h=36" width="508" border="0"></a> </p>
<p>Our tests pass!</p>
<p>That&#8217;s it for this post. I&#8217;ve checked in the latest changes to the repository. In the next post we&#8217;ll continue our efforts and begin to implement validation on our screen-bound DTO&#8217;s.</p>
<p>Google code hosted project: <a title="http://code.google.com/p/mr-blogengine/" href="http://code.google.com/p/mr-blogengine/">http://code.google.com/p/mr-blogengine/</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/benl.wordpress.com/296/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/benl.wordpress.com/296/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benl.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benl.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benl.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benl.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benl.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benl.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benl.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benl.wordpress.com/296/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benl.wordpress.com/296/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benl.wordpress.com/296/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benl.wordpress.com&blog=178045&post=296&subd=benl&ref=&feed=1" /></div><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/benl?a=NGUPs9G"><img src="http://feeds.feedburner.com/~f/benl?i=NGUPs9G" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=SpnRXYg"><img src="http://feeds.feedburner.com/~f/benl?i=SpnRXYg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=709hyvg"><img src="http://feeds.feedburner.com/~f/benl?i=709hyvg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=knYSfFg"><img src="http://feeds.feedburner.com/~f/benl?i=knYSfFg" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/benl/~4/262071901" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://benl.wordpress.com/2008/04/01/incremental-development-with-monorail-part-three/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/benl-128.jpg" medium="image">
			<media:title type="html">Ben</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/23-thumb.png" medium="image">
			<media:title type="html">23</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/24-thumb.png" medium="image">
			<media:title type="html">24</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/25-thumb.png" medium="image">
			<media:title type="html">25</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/26-thumb.png" medium="image">
			<media:title type="html">26</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/27-thumb.png" medium="image">
			<media:title type="html">27</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/28-thumb.png" medium="image">
			<media:title type="html">28</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/29-thumb.png" medium="image">
			<media:title type="html">29</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/30-thumb.png" medium="image">
			<media:title type="html">30</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/31-thumb.png" medium="image">
			<media:title type="html">31</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/32-thumb.png" medium="image">
			<media:title type="html">32</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/33-thumb.png" medium="image">
			<media:title type="html">33</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/34-thumb.png" medium="image">
			<media:title type="html">34</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/35-thumb.png" medium="image">
			<media:title type="html">35</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/04/36-thumb.png" medium="image">
			<media:title type="html">36</media:title>
		</media:content>
	<feedburner:origLink>http://benl.wordpress.com/2008/04/01/incremental-development-with-monorail-part-three/</feedburner:origLink></item>
		<item>
		<title>Incremental development with Monorail: Part Two</title>
		<link>http://feeds.feedburner.com/~r/benl/~3/259134074/</link>
		<comments>http://benl.wordpress.com/2008/03/27/incremental-development-with-monorail-part-two/#comments</comments>
		<pubDate>Thu, 27 Mar 2008 17:58:31 +0000</pubDate>
		<dc:creator>benl</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[ALT.NET]]></category>

		<category><![CDATA[Castle]]></category>

		<category><![CDATA[Monorail]]></category>

		<category><![CDATA[TDD]]></category>

		<category><![CDATA[TestDrivenDevelopment]]></category>

		<guid isPermaLink="false">http://benl.wordpress.com/2008/03/27/incremental-development-with-monorail-part-two/</guid>
		<description><![CDATA[Part one can be found here.
So in part one we had finished up at a failing test. Lets recap what this was:
 
And our failing test:
 
Our add view assumes that a Save action exists on our PostController. In attempting to make the test above pass, we will introduce this new action. However, this will [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://benl.wordpress.com/2008/03/27/incremental-development-with-monorail/">Part one can be found here.</a></p>
<p>So in part one we had finished up at a failing test. Lets recap what this was:</p>
<p><a href="http://benl.files.wordpress.com/2008/03/145.png"><img style="border-width:0;" height="24" alt="14" src="http://benl.files.wordpress.com/2008/03/14-thumb4.png?w=508&h=24" width="508" border="0"></a> </p>
<p>And our failing test:</p>
<p><a href="http://benl.files.wordpress.com/2008/03/95.png"><img style="border-width:0;" height="274" alt="9" src="http://benl.files.wordpress.com/2008/03/9-thumb4.png?w=508&h=274" width="508" border="0"></a> </p>
<p>Our <strong>add </strong>view assumes that a <strong>Save </strong>action exists on our <strong>PostController</strong>. In attempting to make the test above pass, we will introduce this new action. However, this will be driven out from the <strong>PostController&#8217;s </strong>test fixture like so:</p>
<p><a href="http://benl.files.wordpress.com/2008/03/151.png"><img style="border-width:0;" height="209" alt="15" src="http://benl.files.wordpress.com/2008/03/15-thumb.png?w=508&h=209" width="508" border="0"></a> </p>
<p>We&#8217;re faced with a bunch of unimplemented types and members shown in red thanks to Resharper&#8217;s error highlighting. As you can see from the test we&#8217;ve introduced the <strong>AddPostRequestDto</strong> and the three properties it exposes. Secondly we&#8217;ve introduced the <strong>Save </strong>action to the <strong>PostController </strong>that accepts our <strong>AddPostRequestDto</strong>. Our test then simply asserts that the correct response was set and that the <strong>postcreated </strong>view is displayed.</p>
<p>Our first step is the implementation of the <strong>AddPostRequestDto. </strong>Thankfully Resharper will perform this for us<strong>:</strong></p>
<p><strong><a href="http://benl.files.wordpress.com/2008/03/161.png"><img style="border-width:0;" height="522" alt="16" src="http://benl.files.wordpress.com/2008/03/16-thumb.png?w=508&h=522" width="508" border="0"></a>&nbsp;</strong></p>
<p>We&#8217;ve added this new type to the <strong>Core </strong>project under a new <strong>Messages </strong>namespace and folder for organisation.</p>
<p>Lets now go ahead and implement the new <strong>Save </strong>action on the <strong>PostController:</strong></p>
<p><a href="http://benl.files.wordpress.com/2008/03/171.png"><img style="border-width:0;" height="83" alt="17" src="http://benl.files.wordpress.com/2008/03/17-thumb.png?w=508&h=83" width="508" border="0"></a> </p>
<p>As you can no doubt see, we&#8217;ve done only the simplest thing possible to pass the test. Lets run our tests and see the results:</p>
<p><a href="http://benl.files.wordpress.com/2008/03/18.png"><img style="border-width:0;" height="48" alt="18" src="http://benl.files.wordpress.com/2008/03/18-thumb.png?w=508&h=48" width="508" border="0"></a> </p>
<p>Well our controller fixtures pass nicely. I&#8217;ve got a sneaky suspicion that our acceptance test might fail however:</p>
<p><a href="http://benl.files.wordpress.com/2008/03/19.png"><img style="border-width:0;" height="25" alt="19" src="http://benl.files.wordpress.com/2008/03/19-thumb.png?w=508&h=25" width="508" border="0"></a> </p>
<p>The expected confirmation was not displayed! We can assume this is as we&#8217;ve yet to create the <strong>postcreated </strong>view and spat back the <strong>responseMessage </strong>from this. Lets go ahead and create the view now:</p>
<p>&nbsp;<a href="http://benl.files.wordpress.com/2008/03/20.png"><img style="border-width:0;" height="51" alt="20" src="http://benl.files.wordpress.com/2008/03/20-thumb.png?w=508&h=51" width="508" border="0"></a> </p>
<p>If I run the test again, in the very short time the browser is visible I can see that we&#8217;re failing with an exception occurring during the Monorail binding. To fix this we need to derive the <strong>PostController</strong>&nbsp; from Monorail&#8217;s <strong>SmartDispatcherController</strong> and add the <strong>DataBind </strong>attribute to the <strong>Save </strong>action&#8217;s only parameter:</p>
<p><a href="http://benl.files.wordpress.com/2008/03/211.png"><img style="border-width:0;" height="216" alt="21" src="http://benl.files.wordpress.com/2008/03/21-thumb.png?w=508&h=216" width="508" border="0"></a> </p>
<p>So lets go ahead and run our whole test suite:</p>
<p><a href="http://benl.files.wordpress.com/2008/03/221.png"><img style="border-width:0;" height="43" alt="22" src="http://benl.files.wordpress.com/2008/03/22-thumb.png?w=508&h=43" width="508" border="0"></a> </p>
<p>Sweet! How functional our application is at this stage is still pretty debatable but we&#8217;re getting there <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Our next task is to actually step down a layer and introduce a service to handle our persistence. I&#8217;ve checked in the latest changes. Stay tuned for the next post.</p>
<p>The google code hosted project: <a title="http://code.google.com/p/mr-blogengine/" href="http://code.google.com/p/mr-blogengine/">http://code.google.com/p/mr-blogengine/</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/benl.wordpress.com/267/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/benl.wordpress.com/267/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benl.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benl.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benl.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benl.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benl.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benl.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benl.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benl.wordpress.com/267/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benl.wordpress.com/267/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benl.wordpress.com/267/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benl.wordpress.com&blog=178045&post=267&subd=benl&ref=&feed=1" /></div><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/benl?a=Ns6ROEG"><img src="http://feeds.feedburner.com/~f/benl?i=Ns6ROEG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=F4m3KWg"><img src="http://feeds.feedburner.com/~f/benl?i=F4m3KWg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=tZ0zcEg"><img src="http://feeds.feedburner.com/~f/benl?i=tZ0zcEg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=0bM5xng"><img src="http://feeds.feedburner.com/~f/benl?i=0bM5xng" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/benl/~4/259134074" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://benl.wordpress.com/2008/03/27/incremental-development-with-monorail-part-two/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/benl-128.jpg" medium="image">
			<media:title type="html">Ben</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/03/14-thumb4.png" medium="image">
			<media:title type="html">14</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/03/9-thumb4.png" medium="image">
			<media:title type="html">9</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/03/15-thumb.png" medium="image">
			<media:title type="html">15</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/03/16-thumb.png" medium="image">
			<media:title type="html">16</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/03/17-thumb.png" medium="image">
			<media:title type="html">17</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/03/18-thumb.png" medium="image">
			<media:title type="html">18</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/03/19-thumb.png" medium="image">
			<media:title type="html">19</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/03/20-thumb.png" medium="image">
			<media:title type="html">20</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/03/21-thumb.png" medium="image">
			<media:title type="html">21</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/03/22-thumb.png" medium="image">
			<media:title type="html">22</media:title>
		</media:content>
	<feedburner:origLink>http://benl.wordpress.com/2008/03/27/incremental-development-with-monorail-part-two/</feedburner:origLink></item>
		<item>
		<title>Incremental development with Monorail</title>
		<link>http://feeds.feedburner.com/~r/benl/~3/258637544/</link>
		<comments>http://benl.wordpress.com/2008/03/27/incremental-development-with-monorail/#comments</comments>
		<pubDate>Thu, 27 Mar 2008 00:09:37 +0000</pubDate>
		<dc:creator>benl</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[ALT.NET]]></category>

		<category><![CDATA[Castle]]></category>

		<category><![CDATA[Design Patterns]]></category>

		<category><![CDATA[Monorail]]></category>

		<guid isPermaLink="false">http://benl.wordpress.com/2008/03/27/incremental-development-with-monorail/</guid>
		<description><![CDATA[EDIT: This is hosted in a google code project accessible from here: http://code.google.com/p/mr-blogengine/
&#160;
This is the first of a series of posts I&#8217;m penning where I&#8217;ll be incrementally developing a basic blog engine running on the Castle trunk and developed wholly test first.
Each new feature or addition will be described by simple narrative, followed by some [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><strong>EDIT: </strong>This is hosted in a google code project accessible from here: <a title="http://code.google.com/p/mr-blogengine/" href="http://code.google.com/p/mr-blogengine/">http://code.google.com/p/mr-blogengine/</a></p>
<p>&nbsp;</p>
<p>This is the first of a series of posts I&#8217;m penning where I&#8217;ll be incrementally developing a basic blog engine running on the Castle trunk and developed wholly test first.</p>
<p>Each new feature or addition will be described by simple narrative, followed by some testing/coding from the UI (or controller in this case) down to the database.</p>
<p>I&#8217;ll be using much of the Castle stack goodness including Monorail, Windsor and ActiveRecord. Unit testing with Mbunit and acceptance testing with Watin.</p>
<p>My aim with this series of posts is to demonstrate the power of the Castle stack, combined with TDD and the slow, incremental addition of features. After each post I&#8217;ll check in my latest changes which will after a clean build will result in a fully working system.</p>
<p><a href="http://benl.files.wordpress.com/2008/03/project-structure1.png"><img style="border-width:0;" height="562" alt="project-structure" src="http://benl.files.wordpress.com/2008/03/project-structure-thumb.png?w=285&h=562" width="285" align="right" border="0"></a> </p>
<p>I&#8217;ve completed a small amount of scaffolding up-front for brevity:</p>
<ul>
<li>Castle built from trunk
<li>Solution and project structure
<li>Basic configuration of Monorail and Windsor </li>
</ul>
<p>As you can see from the right, our solution consists of three projects. The core project will hold our domain model, interfaces, services and application code. There is a test project for both our unit tests and acceptance tests, and finally we have the web application project holding our controllers, views and static content. I&#8217;ve put together a basic layout and stylesheet that serve our needs for now. This will be added to as our blog engine matures.</p>
<p>Although we have no concrete examples as yet, the controllers, services, facilities and configuration properties are configured through Windsor XML configuration files in the web project. We&#8217;re running on a Castle build I ran locally after checking out the trunk some point over the last couple of days.</p>
<p>It will be interesting to see how our initial design adapts as required when features are piled on during the later stages of development. I&#8217;ve not got any specific plans on how long this series will go on for although I am considering moving my blog away from WordPress and will most likely host under the very blog engine I&#8217;ll be creating. Good times! Anyway enough of this, lets move on to the first iteration.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2>Iteration 1: Create a Post</h2>
<p>For this iteration we will build our first cut at the blog post authoring screen. This comprises a very basic form allowing the author to specify the title, short description and full content of the post. I think you&#8217;ll agree that what we&#8217;re building in this iteration won&#8217;t serve as a fully powered blog engine any time soon, but lets restate our initial aim here: to <strong>incrementally </strong>build and adapt our system as new requirements and features emerge. With that said, lets get on to building our first feature!</p>
<p>Our first test:</p>
<p><a href="http://benl.files.wordpress.com/2008/03/17.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="221" alt="1" src="http://benl.files.wordpress.com/2008/03/1-thumb3.png?w=508&h=221" width="508" border="0"></a> </p>
<p>From our basic requirement we&#8217;re now driving out the <strong>PostController. </strong>This test simply gets our controller into a good state for testing, handily provided by Monorail&#8217;s <strong>BaseControllerTest</strong> and our first test method asserts that when the <strong>Add </strong>action is called on our controller the correct view is rendered. As you can see from the grab above there is a lot of red code. Resharper is highlighting the members we&#8217;ve yet to implement. I attempted to run this test but the compiler chokes. Time to do what we need to pass this test:</p>
<p><a href="http://benl.files.wordpress.com/2008/03/22.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="152" alt="2" src="http://benl.files.wordpress.com/2008/03/2-thumb1.png?w=348&h=152" width="348" border="0"></a> </p>
<p>Well that was simple enough. Lets run our test and see the result:</p>
<p><a href="http://benl.files.wordpress.com/2008/03/33.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="89" alt="Test Results" src="http://benl.files.wordpress.com/2008/03/3-thumb2.png?w=508&h=89" width="508" border="0"></a> </p>
<p>As expected, the test now passes. However, there are some serious issues with our controller and the related Monorail configuration:</p>
<ol>
<li>The controller has no associated layout.
<li>We&#8217;ve yet to create the requisite view: <strong>Add.vm</strong>.
<li>We&#8217;ve not added the Windsor XML configuration for our controller. </li>
</ol>
<p>Before we can do anything to remedy the issues above we&#8217;ll need to write a failing test. I&#8217;m going to use Watin to create a test which flexes Monorail a little more. Currently our only test relies heavily on most of the controller dependencies being stubbed/mocked out by the <strong>BaseControllerTest </strong>class. We&#8217;ll need to test through the browser to ensure our controller and view/layout are wired up correctly:</p>
<p>&nbsp;<a href="http://benl.files.wordpress.com/2008/03/43.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="198" alt="4" src="http://benl.files.wordpress.com/2008/03/4-thumb2.png?w=508&h=198" width="508" border="0"></a> </p>
<p>As you can see above we&#8217;ve crafted a very simplistic test which asserts that the text &#8220;<strong>Ben Lovell&#8217;s Blog&#8221; </strong>is found in the browser at the specified URL. Note also that our test assumes the application is running at localhost on port 16489. I&#8217;ve configured this in the web application properties so we just need to ensure that the VSNET web development server is running on this port for our application. Lets run the test:</p>
<p><a href="http://benl.files.wordpress.com/2008/03/51.png"><img style="border-width:0;" height="40" alt="5" src="http://benl.files.wordpress.com/2008/03/5-thumb.png?w=447&h=40" width="447" border="0"></a> </p>
<p>As expected it fails. To pass this test we need to perform the three steps mentioned earlier. To do this we first add the <strong>Layout </strong>attribute to the controller and specify the <strong>default </strong>layout, the contents of which are shown here:</p>
<p><a href="http://benl.files.wordpress.com/2008/03/73.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="286" alt="7" src="http://benl.files.wordpress.com/2008/03/7-thumb2.png?w=508&h=286" width="508" border="0"></a> </p>
<p>Next we create an empty view: <strong>Add.vm</strong> in the <strong>views/post</strong> folder, and finally we wire up the XML configuration for our controller in the <strong>controllers.config </strong>file as shown below:</p>
<p><a href="http://benl.files.wordpress.com/2008/03/64.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="67" alt="6" src="http://benl.files.wordpress.com/2008/03/6-thumb3.png?w=508&h=67" width="508" border="0"></a> </p>
<p>Lets try and run the test now:</p>
<p><a href="http://benl.files.wordpress.com/2008/03/81.png"><img style="border-width:0;" height="19" alt="8" src="http://benl.files.wordpress.com/2008/03/8-thumb.png?w=378&h=19" width="378" border="0"></a> </p>
<p>Now we&#8217;re making progress! Lets extend our test a little more now. This time we will find the title, description and content fields, enter some values and submit the form. Asserting that the confirmation message was displayed telling the user their post was saved:</p>
<p>&nbsp;<a href="http://benl.files.wordpress.com/2008/03/94.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="274" alt="9" src="http://benl.files.wordpress.com/2008/03/9-thumb3.png?w=508&h=274" width="508" border="0"></a> </p>
<p>A few things have changed here: we&#8217;ve altered the naming of the test to clarify intent, and as mentioned previously our test will enter some values into our form fields and submit the form. Our last assertion is checking that the correct confirmation message is displayed. Now we could argue that the setting of the description and content is superfluous in this test as the outcomes aren&#8217;t asserted. But, the effort required to implement those fields is minimal and highly unlikely to impact on any existing code/tests (i.e. none!).</p>
<p>Lets run the test and see the outcome:</p>
<p><a href="http://benl.files.wordpress.com/2008/03/104.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="28" alt="10" src="http://benl.files.wordpress.com/2008/03/10-thumb3.png?w=508&h=28" width="508" border="0"></a> </p>
<p>Our test complains that the &#8220;Add Post&#8221; text was not found. Lets go and fiddle with our view:</p>
<p><a href="http://benl.files.wordpress.com/2008/03/121.png"><img style="border-width:0;" height="61" alt="12" src="http://benl.files.wordpress.com/2008/03/12-thumb.png?w=269&h=61" width="269" border="0"></a> </p>
<p>Good to go, lets run the test:</p>
<p><a href="http://benl.files.wordpress.com/2008/03/114.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="32" alt="11" src="http://benl.files.wordpress.com/2008/03/11-thumb3.png?w=508&h=32" width="508" border="0"></a> </p>
<p>Hmm, the first two asserts are passing but now we&#8217;re failing on unfound input: <strong>post.Title</strong>. Time to add the form and fields to the view, we&#8217;re going to make a slight jump and include the description and content inputs in our view also:</p>
<p><a href="http://benl.files.wordpress.com/2008/03/133.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="375" alt="13" src="http://benl.files.wordpress.com/2008/03/13-thumb2.png?w=508&h=375" width="508" border="0"></a> </p>
<p>Re run the test:</p>
<p><a href="http://benl.files.wordpress.com/2008/03/144.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="24" alt="14" src="http://benl.files.wordpress.com/2008/03/14-thumb3.png?w=508&h=24" width="508" border="0"></a> </p>
<p>It fails as we have yet to create the <strong>save </strong>action on the controller, and also the nonexistent action doesn&#8217;t display the required confirmation&#8230; For obvious reasons.</p>
<p>At this stage I&#8217;m going to wrap this up for now. Part two will follow over the next couple of days. Stay tuned!</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/benl.wordpress.com/164/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/benl.wordpress.com/164/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benl.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benl.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benl.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benl.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benl.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benl.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benl.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benl.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benl.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benl.wordpress.com/164/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benl.wordpress.com&blog=178045&post=164&subd=benl&ref=&feed=1" /></div><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/benl?a=tgaut4G"><img src="http://feeds.feedburner.com/~f/benl?i=tgaut4G" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=JUZNYCg"><img src="http://feeds.feedburner.com/~f/benl?i=JUZNYCg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=zDmCp7g"><img src="http://feeds.feedburner.com/~f/benl?i=zDmCp7g" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=i51ZHsg"><img src="http://feeds.feedburner.com/~f/benl?i=i51ZHsg" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/benl/~4/258637544" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://benl.wordpress.com/2008/03/27/incremental-development-with-monorail/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/benl-128.jpg" medium="image">
			<media:title type="html">Ben</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/03/project-structure-thumb.png" medium="image">
			<media:title type="html">project-structure</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/03/1-thumb3.png" medium="image">
			<media:title type="html">1</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/03/2-thumb1.png" medium="image">
			<media:title type="html">2</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/03/3-thumb2.png" medium="image">
			<media:title type="html">Test Results</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/03/4-thumb2.png" medium="image">
			<media:title type="html">4</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/03/5-thumb.png" medium="image">
			<media:title type="html">5</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/03/7-thumb2.png" medium="image">
			<media:title type="html">7</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/03/6-thumb3.png" medium="image">
			<media:title type="html">6</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/03/8-thumb.png" medium="image">
			<media:title type="html">8</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/03/9-thumb3.png" medium="image">
			<media:title type="html">9</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/03/10-thumb3.png" medium="image">
			<media:title type="html">10</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/03/12-thumb.png" medium="image">
			<media:title type="html">12</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/03/11-thumb3.png" medium="image">
			<media:title type="html">11</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/03/13-thumb2.png" medium="image">
			<media:title type="html">13</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/03/14-thumb3.png" medium="image">
			<media:title type="html">14</media:title>
		</media:content>
	<feedburner:origLink>http://benl.wordpress.com/2008/03/27/incremental-development-with-monorail/</feedburner:origLink></item>
		<item>
		<title>Front-end DTO’s</title>
		<link>http://feeds.feedburner.com/~r/benl/~3/249526485/</link>
		<comments>http://benl.wordpress.com/2008/03/11/front-end-dtos/#comments</comments>
		<pubDate>Tue, 11 Mar 2008 14:16:25 +0000</pubDate>
		<dc:creator>benl</dc:creator>
		
		<category><![CDATA[ALT.NET]]></category>

		<category><![CDATA[DDD]]></category>

		<category><![CDATA[Design Patterns]]></category>

		<category><![CDATA[Domain Driven Design]]></category>

		<category><![CDATA[Monorail]]></category>

		<guid isPermaLink="false">http://benl.wordpress.com/2008/03/11/front-end-dtos/</guid>
		<description><![CDATA[An interesting discussion was brought up in one of the ALT.NET groups regarding the use of DTO&#8217;s in the presentation layer that I had to chime in on.
I&#8217;m a strong advocate of message passing from the UI to your services for several reasons:

Test driving from the top-down is my favoured approach when developing web applications. [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>An interesting discussion was brought up in one of the ALT.NET groups regarding the use of DTO&#8217;s in the presentation layer that I had to chime in on.</p>
<p>I&#8217;m a strong advocate of message passing from the UI to your services for several reasons:</p>
<ol>
<li>Test driving from the top-down is my favoured approach when developing web applications. I&#8217;ll start by writing a failing test for my controller (you should know by now I use Monorail ;)). Then I&#8217;ll stub out any dependencies, these usually being service interfaces which accept and return simple DTO&#8217;s with absolutely no behaviour. Stubbing out the services allows you to return dummy data very early on in your development. The nice thing about this approach is you can get a working UI together very quickly and then drive out the development of each layer until you hit your domain model. From which point you can then wire-up your real service and repository implementations and satisfy your acceptance tests end-to-end. Now I&#8217;m not suggesting that this approach isn&#8217;t possible without DTO&#8217;s but it makes it a heck lot easier in my experience.</li>
<li>DDD aggregates by their very nature are composed of behaviours you don&#8217;t want to pass into your UI. Using DTO&#8217;s for binding into your UI keeps things nice and lightweight. Cohesion is high as the DTO&#8217;s are created for a very specific purpose, usually to satisfy a particular screen or UI workflow.</li>
<li>I had made the rather nebulous statement that the use of DTO&#8217;s insulates your UI against changes in your domain model. Quite rightly somebody replied saying that this was all relative and there are many means to insulate against change. Of course, I wholeheartedly agree but in my defence I was replying to the OP from my iPhone. Now for me to explain this a little&#8230; Unless you&#8217;re using query projections (a la NHibernate) you&#8217;ll be mapping from your domain entities to specific DTO&#8217;s using some kind of mapper class. Your mapper probably depends on the interfaces of your particular domain entities and the implementation of your DTO&#8217;s. I say <em>implementation</em> as I drive out the mapping using state-based testing, which of course makes perfect sense when mapping from one state to another! Using DTO&#8217;s means our controller has a nice seam between itself and the services through their interfaces thus the controller (read: UI) has no knowledge of the domain model at all. Any changes to the domain model are catered for by changing the mapper specific to the affected messages. I won&#8217;t get into versioning messages, mainly because I haven&#8217;t got the time or inclination <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>I&#8217;ve always thought (and I read this somewhere I think, but can&#8217;t remember where) that a sign of a well designed architecture, among other things of course, is the ability to replace the UI and have everything function correctly. Now it was probably more poetic than that but essentially what this means is your UI should have absolutely zero dependencies on anything below your service interfaces. Using DTO&#8217;s and message passing means the only work your controllers are doing is scraping the request, passing your message to a service and binding the response. I&#8217;ve demonstrated this in systems I&#8217;ve developed by providing an API (which can be considered another UI if you squint a little and look sideways) which is comprised of exactly the same service calls and DTO&#8217;s my web UI is using.</li>
<li>My last point isn&#8217;t specifically tied to the use of DTO&#8217;s but more based around messaging architecture in general&#8230; What this gives me from the very beginning (i.e. the first test) is a nice basis for distributing my architecture. Our services can be hosted on an application server separately from our web application&nbsp; or preferably located transparently via a message bus which brings in a whole heap of nice side-effects&#8230; </li>
</ol>
<p>So in summary you can see I&#8217;m a big fan of the domain model in my services, mapping to and from DTO&#8217;s in my UI. What is your favoured approach?</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/benl.wordpress.com/146/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/benl.wordpress.com/146/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benl.wordpress.com/146/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benl.wordpress.com/146/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benl.wordpress.com/146/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benl.wordpress.com/146/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benl.wordpress.com/146/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benl.wordpress.com/146/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benl.wordpress.com/146/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benl.wordpress.com/146/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benl.wordpress.com/146/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benl.wordpress.com/146/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benl.wordpress.com&blog=178045&post=146&subd=benl&ref=&feed=1" /></div><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/benl?a=x6artiG"><img src="http://feeds.feedburner.com/~f/benl?i=x6artiG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=J2JuFTg"><img src="http://feeds.feedburner.com/~f/benl?i=J2JuFTg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=y55Us3g"><img src="http://feeds.feedburner.com/~f/benl?i=y55Us3g" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=kjT50Ng"><img src="http://feeds.feedburner.com/~f/benl?i=kjT50Ng" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/benl/~4/249526485" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://benl.wordpress.com/2008/03/11/front-end-dtos/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/benl-128.jpg" medium="image">
			<media:title type="html">Ben</media:title>
		</media:content>
	<feedburner:origLink>http://benl.wordpress.com/2008/03/11/front-end-dtos/</feedburner:origLink></item>
		<item>
		<title>Screen casts coming soon</title>
		<link>http://feeds.feedburner.com/~r/benl/~3/219116060/</link>
		<comments>http://benl.wordpress.com/2008/01/18/screen-casts-coming-soon/#comments</comments>
		<pubDate>Fri, 18 Jan 2008 23:07:43 +0000</pubDate>
		<dc:creator>benl</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[Castle]]></category>

		<category><![CDATA[Design Patterns]]></category>

		<category><![CDATA[Domain Driven Design]]></category>

		<category><![CDATA[Monorail]]></category>

		<category><![CDATA[Screencasts]]></category>

		<guid isPermaLink="false">http://benl.wordpress.com/2008/01/18/screen-casts-coming-soon/</guid>
		<description><![CDATA[My plan is to build a basic blogging engine using Castle Monorail, Windsor, ActiveRecord and developed with DDD &#38; TDD. I&#8217;ll screencast the whole procedure from start to finish, outlining the basic story or stories for each screencast episode and then go ahead and implement those stories.
Due to the (potential) size of this I&#8217;ll no [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>My plan is to build a basic blogging engine using Castle Monorail, Windsor, ActiveRecord and developed with DDD &amp; TDD. I&#8217;ll screencast the whole procedure from start to finish, outlining the basic story or stories for each screencast <em>episode</em> and then go ahead and implement those stories.
<p>Due to the (potential) size of this I&#8217;ll no doubt split this up over many screencasts - probably weighing in at around an hour or so per piece. Production values will be conspicuously low of course and the screencasts are not necessarily meant to serve as an educational tool, more a window into my usage of tools &amp; techniques.
<p>I&#8217;ll spike out the solution bootstrapping and structure before the first screencast rather than bore you with the requisite stuff. Anyway, expect the first bunch of stories to appear some point early next week&#8230; </p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/benl.wordpress.com/145/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/benl.wordpress.com/145/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benl.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benl.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benl.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benl.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benl.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benl.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benl.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benl.wordpress.com/145/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benl.wordpress.com/145/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benl.wordpress.com/145/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benl.wordpress.com&blog=178045&post=145&subd=benl&ref=&feed=1" /></div><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/benl?a=WLfiIHG"><img src="http://feeds.feedburner.com/~f/benl?i=WLfiIHG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=UiOIGJg"><img src="http://feeds.feedburner.com/~f/benl?i=UiOIGJg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=fgrNPrg"><img src="http://feeds.feedburner.com/~f/benl?i=fgrNPrg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=YnjBj9g"><img src="http://feeds.feedburner.com/~f/benl?i=YnjBj9g" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/benl/~4/219116060" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://benl.wordpress.com/2008/01/18/screen-casts-coming-soon/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/benl-128.jpg" medium="image">
			<media:title type="html">Ben</media:title>
		</media:content>
	<feedburner:origLink>http://benl.wordpress.com/2008/01/18/screen-casts-coming-soon/</feedburner:origLink></item>
		<item>
		<title>In the Darkroom</title>
		<link>http://feeds.feedburner.com/~r/benl/~3/210115612/</link>
		<comments>http://benl.wordpress.com/2008/01/02/in-the-darkroom/#comments</comments>
		<pubDate>Wed, 02 Jan 2008 21:44:58 +0000</pubDate>
		<dc:creator>benl</dc:creator>
		
		<category><![CDATA[Darkroom]]></category>

		<category><![CDATA[Distraction]]></category>

		<category><![CDATA[Freeware]]></category>

		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://benl.wordpress.com/2008/01/02/in-the-darkroom/</guid>
		<description><![CDATA[ I&#8217;ve no doubt that I&#8217;m one of the most easily distracted people in the world, especially when writing documents on the PC. If I&#8217;m not answering IM&#8217;s or emails then I&#8217;m checking Google Reader or messing with Word formatting or some other vacuous waste of time.
One tool I&#8217;ve found that helps massively with this [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a href="http://benl.files.wordpress.com/2008/01/darkroom.png"><img style="border-right:0;border-top:0;border-left:0;border-bottom:0;" height="154" alt="darkroom" src="http://benl.files.wordpress.com/2008/01/darkroom-thumb.png?w=244&h=154" width="244" align="right" border="0"></a> I&#8217;ve no doubt that I&#8217;m one of the most easily distracted people in the world, especially when writing documents on the PC. If I&#8217;m not answering IM&#8217;s or emails then I&#8217;m checking Google Reader or messing with Word formatting or some other vacuous waste of time.
<p>One tool I&#8217;ve found that helps massively with this is Darkroom, in fact, I&#8217;m blogging this post using it right now. Darkroom is a full screen distraction free notepad type application with a black background and green text. Think old school terminal or command line style and you&#8217;re there.
<p>I find I&#8217;m amazingly more productive this way, maybe you will be too? <a href="http://they.misled.us/dark-room" target="_blank">Download Darkroom here</a>.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/benl.wordpress.com/144/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/benl.wordpress.com/144/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benl.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benl.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benl.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benl.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benl.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benl.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benl.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benl.wordpress.com/144/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benl.wordpress.com/144/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benl.wordpress.com/144/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benl.wordpress.com&blog=178045&post=144&subd=benl&ref=&feed=1" /></div><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/benl?a=C6l7jGG"><img src="http://feeds.feedburner.com/~f/benl?i=C6l7jGG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=ISh57Ug"><img src="http://feeds.feedburner.com/~f/benl?i=ISh57Ug" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=1xbi0Bg"><img src="http://feeds.feedburner.com/~f/benl?i=1xbi0Bg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=chyy88g"><img src="http://feeds.feedburner.com/~f/benl?i=chyy88g" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/benl/~4/210115612" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://benl.wordpress.com/2008/01/02/in-the-darkroom/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/benl-128.jpg" medium="image">
			<media:title type="html">Ben</media:title>
		</media:content>

		<media:content url="http://benl.files.wordpress.com/2008/01/darkroom-thumb.png" medium="image">
			<media:title type="html">darkroom</media:title>
		</media:content>
	<feedburner:origLink>http://benl.wordpress.com/2008/01/02/in-the-darkroom/</feedburner:origLink></item>
		<item>
		<title>iPhone not appearing in iTunes (error 18)</title>
		<link>http://feeds.feedburner.com/~r/benl/~3/210109345/</link>
		<comments>http://benl.wordpress.com/2008/01/02/iphone-not-appearing-in-itunes-error-18/#comments</comments>
		<pubDate>Wed, 02 Jan 2008 21:30:46 +0000</pubDate>
		<dc:creator>benl</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[iPhone]]></category>

		<category><![CDATA[iTunes]]></category>

		<guid isPermaLink="false">http://benl.wordpress.com/2008/01/02/iphone-not-appearing-in-itunes-error-18/</guid>
		<description><![CDATA[I&#8217;ve had a few issues with the phone today: namely the thing isn&#8217;t being recognised by iTunes, plus my music and videos have mysteriously disappeared from the iPhone itself.
Upon trying to restore the iPhone from a backup in iTunes I got the dreaded message:

The iPhone &#8220;iPhone&#8221; could not be restored. An unknown error occurred (-1 [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I&#8217;ve had a few issues with the phone today: namely the thing isn&#8217;t being recognised by iTunes, plus my music and videos have mysteriously disappeared from the iPhone itself.
<p>Upon trying to restore the iPhone from a backup in iTunes I got the dreaded message:<br />
<blockquote>
<p>The iPhone &#8220;iPhone&#8221; could not be restored. An unknown error occurred (-1 <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_cool.gif' alt='8)' class='wp-smiley' /> </p>
</blockquote>
<p>Luckily after a bit of jiggery-pokery I managed to get it functioning as normal with all data and settings restored following these steps:
<ul>
<li>On the iPhone, go into Settings &gt; General and do a full delete of settings and data</li>
<li>Hard-reset the iPhone by holding the power key and the home key until the Apple logo appears</li>
<li>Plug back into iTunes</li>
<li>iTunes recognises the iPhone and offers to set it up fresh or perform a restore. Pick restore</li>
<li>Bingo! </li>
</ul>
<p>Phew got a bit worried there for a moment. Hopefully this might help someone in the future! </p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/benl.wordpress.com/141/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/benl.wordpress.com/141/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benl.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benl.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benl.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benl.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benl.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benl.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benl.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benl.wordpress.com/141/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benl.wordpress.com/141/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benl.wordpress.com/141/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benl.wordpress.com&blog=178045&post=141&subd=benl&ref=&feed=1" /></div><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/benl?a=WWBYarG"><img src="http://feeds.feedburner.com/~f/benl?i=WWBYarG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=jaPc7qg"><img src="http://feeds.feedburner.com/~f/benl?i=jaPc7qg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=2N2NWXg"><img src="http://feeds.feedburner.com/~f/benl?i=2N2NWXg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=lu8SlSg"><img src="http://feeds.feedburner.com/~f/benl?i=lu8SlSg" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/benl/~4/210109345" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://benl.wordpress.com/2008/01/02/iphone-not-appearing-in-itunes-error-18/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/benl-128.jpg" medium="image">
			<media:title type="html">Ben</media:title>
		</media:content>
	<feedburner:origLink>http://benl.wordpress.com/2008/01/02/iphone-not-appearing-in-itunes-error-18/</feedburner:origLink></item>
		<item>
		<title>Apple iPhone</title>
		<link>http://feeds.feedburner.com/~r/benl/~3/208187347/</link>
		<comments>http://benl.wordpress.com/2007/12/29/apple-iphone/#comments</comments>
		<pubDate>Sat, 29 Dec 2007 20:03:33 +0000</pubDate>
		<dc:creator>benl</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://benl.wordpress.com/2007/12/29/apple-iphone/</guid>
		<description><![CDATA[I was lucky enough to receive an iPhone for Christmas and have been using it pretty solidly now for the last few days. You&#8217;ve no doubt read the huge reviews of the device a million times by now so I won&#8217;t go on about it, except perhaps&#160; to say&#160; it must be the single coolest [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>I was lucky enough to receive an iPhone for Christmas and have been using it pretty solidly now for the last few days. You&#8217;ve no doubt read the huge reviews of the device a million times by now so I won&#8217;t go on about it, except perhaps&nbsp; to say&nbsp; it must be the single coolest device I&#8217;ve ever owned and used.</p>
<p>There a couple of things the iPhone is lacking of course, again these have been well publicised but the ones affecting me the most are the SMS functionality, more specifically the inability to address an SMS message to more than one recipient at once. The camera isn&#8217;t superb, being only 2MP and lacking a flash. I have a digital camera for taking proper pictures so again this doesn&#8217;t irk me too much. A native application for uploading pics to Flickr would have been a nice addition. I&#8217;m sure this will surface shortly after the iPhone SDK drops.</p>
<p>EDGE coverage is great in the Reading area, as is London of course. I tend to stick to the iPhone optimised sites and email on the move so the lack of bandwidth doesn&#8217;t affect me so much. As part of the o2 contract I can hop on to the Cloud&#8217;s wifi hotspots at most train stations, pubs etc as well which is nice when EDGE doesn&#8217;t cut it.</p>
<p>I&#8217;ve so far resisted the urge to jailbreak the phone to install the 3rd party native applications as I did with my iPod Touch which incidentally has been deprecated by the iPhone <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> Time will tell however if I can stick to the Apple endorsed software.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/benl.wordpress.com/140/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/benl.wordpress.com/140/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benl.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benl.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benl.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benl.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benl.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benl.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benl.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benl.wordpress.com/140/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benl.wordpress.com/140/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benl.wordpress.com/140/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benl.wordpress.com&blog=178045&post=140&subd=benl&ref=&feed=1" /></div><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/benl?a=55ij33G"><img src="http://feeds.feedburner.com/~f/benl?i=55ij33G" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=1uKCcbg"><img src="http://feeds.feedburner.com/~f/benl?i=1uKCcbg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=Fvrf4jg"><img src="http://feeds.feedburner.com/~f/benl?i=Fvrf4jg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=pw7JrNg"><img src="http://feeds.feedburner.com/~f/benl?i=pw7JrNg" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/benl/~4/208187347" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://benl.wordpress.com/2007/12/29/apple-iphone/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/benl-128.jpg" medium="image">
			<media:title type="html">Ben</media:title>
		</media:content>
	<feedburner:origLink>http://benl.wordpress.com/2007/12/29/apple-iphone/</feedburner:origLink></item>
		<item>
		<title>MVC.NET</title>
		<link>http://feeds.feedburner.com/~r/benl/~3/198691889/</link>
		<comments>http://benl.wordpress.com/2007/12/11/mvcnet/#comments</comments>
		<pubDate>Tue, 11 Dec 2007 15:58:14 +0000</pubDate>
		<dc:creator>benl</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[2008]]></category>

		<category><![CDATA[MVC]]></category>

		<guid isPermaLink="false">http://benl.wordpress.com/2007/12/11/mvcnet/</guid>
		<description><![CDATA[Unless you&#8217;ve been living under a rock for the last few days you will have noticed that the first CTP of the ASP.NET 3.5 extensions has now shipped. ScottGu has the lowdown as usual.
Given the extensibility of the framework, its not surprise that several interesting modifications/add-ins are cropping up. Hammett has dropped a pile of [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Unless you&#8217;ve been living under a rock for the last few days you will have noticed that the first CTP of the ASP.NET 3.5 extensions has now shipped. <a href="http://www.scottgu.com" target="_blank">ScottGu</a> has the <a href="http://weblogs.asp.net/scottgu/archive/2007/12/09/asp-net-3-5-extensions-ctp-preview-released.aspx" target="_blank">lowdown as usual</a>.</p>
<p>Given the extensibility of the framework, its not surprise that several interesting modifications/add-ins are cropping up. <a href="http://hammett.castleproject.org/" target="_blank">Hammett</a> has dropped a pile of samples:</p>
<blockquote><p>MvcExtensions: a class library project with all extensions developed including parameter binder support, Windsor integration and a NVelocity View Engine. I remember complaining about relying exclusively on inheritance to change behavior/add specializations. Looks like I’m not alone on this… To some things, a vertical approach is good enough, but not usually to frameworks. The inheritance scheme eventually will turn into hell in a complex project. I know as I been there.
<p>RestSupport: Uri formats and a nice Respond To syntax inspired on the work from <a href="http://codeprairie.net/blogs/chrisortman/">Chris Ortman</a>/MonoRail.RestSupport.
<p>UsingAR: self explanatory
<p>UsingNVelocity: ditto.</p>
</blockquote>
<p>Take a look at his blog post for more details and to <a href="http://hammett.castleproject.org/?p=229" target="_blank">download the samples here</a>.
<p>However the most traction award has to go to the open source <a href="http://www.codeplex.com/MVCContrib" target="_blank">MvcContrib</a> project on <a href="http://www.codeplex.com" target="_blank">Codeplex</a> which will serve as a repository for all things MVC. MvcContrib has already taken contributions in the form of controller factories for the main container frameworks out there: Windsor, Spring.net and StructureMap.net and a Monorail style binder to aid conversion of a NameValueCollection (i.e. form or querystring) to an object graph.
<p>I&#8217;ve been toying with MVC for a few hours in between real work and the one benefit which initially strikes me is nicer VS.net integration using the webform view engine. Full intellisense and type safety in the views is something sorely missing from Monorail (given that I use the NVelocity view engine there, not sure about the other view engines and what they provide).
<p>A side-effect of using the MVC framework is that I&#8217;m finally getting to use all the cool 3.5 language features too.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/benl.wordpress.com/139/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/benl.wordpress.com/139/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benl.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benl.wordpress.com/139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benl.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benl.wordpress.com/139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benl.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benl.wordpress.com/139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benl.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benl.wordpress.com/139/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benl.wordpress.com/139/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benl.wordpress.com/139/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benl.wordpress.com&blog=178045&post=139&subd=benl&ref=&feed=1" /></div><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/benl?a=Csgx5yG"><img src="http://feeds.feedburner.com/~f/benl?i=Csgx5yG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=RSwyZtg"><img src="http://feeds.feedburner.com/~f/benl?i=RSwyZtg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=2DBJ9Xg"><img src="http://feeds.feedburner.com/~f/benl?i=2DBJ9Xg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=PxfUsXg"><img src="http://feeds.feedburner.com/~f/benl?i=PxfUsXg" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/benl/~4/198691889" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://benl.wordpress.com/2007/12/11/mvcnet/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/benl-128.jpg" medium="image">
			<media:title type="html">Ben</media:title>
		</media:content>
	<feedburner:origLink>http://benl.wordpress.com/2007/12/11/mvcnet/</feedburner:origLink></item>
		<item>
		<title>The Day of Reckoning?</title>
		<link>http://feeds.feedburner.com/~r/benl/~3/196595160/</link>
		<comments>http://benl.wordpress.com/2007/12/07/the-day-of-reckoning/#comments</comments>
		<pubDate>Fri, 07 Dec 2007 11:19:19 +0000</pubDate>
		<dc:creator>benl</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[2008]]></category>

		<category><![CDATA[ALT.NET]]></category>

		<category><![CDATA[MVC]]></category>

		<category><![CDATA[Monorail]]></category>

		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://benl.wordpress.com/2007/12/07/the-day-of-reckoning/</guid>
		<description><![CDATA[&#8230; OK perhaps not. Anyway, today is the supposed release date of the first CTP of the new Microsoft System.Web.MVC framework. As you&#8217;ve no doubt seen in previous posts this is a pretty big deal to me. 
I&#8217;m putting the final touches on a fairly big project right now and have a smaller (internal) one [...]]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>&#8230; OK perhaps not. Anyway, today is the supposed release date of the first CTP of the new Microsoft System.Web.MVC framework. As you&#8217;ve no doubt seen in previous posts this is a pretty big deal to me. </p>
<p>I&#8217;m putting the final touches on a fairly big project right now and have a smaller (internal) one lined up which would be a perfect candidate for testing out System.Web.MVC. Lets see how it stacks up against Monorail&#8230;</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/benl.wordpress.com/137/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/benl.wordpress.com/137/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/benl.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/benl.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/benl.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/benl.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/benl.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/benl.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/benl.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/benl.wordpress.com/137/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/benl.wordpress.com/137/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/benl.wordpress.com/137/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=benl.wordpress.com&blog=178045&post=137&subd=benl&ref=&feed=1" /></div><div class="feedflare">
<a href="http://feeds.feedburner.com/~f/benl?a=AqL7QXG"><img src="http://feeds.feedburner.com/~f/benl?i=AqL7QXG" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=lv61OPg"><img src="http://feeds.feedburner.com/~f/benl?i=lv61OPg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=t3mKxUg"><img src="http://feeds.feedburner.com/~f/benl?i=t3mKxUg" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/benl?a=WHVZiug"><img src="http://feeds.feedburner.com/~f/benl?i=WHVZiug" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/benl/~4/196595160" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://benl.wordpress.com/2007/12/07/the-day-of-reckoning/feed/</wfw:commentRss>
	
		<media:content url="http://a.wordpress.com/avatar/benl-128.jpg" medium="image">
			<media:title type="html">Ben</media:title>
		</media:content>
	<feedburner:origLink>http://benl.wordpress.com/2007/12/07/the-day-of-reckoning/</feedburner:origLink></item>
	</channel>
</rss>
