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

<channel>
	<title>MCB Systems &#187; activerecord</title>
	<atom:link href="http://www.mcbsys.com/techblog/tag/activerecord/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mcbsys.com/techblog</link>
	<description>Custom Software and I.T. Services</description>
	<lastBuildDate>Mon, 06 Feb 2012 18:58:19 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Storming the Castle</title>
		<link>http://www.mcbsys.com/techblog/2007/10/storming-the-castle/</link>
		<comments>http://www.mcbsys.com/techblog/2007/10/storming-the-castle/#comments</comments>
		<pubDate>Sun, 21 Oct 2007 13:04:00 +0000</pubDate>
		<dc:creator>Mark Berry</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[activerecord]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[castle project]]></category>
		<category><![CDATA[design pattern]]></category>
		<category><![CDATA[monorail]]></category>
		<category><![CDATA[oop]]></category>
		<category><![CDATA[test-driven]]></category>

		<guid isPermaLink="false">/mark/post/Storming-the-Castle.aspx</guid>
		<description><![CDATA[
I&#39;ve been learning about so many development strategies in the last few months that my head is spinning! My journey has taken me in two main directions:


Learning about concepts like object-oriented programming (OOP), design patterns, test-driven development, and agile development.
Learning about tools that support #1.


This article makes no attempt to be comprehensive about either point; [...]]]></description>
			<content:encoded><![CDATA[<p>
I&#39;ve been learning about so many development strategies in the last few months that my head is spinning! My journey has taken me in two main directions:
</p>
<ol>
<li>Learning about concepts like object-oriented programming (OOP), design patterns, test-driven development, and agile development.</li>
<li>Learning about tools that support #1.</li>
</ol>
<p>
This article makes no attempt to be comprehensive about either point; it&#39;s mostly just a list of resources that I&#39;m using and may need to refer to again.
</p>
<h1>Concepts</h1>
<p>
New books on my bookshelf:
</p>
<ul>
<li>
	<a href="http://www.amazon.com/Head-First-Object-Oriented-Analysis-Design/dp/0596008678/" target="_blank">Head First Object-Oriented Analysis &#038; Design</a>, <a href="http://rebelheart.squarespace.com/blog/2007/7/1/san-diego-code-camp-follow-up-linq-object-modeling.html" target="_blank">recommended</a> by Eric Kaufman. I found the cartoonish style of the book distracting, but it still has some good information especially about how to tackle a new project.
	</li>
<li>
	Martin Fowler&#39;s <a href="http://www.amazon.com/gp/product/0321193687" target="_blank">UML Distilled: A Brief Guide to the Standard Object Modeling Language</a>. <a href="http://www.martinfowler.com/" target="_blank">Fowler</a>, I&#39;ve learned, is one of the OOP and architecture gurus that every other guru cites. Once I read this book, I realized why&#8211;he writes well, and one has the sense that his ideas have evolved from experience, not in an ivory tower.
	</li>
<li>
	Martin Fowler&#39;s <a href="http://www.amazon.com/dp/0321127420" target="_blank">Patterns of Enterprise Application Architecture</a>. Still waiting to receive this one. Fowler has ingeniously posted <a href="http://www.martinfowler.com/eaaCatalog/" target="_blank">summaries</a> of the patterns in the book, so all kinds of web articles refer to his summaries, and each summary says, &#8220;For a full description, see P of EAA page nnn.&#8221; Okay, already, I&#39;ll buy it!</li>
</ul>
<p>
Relevant articles and blogs:
</p>
<ul>
<li>Billy McCafferty&#39;s <a href="http://www.codeproject.com/aspnet/NHibernateBestPractices.asp" target="_blank">NHibernate Best Practices with ASP.NET</a>. According to reader rankings, this is the #1 article in the CodePlex Design and Architecture section. I didn&#39;t learn much about NHibernate in this article, but I learned a lot about architecting web applications. He goes into great detail about separation of concerns, keeping the data layer from depending on the domain (business) layer, etc. Downloadable files include a basic sample and an enterprise sample. It&#39;s rare to come across someone who knows his stuff <em>and</em> knows how to explain it in writing. McCafferty has both. Tons of links to other resources, as well as over 700 follow-up comments with lots of helpful answers. </li>
<li><a href="http://devlicio.us/blogs/billy_mccafferty/default.aspx" target="_blank">Billy McCafferty&#39;s blog</a>. Maybe I should have started here. It sounds like McCafferty&#39;s group has decided to abandon the (somewhat complex) techniques laid out in the preceding article and convert their current development to <a href="http://www.castleproject.org/monorail/index.html" target="_blank">Castle MonoRail</a>. I&#39;ve been considering MonoRail; I must say that McCafferty&#39;s enthusiastic endorsement after several months of use is encouraging. </li>
</ul>
<h1>Tools&#160;</h1>
<p>
As usual, Microsoft is doing a great job of promoting upcoming technologies like LINQ and Silverlight, and I&#39;ve spent some time researching those. But I need something I can work with <em>now</em>, not something in beta. So my attention has turned towards more established technologies, even though they are not from Microsoft.
</p>
<h2>Object-Relational Mapping (ORM)</h2>
<p>
It didn&#39;t take me long to realize that I did not want to hand-code all the data access logic for my program. It turns out that linking classes to database objects has developed into quite an industry. There are dozens of Object-Relational Mappers (ORMs) out there (<a href="http://code.google.com/p/wilsonormapper/" target="_blank">Wilson&#39;s O/R Mapper</a> and <a href="http://www.entityspaces.net/." target="_blank">Entity Spaces</a>, for example), but the one I heard about most often was <a href="http://www.hibernate.org/343.html" target="_blank">NHibernate</a>. NHibernate is the .NET version of Hibernate, a &#8220;persistence engine&#8221; for Java. Unlike many free open-source tools, this one seems to have a wide following and to have proven itself in many large, real-world applications.
</p>
<p>
Built on NHibernate is <a href="http://www.castleproject.org/activerecord/index.html" target="_blank">Castle ActiveRecord</a>, which hides a lot of the complexity of NHibernate but supposedly lets you get to it if you need it.
</p>
<h2>Web Development Frameworks</h2>
<p>
<a href="http://www.visualwebgui.com/" target="_blank">Visual Web GUI</a> is a really fascinating framework that lets you build a web app that looks almost exactly like a WinForms app. It&#39;s tempting to go down this road, as I would like to do something of a Rich Internet Application (RIA). However, this is a fairly new framework, and seems to be lacking integration experience with ActiveRecord, for example, so I&#39;m currently leaning towards the more established MonoRail.
</p>
<p>
<a href="http://www.castleproject.org/monorail/index.html" target="_blank">Castle MonoRail</a> is a .NET approach to Rails(<a href="http://www.loudthinking.com/about.html" target="_blank" title=""Rails", "Ruby on Rails", and the Rails logo are trademarks of David Heinemeier Hansson. All rights reserved.">TM</a>) development, popularized by the Linux-based <a href="http://www.rubyonrails.org/" target="_blank">Ruby on Rails</a>. The main benefit here seems to be a pre-built framework that simplifies developing with the Model-View-Controller (MVC) design pattern. It integrates with Castle ActiveRecord, and it supports test-driven development. And, well, Bill McAfferty thinks that the <a href="http://devlicio.us/blogs/billy_mccafferty/archive/2007/09/21/castle-project-cooler-than-jerry-springer.aspx" target="_blank">Castle Project is cooler than Jerry Springer</a>.&#160;
</p>
<h1>The Castle</h1>
<p>
So in short, it&#39;s starting to look like the <a href="http://www.castleproject.org/index.html">Castle Project</a> is my new best friend&#8230;unless of course I come across the next great thing tomorrow! &#160;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mcbsys.com/techblog/2007/10/storming-the-castle/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

