<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Blogosphere</title>
	<atom:link href="http://robertblu.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://robertblu.wordpress.com</link>
	<description>Application Development Nerdathon</description>
	<lastBuildDate>Sat, 02 Jan 2010 21:44:11 +0000</lastBuildDate>
	<language></language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='robertblu.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Blogosphere</title>
		<link>http://robertblu.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://robertblu.wordpress.com/osd.xml" title="Blogosphere" />
	<atom:link rel='hub' href='http://robertblu.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Mapping LINQ-to-SQL Entities to Domain Model</title>
		<link>http://robertblu.wordpress.com/2010/01/02/mapping-linq-to-sql-entities-to-domain-model/</link>
		<comments>http://robertblu.wordpress.com/2010/01/02/mapping-linq-to-sql-entities-to-domain-model/#comments</comments>
		<pubDate>Sat, 02 Jan 2010 21:44:11 +0000</pubDate>
		<dc:creator>robertblu</dc:creator>
				<category><![CDATA[Nerdathon]]></category>
		<category><![CDATA[DDD]]></category>
		<category><![CDATA[Domain Repository]]></category>
		<category><![CDATA[LINQ-to-SQL]]></category>

		<guid isPermaLink="false">http://robertblu.wordpress.com/?p=34</guid>
		<description><![CDATA[Over the past few years have been shifting more and more away from the idea of working with relational data in memory. Traditionally I mapped the structure of my physical SQL tables into classes and worked with them in memory [Fowler - Record Set]. I find in retrospect I was more focused on the the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=robertblu.wordpress.com&amp;blog=11118463&amp;post=34&amp;subd=robertblu&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Over the past few years have been shifting more and more away from the idea of working with relational data in memory.  Traditionally I mapped the structure of my physical SQL tables into classes and worked with them in memory <a href="http://martinfowler.com/eaaCatalog/recordSet.html">[Fowler - Record Set]</a>.</p>
<p>I find in retrospect I was more focused on the the data organization and persistence as apposed to the rules of the domain. More and more the physical data of the systems I am working on does not map perfectly into how I want to manipulate it or even think about it conceptually, so I have moved towards <a href="http://domaindrivendesign.org/">DDD</a> and using a Domain Model.</p>
<p><strong>Background</strong></p>
<p>I have been refactoring an existing application iteratively through unit tests.  I mapped the existing business logic layer classes to interfaces containing just their properties.  I then could create new domain model classes around those interfaces and compare results apples to apples in my unit tests.  Eventually the interfaces for the model will be removed once the domain services and domain repositories are done and tested.</p>
<p>The existing system is stored procedure based with the Enterprise Library.  While a great tool in its day I have since moved on to greener pastures with LINQ-to-SQL.  (I may try out nHibernate soon as people seem to love it).  The current approach is to use the existing stored procedures with LINQ-to-SQL, which it turns out works really well.</p>
<p>You can read more about how I began migrating the existing code base in my previous blog, <a href="http://robertblu.wordpress.com/2010/01/02/unit-testing-dal-migration-from-enterprise-library-to-linq-to-sql/">Unit Testing DAL Migration from Enterprise Library to Linq-to-Sql</a>.</p>
<p><strong>The Point</strong></p>
<p>What I need in my repositories is a way to map the generated LINQ-to-SQL entities into my domain model.  I start with a way to map one individual item from the physical system to the domain model.  </p>
<p>A previous revision had this as a class method in the repository but I wanted to reuse it generically across multiple repositories.  Next it was in the Repository base class, but decided against &#8220;polluting&#8221; the abstract base class with the details of what its children were doing; it just houses the DataContext and exposes basic methods like Save() which calls SubmitChanges().</p>
<p>The next step was to move it out into an interface that each repository can implement with its specific details.</p>
<p><pre class="brush: csharp;">
public interface IMapper&lt;TModel, TPhysical&gt; 
{
    TModel MapToModel(TPhysical item);
}
</pre></p>
<p>Next I needed a way to map a collection of the physical entities into a list of domain models.  I used an extension method on the IMapper interface to isolate the functionality of mapping to one logical unit, the IMapper interface.</p>
<p><pre class="brush: csharp;">
public static class IMapperExtensions
{
    public static IEnumerable&lt;TModel&gt; MapToModel&lt;TModel, TPhysical&gt;(
        this IMapper&lt;TModel, TPhysical&gt; mapper, // extend the interface
        IEnumerable&lt;TPhysical&gt; source) // list of physical entities
        {
            foreach (var item in source)
            {
                // return the mapping of the item 
                // through the interface and its implementation
                yield return mapper.MapToModel(item);
            }
        }
    }
}
</pre></p>
<p><strong>Putting it Together</strong></p>
<p>Below is a final look at a Repository created with the approach.</p>
<p><pre class="brush: csharp;">
// where IFoo is the interface I extracted from the existing BLL
// and Foos is the LINQ-to-SQL entity type
public class FooRepository : Repository, IMapper&lt;IFoo, Foos&gt;
{
    public IList&lt;IFoo&gt; GetList()
    {
        var query = db.usp_Foo_Select();
        return this.MapToModel(query).ToList();
    }

    public IFoo MapToModel(Foos item)
    {
        // create the domain model implementation
        return new Foo() 
        {
            FooID = item.FooID,
            Name = item.Name
        };
    }
}
</pre></p>
<p><strong>Closing Thoughts</strong></p>
<p>I like working with an object set that isn&#8217;t &#8220;tied&#8221; to the physical implementation.  I can shape the object the way that makes best sense to the domain while still tailoring the physical storage of the data for performance. </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/robertblu.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/robertblu.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/robertblu.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/robertblu.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/robertblu.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/robertblu.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/robertblu.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/robertblu.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/robertblu.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/robertblu.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/robertblu.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/robertblu.wordpress.com/34/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/robertblu.wordpress.com/34/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/robertblu.wordpress.com/34/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=robertblu.wordpress.com&amp;blog=11118463&amp;post=34&amp;subd=robertblu&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://robertblu.wordpress.com/2010/01/02/mapping-linq-to-sql-entities-to-domain-model/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9da7533a8a4f0bc48954fcce6860d520?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">robertblu</media:title>
		</media:content>
	</item>
		<item>
		<title>Unit Testing DAL Migration from Enterprise Library to Linq-to-Sql</title>
		<link>http://robertblu.wordpress.com/2010/01/02/unit-testing-dal-migration-from-enterprise-library-to-linq-to-sql/</link>
		<comments>http://robertblu.wordpress.com/2010/01/02/unit-testing-dal-migration-from-enterprise-library-to-linq-to-sql/#comments</comments>
		<pubDate>Sat, 02 Jan 2010 00:44:43 +0000</pubDate>
		<dc:creator>robertblu</dc:creator>
				<category><![CDATA[Nerdathon]]></category>
		<category><![CDATA[refactoring]]></category>
		<category><![CDATA[unit tests]]></category>

		<guid isPermaLink="false">http://robertblu.wordpress.com/?p=7</guid>
		<description><![CDATA[I recently revived a project I wrote a few years ago.  In addition to adding new features I also wanted to update the existing data access code to no longer use the Enterprise Library, but instead LINQ-to-SQL. Getting Started In order to make sure I didn&#8217;t break any existing functionality I used unit tests (MS [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=robertblu.wordpress.com&amp;blog=11118463&amp;post=7&amp;subd=robertblu&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I recently revived a project I wrote a few years ago.  In addition to adding new features I also wanted to update the existing data access code to no longer use the Enterprise Library, but instead LINQ-to-SQL.</p>
<p><strong>Getting Started</strong></p>
<p>In order to make sure I didn&#8217;t break any existing functionality I used unit tests (MS Test) to compare the existing and ported code.</p>
<p><pre class="brush: csharp;">
[TestMethod]
public void SelectFoos_Present_ResultsMatch()
{
    Assert.Fail();
}

</pre></p>
<p><strong>Setup</strong></p>
<p>With this test in place copied FooDAL to a new directory in the DataAccessLayer namepsace called Linq.  I then swapped out the base class containing the Enterprise Library factory code with a new LinqDal class that contained my FooBarDataContext.  In my new Linq-to-SQL dbml file I mapped the Foo table and the Foo_Select stored procedure, setting the return type to the class for the table.</p>
<p>The main focus was making sure the results were identical between the two implementations.  The risk would only increase as I went through and refactored the code base.</p>
<p><strong>Revision 1</strong><br />
<pre class="brush: csharp;">

[TestMethod]
public void SelectFoos_Present_ResultsMatch()
{
    var entDal = new FooDAL();
    var entResults = entDal.SelectFoos();

    var linqDal = new Linq.FooDAL();
    var linqResults = linqDal.SelectFoos();

    // ... compare
    Assert.Fail();
}

</pre></p>
<p><strong>Comparing Results</strong></p>
<p>In order to compare the results I deferred to my trusty copy of <a href="http://www.amazon.com/More-Effective-Specific-Ways-Improve/dp/0321485890/">More Effective C# by Bill Wagner</a>.  </p>
<p><pre class="brush: csharp;">
using (var firstSequence = entResults.GetEnumerator())
using (var secondSequence = linqResults.GetEnumerator())
{
    while (firstSequence.MoveNext() &amp;&amp; secondSequence.MoveNext())
    {
        var firstItem = firstSequence.Current;
        var secondItem = secondSequence.Current;

        Assert.AreEqual(
            firstItem.FooID, 
            secondItem.FooID, 
            firstItem.FooID + &quot; - &quot; + secondItem.FoodID);
    }
}
</pre></p>
<p>This made sure the sequencing of the objects was the same, but what about making sure the objects were correctly populated?</p>
<p><strong>EqualityComparer</strong></p>
<p>I didn&#8217;t want to mess around with the existing business class that is returned by the DAL method so instead I used another tip from Bill Wagner&#8217;s book; EqualityComparer.  </p>
<p><pre class="brush: csharp;">
private class FooComparer : EqualityComparer&lt;FooBLL&gt;
{
    public override bool Equals(FooBLL x, FooBLL y)
    {
      	return x.FooID.Equals(y.FooID) &amp;&amp;
            	x.Name.Equals(y.Name);
    }

    public override int GetHashCode(FooBLL obj)
    {
      	return EqualityComparer&lt;FooBLL&gt;.Default.GetHashCode(obj);
    }
}
</pre></p>
<p><strong>Final Revision</strong></p>
<p>With this in place I could factor out the comparing logic into a separate method in a base class and reuse it for the different DAL classes I had to migrate.  The final test looks like this:</p>
<p><pre class="brush: csharp;">
[TestMethod]
public void SelectFoos_Present_ResultsMatch()
{
    var entResults = new FooDAL().SelectFoos();
    var linqResults = new Linq.FooDAL().SelectFoos();
            
    this.CompareLists&lt;FooBLL&gt;(entResults, linqResults, 
        new FooComparer());
}

// in Test base class
public void CompareLists&lt;T&gt;(IEnumerable&lt;T&gt; first, IEnumerable&lt;T&gt; second, 
    EqualityComparer&lt;T&gt; comparer)
{
    using (var firstSequence = first.GetEnumerator())
    using (var secondSequence = second.GetEnumerator())
    {
        while (firstSequence.MoveNext() &amp;&amp; secondSequence.MoveNext())
        {
            var firstItem = firstSequence.Current;
            var secondItem = secondSequence.Current;

            Assert.IsTrue(comparer.Equals(firstItem, secondItem));
        }
    }
}

</pre></p>
<p><strong>Closing Thoughts</strong></p>
<p>I refactored 7 DAL classes using this and I feel pretty confident the results are exactly the same.  I did run into some cases where writing the tests did reveal discrepancies in the results so I feel it was time well spent.  </p>
<p>The only change I made looking back was overloading the ToString method on FooBLL so I could see what the differences were in the test results.  The message for the Assert called ToString on the objects giving me an xml visualization of the class so I can track down the error.</p>
<p><pre class="brush: csharp;">
public override string ToString()
{
    var serializer = new 
        System.Xml.Serialization.XmlSerializer(this.GetType());
    var writer = new System.IO.StringWriter();
    
    serializer.Serialize(writer, this);
    return writer.ToString();
}
</pre></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/robertblu.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/robertblu.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/robertblu.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/robertblu.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/robertblu.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/robertblu.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/robertblu.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/robertblu.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/robertblu.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/robertblu.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/robertblu.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/robertblu.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/robertblu.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/robertblu.wordpress.com/7/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=robertblu.wordpress.com&amp;blog=11118463&amp;post=7&amp;subd=robertblu&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://robertblu.wordpress.com/2010/01/02/unit-testing-dal-migration-from-enterprise-library-to-linq-to-sql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9da7533a8a4f0bc48954fcce6860d520?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">robertblu</media:title>
		</media:content>
	</item>
		<item>
		<title>Dev Links</title>
		<link>http://robertblu.wordpress.com/2009/12/27/dev-links/</link>
		<comments>http://robertblu.wordpress.com/2009/12/27/dev-links/#comments</comments>
		<pubDate>Sun, 27 Dec 2009 01:19:03 +0000</pubDate>
		<dc:creator>robertblu</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://robertblu.wordpress.com/?p=3</guid>
		<description><![CDATA[In Progress&#8230; ASP.NET MVC Architecture &#8211; Los Techies Fluent HTML &#8211; Tim Scott Unit Testing Controllers &#8211; Jeffrey Palermo Validation of Variable Length Lists &#8211; Tim Scott Validation of ModelState with MvcContrib’s Fluent HTML Helpers View Models &#8211; Los Techies C# Balance HTML Tags &#8211; Jeff Atwood Strip HTML Tags &#8211; Roy Osherove DDD Terms [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=robertblu.wordpress.com&amp;blog=11118463&amp;post=3&amp;subd=robertblu&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>In Progress&#8230;</p>
<p><strong>ASP.NET MVC</strong></p>
<ul>
<li><a href="http://www.lostechies.com/blogs/jimmy_bogard/archive/2009/04/24/how-we-do-mvc.aspx" target="_blank">Architecture &#8211; Los Techies</a></li>
<li><a href="http://lunaverse.wordpress.com/2008/11/24/mvcfluenthtml-fluent-html-interface-for-ms-mvc/" target="_blank">Fluent HTML &#8211; Tim Scott</a></li>
<li><a href="http://codebetter.com/blogs/jeffrey.palermo/archive/2008/03/09/this-is-how-asp-net-mvc-controller-actions-should-be-unit-tested.aspx" target="_blank">Unit Testing Controllers &#8211; Jeffrey Palermo</a></li>
<li><a href="http://lunaverse.wordpress.com/2009/01/13/editing-a-variable-length-list-of-items-with-mvccontribfluenthtml-take-2/" target="_blank">Validation of Variable Length Lists &#8211; Tim Scott</a></li>
<li><a href="http://www.jeremyskinner.co.uk/2008/12/18/using-modelstate-with-mvccontribs-fluent-html-helpers/" target="_blank">Validation of ModelState with MvcContrib’s Fluent HTML Helpers</a></li>
<li><a href="http://www.lostechies.com/blogs/jimmy_bogard/archive/2009/06/29/how-we-do-mvc-view-models.aspx" target="_blank">View Models &#8211; Los Techies</a></li>
</ul>
<p><strong>C#</strong></p>
<ul>
<li><a href="http://refactormycode.com/codes/360-balance-html-tags" target="_blank">Balance HTML Tags &#8211; Jeff Atwood</a></li>
<li><a href="http://weblogs.asp.net/rosherove/archive/2003/05/13/6963.aspx" target="_blank">Strip HTML Tags &#8211; Roy Osherove</a></li>
</ul>
<p><strong>DDD</strong></p>
<ul>
<li><a href="http://dddsample.sourceforge.net/characterization.html" target="_blank">Terms</a></li>
<li><a href="http://www.emxsoftware.com/Domain+Driven+Design/DDD+Aggregates++Repositories" target="_blank">Aggregates &amp; Repositories</a></li>
<li><a href="http://alistair.cockburn.us/Hexagonal+architecture" target="_blank">Hexagonal Architecture &#8211; Alistair Cockburn</a></li>
<li><a href="http://jeffreypalermo.com/blog/the-onion-architecture-part-1/" target="_blank">Onion Architecture &#8211; Jeffrey Palermo</a></li>
<li><a href="http://stackoverflow.com/questions/227856/how-to-avoid-anemic-domain-models-and-maintain-separation-of-concerns" target="_blank">Anemic Domain Models &#8211; Stack Overflow</a></li>
<li><a href="http://iridescence.no/post/Linq-to-Sql-Programming-Against-an-Interface-and-the-Repository-Pattern.aspx" target="_blank">Linq to Sql, Interfaces and the Repository Pattern</a></li>
<li><a href="http://stackoverflow.com/questions/1383999/ddd-infrastructure-services" target="_blank">DDD Infrastructure Services &#8211;  Stack Overflow</a></li>
</ul>
<p><strong>Dependency Injection</strong></p>
<ul>
<li><a href="http://structuremap.sourceforge.net/QuickStart.htm" target="_blank">Structure Map</a></li>
</ul>
<p><strong>JQuery</strong></p>
<ul>
<li><a href="http://plugins.jquery.com/project/jTemplates" target="_blank">JTemplates &#8211; JQuery Plugins</a></li>
<li><a href="http://www.codeproject.com/KB/user-controls/jQueryjTemplatesAccordion.aspx" target="_blank">JTemplates Example</a></li>
</ul>
<p><strong>LINQ-to-SQL</strong></p>
<ul>
<li><a href="http://www.sidarok.com/web/blog/content/2008/05/02/10-tips-to-improve-your-linq-to-sql-application-performance.html" target="_blank">10 Tips to Improve your LINQ to SQL Application Performance</a></li>
</ul>
<p><strong>Logging</strong></p>
<ul>
<li><a href="http://code.google.com/p/elmah/wiki/MVC" target="_blank">ELMAH &#8211; Home</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/aa479332.aspx" target="_blank">ELMAH &#8211; MSDN</a></li>
</ul>
<p><strong>Mocking</strong></p>
<ul>
<li><a href="http://www.nmock.org/tutorial.html" target="_blank">NMock</a></li>
<li><a href="http://haacked.com/archive/2008/03/23/comparing-moq-to-rhino-mocks.aspx" target="_blank">Comparing Moq to Rhino Mocks &#8211; Phil Haack</a></li>
<li><a href="http://ayende.com/Wiki/Default.aspx?Page=Rhino+Mocks+-+Stubs" target="_blank">Rhino Mocks Stubs</a></li>
</ul>
<p><strong>Routing (WebForms)</strong></p>
<ul>
<li><a href="http://chriscavanagh.wordpress.com/2008/03/11/aspnet-routing-goodbye-url-rewriting/" target="_blank">ASP.NET Routing… Goodbye URL rewriting? &#8211; Chris Cavanagh</a></li>
<li><a href="http://haacked.com/archive/2008/03/11/using-routing-with-webforms.aspx" target="_blank">Using Routing With WebForms &#8211; Phil Haack</a></li>
</ul>
<p><strong>Silverlight</strong></p>
<ul>
<li><a href="http://development-guides.silverbaylabs.org/Video/Silverlight-Prism#videolocation_0" target="_blank">Silverlight Prism &#8211; Erik Mork (Video)</a></li>
<li><a href="http://development-guides.silverbaylabs.org/" target="_blank">Development Guides &#8211; Erik Mork</a></li>
<li><a href="http://www.silverlightshow.net/items/Silverlight-3-as-a-Desktop-Application-Out-of-Browser-Applications.aspx" target="_blank">Silverlight 3 as a Desktop Application</a></li>
</ul>
<p><strong>WCF</strong></p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/bb332338.aspx" target="_blank">Hosting and Consuming WCF Services &#8211; MSDN</a></li>
</ul>
<p><strong>WebForms</strong></p>
<ul>
<li><a href="http://blogs.msdn.com/simonince/archive/2008/02/28/adding-messages-to-a-validation-summary.aspx" target="_blank">Validation &#8211; Adding Messages to Validation Summary</a></li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/robertblu.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/robertblu.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/robertblu.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/robertblu.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/robertblu.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/robertblu.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/robertblu.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/robertblu.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/robertblu.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/robertblu.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/robertblu.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/robertblu.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/robertblu.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/robertblu.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=robertblu.wordpress.com&amp;blog=11118463&amp;post=3&amp;subd=robertblu&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://robertblu.wordpress.com/2009/12/27/dev-links/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9da7533a8a4f0bc48954fcce6860d520?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">robertblu</media:title>
		</media:content>
	</item>
	</channel>
</rss>
