<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://bloggingabout.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Erwyn van der Meer : Architecture and Design</title><link>http://bloggingabout.net/blogs/erwyn/archive/tags/Architecture+and+Design/default.aspx</link><description>Tags: Architecture and Design</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Enterprise Library 5.0 Released</title><link>http://bloggingabout.net/blogs/erwyn/archive/2010/04/21/enterprise-library-5-0-released.aspx</link><pubDate>Wed, 21 Apr 2010 09:22:00 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:483140</guid><dc:creator>Erwyn van der Meer</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/erwyn/rsscomments.aspx?PostID=483140</wfw:commentRss><comments>http://bloggingabout.net/blogs/erwyn/archive/2010/04/21/enterprise-library-5-0-released.aspx#comments</comments><description>&lt;p&gt;&lt;img src="http://blogs.msdn.com/blogfiles/agile/WindowsLiveWriter/MicrosoftEnterpriseLibrary5.0Released_ED89/image_2.png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;The Microsoft Enterprise Library has always been one of the most popular things to come out of the patterns &amp;amp; practices team. Yesterday p&amp;amp;p reached a major milestone by releasing version 5.0 of EntLib.&lt;/p&gt;
&lt;p&gt;The improvements are too numerous to sum up here, but let me mention one: this release has full .NET 3.5 SP1 and .NET 4 compatibility and works great from both Visual Studio 2008 SP1 and Visual Studio 2010 RTM.&lt;/p&gt;
&lt;p&gt;Full details can be found in &lt;a target="_blank" href="http://blogs.msdn.com/agile/archive/2010/04/20/microsoft-enterprise-library-5-0-released.aspx"&gt;Grigori Melnik&amp;rsquo;s blog post on this release&lt;/a&gt;. Or you can go straight to the &lt;a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=bcb166f7-dd16-448b-a152-9845760d9b4c&amp;amp;displaylang=en"&gt;download page&lt;/a&gt; or &lt;a target="_blank" href="http://entlib.codeplex.com/releases/view/43135"&gt;the documentation&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=483140" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/.NET/default.aspx">.NET</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Architecture+and+Design/default.aspx">Architecture and Design</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Work/default.aspx">Work</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Enterprise+Library/default.aspx">Enterprise Library</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Microsoft/default.aspx">Microsoft</category></item><item><title>Analyzing FlickrMetadataSynchr With NDepend</title><link>http://bloggingabout.net/blogs/erwyn/archive/2009/06/18/analyzing-flickrmetadatasynchr-with-ndepend.aspx</link><pubDate>Wed, 17 Jun 2009 22:23:00 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:481817</guid><dc:creator>Erwyn van der Meer</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/erwyn/rsscomments.aspx?PostID=481817</wfw:commentRss><comments>http://bloggingabout.net/blogs/erwyn/archive/2009/06/18/analyzing-flickrmetadatasynchr-with-ndepend.aspx#comments</comments><description>&lt;p&gt;A couple of months ago I received a license for &lt;a href="http://www.ndepend.com/"&gt;NDepend&lt;/a&gt; to evaluate its usefulness. I was already convinced that NDepend is a very useful tool. But up to now, I hadn’t put NDepend to good use in a way that I could blog about it.&lt;/p&gt;  &lt;p&gt;Today I decided to bite the bullet and put my own pet project &lt;a href="http://flickrmetadatasynchr.codeplex.com/"&gt;FlickrMetadataSynchr&lt;/a&gt; up for analysis. Its source code is available on &lt;a href="http://flickrmetadatasynchr.codeplex.com/"&gt;CodePlex&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;NDepend analyses managed code for several quality aspects, like cyclomatic complexity, coupling and unused code. In a way it resembles FxCop, but it also does a lot more in terms of reporting. NDepend also is a lot more flexible in letting you query your code base. For this it uses its own SQL variant called Code Query Language (CQL). For example, you could enter this query into the tool&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;SELECT METHODS WHERE NbLinesOfCode &amp;gt; &lt;b&gt;30&lt;/b&gt; AND IsPublic&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;and NDepend will show you all public methods whose number of lines of code exceeds 30.&lt;/p&gt;  &lt;p&gt;Just by using the standard settings, NDepend gives you truckloads of information that point to areas with potential code smell. The report has inline comments that explain why it selects stuff and points out possible false positives for which it is okay to ignore the warning.&lt;/p&gt;  &lt;p&gt;You can find my &lt;a href="http://flickrmetadatasynchr.codeplex.com/Project/Download/AttachmentDownload.ashx?ProjectName=FlickrMetadataSynchr&amp;amp;WorkItemId=10156&amp;amp;FileAttachmentId=3153"&gt;NDepend results here&lt;/a&gt; if you want to see what such a report looks like.&lt;/p&gt;  &lt;p&gt;Starting with those results from top to bottom, I started refactoring my code to improve the quality. For example, splitting up methods to: &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Reduce cyclomatic complexity &lt;/li&gt;    &lt;li&gt;Reduce the number of IL instructions in a method &lt;/li&gt;    &lt;li&gt;Reduce the number of local variables in a method&lt;/li&gt;    &lt;li&gt;Increase the comment to code ratio &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This should increase maintainability of the code.&lt;/p&gt;  &lt;p&gt;Go check out &lt;a href="http://www.ndepend.com/"&gt;this tool&lt;/a&gt; if you are interested in improving the quality of your .NET code or if you are tasked with reviewing somebody else’s code.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=481817" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/.NET/default.aspx">.NET</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Architecture+and+Design/default.aspx">Architecture and Design</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/NDepend/default.aspx">NDepend</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/FlickrMetadataSynchr/default.aspx">FlickrMetadataSynchr</category></item><item><title>Oslo, Microsoft's vision on SOA for the future</title><link>http://bloggingabout.net/blogs/erwyn/archive/2007/10/30/oslo-microsoft-s-vision-on-soa-for-the-future.aspx</link><pubDate>Tue, 30 Oct 2007 19:47:53 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:414848</guid><dc:creator>Erwyn van der Meer</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/erwyn/rsscomments.aspx?PostID=414848</wfw:commentRss><comments>http://bloggingabout.net/blogs/erwyn/archive/2007/10/30/oslo-microsoft-s-vision-on-soa-for-the-future.aspx#comments</comments><description>&lt;p&gt;Microsoft used the keynote in the &lt;a href="http://www.mssoaandbpconference.com/"&gt;SOA &amp;amp; Business Process Conference&lt;/a&gt; in Redmond to present its vision on the future of Service Oriented Architecture on the Microsoft platform. That vision and the wave of technology that will come with it, is codenamed &amp;quot;Oslo&amp;quot;.&lt;/p&gt; &lt;p&gt;MVP Charles Young has a solid write up in a blog post called &amp;quot;&lt;a href="http://geekswithblogs.net/cyoung/articles/116456.aspx"&gt;Microsoft &amp;#39;Oslo&amp;#39; - the vNext SOA platform&lt;/a&gt;&amp;quot;. No need to repeat all that here.&lt;/p&gt; &lt;p&gt;Long time Microsoft watcher Mary Jo Foley is very critical in her post called &amp;quot;&lt;a href="http://blogs.zdnet.com/microsoft/?p=878"&gt;Microsoft talks SOA futures but not dates&lt;/a&gt;&amp;quot;. Mary Jo ends with &amp;quot;Microsoft has been struggling to prove to the market that it has a real SOA strategy. While the Redmondians are talking the right talk, the company is still a ways away from walking the SOA walk. Will customers wait or run off with other SOA vendors before Microsoft rolls out more than just a piecemeal SOA strategy?&amp;quot;&lt;/p&gt; &lt;p&gt;&amp;quot;Oslo&amp;quot; is obviously a Grand Vision. It will take a couple of years before this next wave of Microsoft technologies will ship. I thought that after the Longhorn reset/WinFX debacle and the &amp;quot;Whidbey&amp;quot; delays, Microsoft would not attempt to align so many technologies again in the future. But it is! &amp;quot;Oslo&amp;quot; comprises of at least:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;BizTalk Server &amp;quot;6&amp;quot;&lt;/li&gt; &lt;li&gt;Visual Studio &amp;quot;10&amp;quot;&lt;/li&gt; &lt;li&gt;.NET Framework &amp;quot;4&amp;quot;&lt;/li&gt; &lt;li&gt;Systems Center &amp;quot;5&amp;quot;&lt;/li&gt; &lt;li&gt;BizTalk Services &amp;quot;1&amp;quot;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Some of the stuff presented reminded me of the grand WinFX, especially WinFS, vision that Microsoft presented at PDC03. We all know that WinFS never RTM-ed, despite enormous effort (many, many man years) put into it by Microsoft. Especially the term &amp;quot;Universal Editor&amp;quot; for the &amp;quot;Oslo&amp;quot; integrated modeling tool gave me the creeps. Sounds too much like: One tool to rules them all. One tool that spans the entire application development lifecycle: from its inception to its deployment.&lt;/p&gt; &lt;p&gt;Here are some screenshots from the new &amp;quot;Universal Editor&amp;quot; modeling tool that was demoed during the keynote:&lt;/p&gt; &lt;p&gt;&lt;a title="Microsoft Oslo Universal Editor" href="http://www.flickr.com/photos/81669747@N00/1806213354/"&gt;&lt;img alt="Microsoft Oslo Universal Editor" src="http://static.flickr.com/2257/1806213354_b237ae28e8.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a title="Microsoft Oslo Server List" href="http://www.flickr.com/photos/81669747@N00/1806217722/"&gt;&lt;img alt="Microsoft Oslo Server List" src="http://static.flickr.com/2013/1806217722_87f2971331.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a title="Microsoft Oslo Application Verifier" href="http://www.flickr.com/photos/81669747@N00/1805369563/"&gt;&lt;img alt="Microsoft Oslo Application Verifier" src="http://static.flickr.com/2199/1805369563_d0562a98d6.jpg" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=414848" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/.NET/default.aspx">.NET</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Architecture+and+Design/default.aspx">Architecture and Design</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Work/default.aspx">Work</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Oslo/default.aspx">Oslo</category></item><item><title>Internals and history of LINQ to SQL</title><link>http://bloggingabout.net/blogs/erwyn/archive/2007/08/07/internals-and-history-of-linq-to-sql.aspx</link><pubDate>Tue, 07 Aug 2007 18:15:11 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:335007</guid><dc:creator>Erwyn van der Meer</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/erwyn/rsscomments.aspx?PostID=335007</wfw:commentRss><comments>http://bloggingabout.net/blogs/erwyn/archive/2007/08/07/internals-and-history-of-linq-to-sql.aspx#comments</comments><description>&lt;p&gt;If you are interested in the history of LINQ to SQL and how it works internally, go watch &lt;a href="http://blogs.msdn.com/charlie/archive/2007/08/06/linq-to-sql-pipeline-video-with-luca-bolognese-and-matt-warren.aspx"&gt;Charlie Calvert&amp;#39;s video with Matt Warren and Luca Bolognese&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;The first 30 minutes of this video are primarily&amp;nbsp;about the internals. The last 10 minutes focus on the history of LINQ to SQL and how it relates to&amp;nbsp;its &amp;quot;predecessors&amp;quot; Cω&amp;nbsp; and ObjectSpaces. Matt and Luca also tell how Erik Meijer and Anders Hejlsberg got involved.&lt;/p&gt; &lt;p&gt;Related posts on this blog:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://bloggingabout.net/blogs/erwyn/archive/2005/07/17/8565.aspx"&gt;.NET Language Integrated Query Framework&lt;/a&gt; (July 17, 2005)&lt;/li&gt; &lt;li&gt;&lt;a href="http://bloggingabout.net/blogs/erwyn/archive/2007/05/31/history-of-linq-to-sql.aspx"&gt;History of LINQ to SQL&lt;/a&gt; (May 31, 2007)&lt;/li&gt;&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=335007" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/.NET/default.aspx">.NET</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Architecture+and+Design/default.aspx">Architecture and Design</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Orcas/default.aspx">Orcas</category></item><item><title>Input Validation for Declarative Query String Parameters in ASP.NET 2.0</title><link>http://bloggingabout.net/blogs/erwyn/archive/2007/08/07/input-validation-for-declarative-query-string-parameters-in-asp-net-2-0.aspx</link><pubDate>Tue, 07 Aug 2007 07:24:03 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:334617</guid><dc:creator>Erwyn van der Meer</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/erwyn/rsscomments.aspx?PostID=334617</wfw:commentRss><comments>http://bloggingabout.net/blogs/erwyn/archive/2007/08/07/input-validation-for-declarative-query-string-parameters-in-asp-net-2-0.aspx#comments</comments><description>&lt;p&gt;Back in January 2006 I wrote a &lt;a href="http://bloggingabout.net/blogs/erwyn/archive/2006/01/08/10748.aspx"&gt;blog post&lt;/a&gt; about a way to add input validation to declarative query string parameters in ASP.NET 2.0.&lt;/p&gt; &lt;p&gt;This involved adding code to the code-behind of each ASP.NET page to hook an event handler. This quickly becomes tedious if you have a lot of pages.&lt;/p&gt; &lt;p&gt;Will Shaver has &lt;a href="http://www.primedigit.com/automatic-parameter-type-checking/"&gt;come up with a better approach&lt;/a&gt;. He derives a custom class &lt;font face="Courier New"&gt;ValidatedQueryStringParameter&lt;/font&gt; from the ASP.NET class &lt;font face="Courier New"&gt;QueryStringParameter&lt;/font&gt;.&lt;/p&gt; &lt;p&gt;Check out the download on his blog post. It contains a more complete &lt;font face="Courier New"&gt;ValidatedQueryStringParameter&lt;/font&gt; class that supports other types besides &lt;font face="Courier New"&gt;Int32&lt;/font&gt; like &lt;font face="Courier New"&gt;DateTime&lt;/font&gt; and &lt;font face="Courier New"&gt;Boolean&lt;/font&gt;. The QueryStringParameter already supports a &lt;a href="http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.parameter.type.aspx"&gt;Type&lt;/a&gt; property (of type &lt;a href="http://msdn2.microsoft.com/en-us/library/system.typecode.aspx"&gt;TypeCode&lt;/a&gt;) to specify the type for the value of the parameter, so you can use it from markup like so:&lt;/p&gt; &lt;div class="CodeFormatContainer"&gt;&lt;pre class="csharpcode"&gt;&amp;lt;cc:ValidatedQueryStringParameter Name=&lt;span class="str"&gt;&amp;quot;CategoryId&amp;quot;&lt;/span&gt; QueryStringField=&lt;span class="str"&gt;&amp;quot;CategoryId&amp;quot;&lt;/span&gt; DefaultValue=&lt;span class="str"&gt;&amp;quot;0&amp;quot;&lt;/span&gt; Type=&lt;span class="str"&gt;&amp;quot;Int32&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/pre&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=334617" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/.NET/default.aspx">.NET</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Architecture+and+Design/default.aspx">Architecture and Design</category></item><item><title>Interest in .NET declining?</title><link>http://bloggingabout.net/blogs/erwyn/archive/2007/05/31/interest-in-net-declining.aspx</link><pubDate>Thu, 31 May 2007 21:49:19 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:221242</guid><dc:creator>Erwyn van der Meer</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/erwyn/rsscomments.aspx?PostID=221242</wfw:commentRss><comments>http://bloggingabout.net/blogs/erwyn/archive/2007/05/31/interest-in-net-declining.aspx#comments</comments><description>&lt;p&gt;Martin Fowler notices a trend: &lt;a href="http://martinfowler.com/bliki/RubyMicrosoft.html"&gt;interest in the .NET platform is declining&lt;/a&gt;. Ruby is all the rage. He has some recommendations for Microsoft on how to better collaborate with the community instead of going its own way. Martin noticed how Microsoft created its own&amp;nbsp;unit testing&amp;nbsp;variant that is incompatible with NUnit.&lt;/p&gt; &lt;p&gt;Change is visible in some parts of Microsoft, for example Microsoft is embracing dynamic languages, but boats the size of aircraft carries can only&amp;nbsp;slowly change course. There are no clear signs from upper management at Microsoft that they are indeed changing course. The recent&amp;nbsp;threats against the&amp;nbsp;open source community over &lt;a href="http://news.zdnet.com/2100-3513_22-6183437.html"&gt;infringement on software patents&lt;/a&gt; seem to indicate that the old school closed-source thinking still has big strongholds within Microsoft.&lt;/p&gt; &lt;p&gt;Google is about to set a standard for offline storage for web applications with &lt;a href="http://gears.google.com/"&gt;Google Gears&lt;/a&gt;. Even better, it&amp;#39;s open source. Does Microsoft have the guts to embrace this technology instead of creating its own variant? I doubt it.&lt;/p&gt; &lt;p&gt;I am still pretty excited about the .NET platform. Especially about the LINQ wave of technologies coming with .NET Framework 3.5 and Silverlight. But I am also thinking about looking into Ruby on Rails more and more.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=221242" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/.NET/default.aspx">.NET</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Architecture+and+Design/default.aspx">Architecture and Design</category></item><item><title>History of LINQ to SQL</title><link>http://bloggingabout.net/blogs/erwyn/archive/2007/05/31/history-of-linq-to-sql.aspx</link><pubDate>Thu, 31 May 2007 20:48:18 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:221211</guid><dc:creator>Erwyn van der Meer</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/erwyn/rsscomments.aspx?PostID=221211</wfw:commentRss><comments>http://bloggingabout.net/blogs/erwyn/archive/2007/05/31/history-of-linq-to-sql.aspx#comments</comments><description>&lt;p&gt;Not many Microsoft employees dare to publicly refer to &lt;a href="http://en.wikipedia.org/wiki/WinFS"&gt;WinFS&lt;/a&gt; as a black hole. Matt Warren &lt;a href="http://blogs.msdn.com/mattwar/archive/2007/05/31/the-origin-of-linq-to-sql.aspx"&gt;does in this blog post&lt;/a&gt;. He gives us great insight into the origin of LINQ to SQL and how it managed to survive. He ends with:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;So, for the sake of LINQ and the customer in general, we took up the OR/M torch officially, announcing our intention internally and starting the political nightmare that became my life for the next three years.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;I briefly talked with Matt at &lt;a href="http://bloggingabout.net/blogs/erwyn/archive/tags/PDC+2005/default.aspx"&gt;PDC05&lt;/a&gt;. It was pretty clear already that he had had a big role in the development of LINQ to SQL even though the public presentation was done by Anders Hejlsberg. His blog is pretty quiet, but Matt is much more active on the &lt;a href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=123&amp;amp;SiteID=1"&gt;MSDN Forums&lt;/a&gt; answering questions about LINQ to SQL.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=221211" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/.NET/default.aspx">.NET</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Architecture+and+Design/default.aspx">Architecture and Design</category></item><item><title>Should you trust Software as a Service?</title><link>http://bloggingabout.net/blogs/erwyn/archive/2007/05/09/should-you-trust-software-as-a-service.aspx</link><pubDate>Wed, 09 May 2007 11:13:40 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:193513</guid><dc:creator>Erwyn van der Meer</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/erwyn/rsscomments.aspx?PostID=193513</wfw:commentRss><comments>http://bloggingabout.net/blogs/erwyn/archive/2007/05/09/should-you-trust-software-as-a-service.aspx#comments</comments><description>&lt;p&gt;Today, I wanted to continue working on my &lt;a href="http://bloggingabout.net/controlpanel/blogs/posteditor.aspx?SelectedNavItem=Posts&amp;amp;sectionid=4&amp;amp;postid=108316"&gt;FlickrMetadataSynchr&lt;/a&gt; tool after a break of a month or so. This project uses SaaS in the form of a hosted Team Foundation Server&amp;nbsp;by Microsoft&amp;nbsp;for source control and work item tracking. This SaaS is called &lt;a href="http://www.codeplex.com/FlickrMetadataSynchr"&gt;CodePlex&lt;/a&gt;.&amp;nbsp;&lt;/p&gt; &lt;p&gt;Team Foundation Server is known to be a very robust source control system that is based on SQL Server 2005. You can cluster the database tier, you can have hot standby for the application tier, etc.&lt;/p&gt; &lt;p&gt;Yet, Microsoft was able to corrupt the source control database and not have a proper backup schema in place. I.e., they thought they were making backups of the database, yet &lt;a href="http://www.codeplex.com/CodePlex/Wiki/View.aspx?title=System%20Outage%20Report&amp;amp;referringTitle=Home"&gt;they weren&amp;#39;t&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;That will teach me not to trust a third party with my precious data. So based on my current experiences I don&amp;#39;t&amp;nbsp;trust Software as a Service (SaaS). &lt;/p&gt; &lt;p&gt;Even worse. Three weeks after the fact, Microsoft still cannot tell if the source control data will ever be restored. At some point you just have to admit you screwed up and say that&amp;nbsp;nothing can be done about it anymore.&lt;/p&gt; &lt;p&gt;Luckily, I still have the latest version of my sources stored locally. But it is the nature of an integrated source control and work item tracking system that you can&amp;#39;t keep a full local backup of the state of the system. If Microsoft (or another vendor) screws up you loose a lot of historic data.&lt;/p&gt; &lt;p&gt;Another SaaS that I have become to depend on quite heavily is Gmail. Considering the perpetual beta status of Google Mail, I have never fully trusted them to keep my data safe from disaster. I am very diligent in backing up my mail locally in Outlook PST files using the POP3 access that Gmail provides.&lt;/p&gt; &lt;p&gt;Do you trust SaaS?&lt;/p&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=193513" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Personal/default.aspx">Personal</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Architecture+and+Design/default.aspx">Architecture and Design</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/FlickrMetadataSynchr/default.aspx">FlickrMetadataSynchr</category></item><item><title>BizTalk Joke</title><link>http://bloggingabout.net/blogs/erwyn/archive/2007/05/05/biztalk-joke.aspx</link><pubDate>Sat, 05 May 2007 12:00:53 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:189561</guid><dc:creator>Erwyn van der Meer</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/erwyn/rsscomments.aspx?PostID=189561</wfw:commentRss><comments>http://bloggingabout.net/blogs/erwyn/archive/2007/05/05/biztalk-joke.aspx#comments</comments><description>&lt;p&gt;I just came accross &lt;a href="http://www.paulstovell.net/blog/index.php/idea-peer-to-peer-file-sharing-with-biztalk/"&gt;this gem by Paul Stovell&lt;/a&gt;:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Now, although&amp;nbsp;I don’t really know anything about&amp;nbsp;BizTalk, I do know that BizTalk is well-known as an enterprise-grade middleware product. I think that this is due to the fact that only Enterprises (with a capital E) can make custom software development such an expensive process that BizTalk is actually a cheap alternative &lt;img alt=":)" src="http://www.paulstovell.net/blog/wp-includes/images/smilies/icon_smile.gif"&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Is he joking or is he dead serious?&lt;/p&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=189561" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Personal/default.aspx">Personal</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Architecture+and+Design/default.aspx">Architecture and Design</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/BizTalk/default.aspx">BizTalk</category></item><item><title>Silverlight: FONT tags all over again?!</title><link>http://bloggingabout.net/blogs/erwyn/archive/2007/05/05/silverlight-font-tags-all-over-again.aspx</link><pubDate>Sat, 05 May 2007 08:55:00 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:189487</guid><dc:creator>Erwyn van der Meer</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/erwyn/rsscomments.aspx?PostID=189487</wfw:commentRss><comments>http://bloggingabout.net/blogs/erwyn/archive/2007/05/05/silverlight-font-tags-all-over-again.aspx#comments</comments><description>&lt;p&gt;Some people use hyperbole to refer to the disclosure of&amp;nbsp;Silverlight and&amp;nbsp;CoreCLR by&amp;nbsp;Microsoft at MIX07. April 30, 2007 has been&amp;nbsp;called the day that will be remembered as &lt;a href="http://scobleizer.com/2007/05/01/microsoft-rebooted-the-web-yesterday/"&gt;the day that Microsoft "rebooted the web"&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;This might be true in more than one way. I was just reading the &lt;a href="http://msdn2.microsoft.com/en-us/library/bb404774.aspx"&gt;Silverlight SDK&lt;/a&gt; and was struck by a feeling of deja-vu:&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBlock&lt;/span&gt; &lt;span class="attr"&gt;FontFamily&lt;/span&gt;&lt;span class="kwrd"&gt;="Arial"&lt;/span&gt; &lt;span class="attr"&gt;Width&lt;/span&gt;&lt;span class="kwrd"&gt;="400"&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="Sample text formatting runs"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LineBreak&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; 
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Run&lt;/span&gt; &lt;span class="attr"&gt;Foreground&lt;/span&gt;&lt;span class="kwrd"&gt;="Maroon"&lt;/span&gt; &lt;span class="attr"&gt;FontFamily&lt;/span&gt;&lt;span class="kwrd"&gt;="Courier New"&lt;/span&gt; &lt;span class="attr"&gt;FontSize&lt;/span&gt;&lt;span class="kwrd"&gt;="24"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Courier New 24&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Run&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LineBreak&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Run&lt;/span&gt; &lt;span class="attr"&gt;Foreground&lt;/span&gt;&lt;span class="kwrd"&gt;="Teal"&lt;/span&gt; &lt;span class="attr"&gt;FontFamily&lt;/span&gt;&lt;span class="kwrd"&gt;="Times New Roman"&lt;/span&gt; &lt;span class="attr"&gt;FontSize&lt;/span&gt;&lt;span class="kwrd"&gt;="18"&lt;/span&gt; &lt;span class="attr"&gt;FontStyle&lt;/span&gt;&lt;span class="kwrd"&gt;="Italic"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Times New Roman Italic 18&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Run&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LineBreak&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Run&lt;/span&gt; &lt;span class="attr"&gt;Foreground&lt;/span&gt;&lt;span class="kwrd"&gt;="SteelBlue"&lt;/span&gt; &lt;span class="attr"&gt;FontFamily&lt;/span&gt;&lt;span class="kwrd"&gt;="Verdana"&lt;/span&gt; &lt;span class="attr"&gt;FontSize&lt;/span&gt;&lt;span class="kwrd"&gt;="14"&lt;/span&gt; &lt;span class="attr"&gt;FontWeight&lt;/span&gt;&lt;span class="kwrd"&gt;="Bold"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Verdana Bold 14&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;Run&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;TextBlock&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Doesn't it feel like FONT tags all over again to you too?&lt;/p&gt;
&lt;p&gt;This is not revolutionizing the web, this is indeed rebooting the web. Just after text on the web has been&amp;nbsp;semantically liberated from FONT and TABLE tags by judicious use of CSS, we are going back to the future...&lt;/p&gt;
&lt;p&gt;PS: Although there is extremely tight coupling between text and layout in this piece of XAML, it is still a&amp;nbsp;much better situation than text locked up in .swf files. At least it is indexable by search engines. Hopefully, Microsoft is just going after the Flash market and doesn't lure us into putting all text inside Silverlight controls leaving the (X)HTML page as just an otherwise empty shell around such controls.&lt;/p&gt;
&lt;p&gt;PS2: Here is &lt;a href="http://www.agileprogrammer.com/eightytwenty/archive/2007/05/03/22658.aspx"&gt;another commentary&lt;/a&gt; by someone who sees some downsides to this new "rich" web as well.&lt;/p&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=189487" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Personal/default.aspx">Personal</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Architecture+and+Design/default.aspx">Architecture and Design</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/WPF/default.aspx">WPF</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Silverlight (fka WPF/E) and ASP.NET</title><link>http://bloggingabout.net/blogs/erwyn/archive/2007/04/16/silverlight-fka-quot-wpf-e-quot-and-asp-net.aspx</link><pubDate>Sun, 15 Apr 2007 23:32:00 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:162712</guid><dc:creator>Erwyn van der Meer</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/erwyn/rsscomments.aspx?PostID=162712</wfw:commentRss><comments>http://bloggingabout.net/blogs/erwyn/archive/2007/04/16/silverlight-fka-quot-wpf-e-quot-and-asp-net.aspx#comments</comments><description>&lt;P&gt;Microsoft has announced that the little cross-platform, cross-browser cousin of Windows Presentation Foundation will be called &lt;A href="http://www.microsoft.com/silverlight/"&gt;Silverlight&lt;/A&gt;. This technology which was first announced at PDC05 was codenamed "WPF/E".&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/tims/archive/2007/04/15/introducing-microsoft-silverlight.aspx"&gt;Tim Sneath has the best list so far&lt;/A&gt; of the features and power of this "Flash killer" technology. Microsoft doesn't ever call Silverlight&amp;nbsp;a Flash killer, but the overlap in feature set is so large, that it cannot be viewed as anything other than a direct Flash competitor. &lt;/P&gt;
&lt;P&gt;However, I do believe that Silverlight leapfrogs Flash in a couple of ways. The programmability and ease of use is better than Flash. You can build Silverlight sites using just Notepad if you want. The direct integration of the Silverlight DOM (Document Object Model) with JavaScript in the browser and the ability to create Silverlight UI elements on the fly with the createFromXaml method is a killer feature.&lt;/P&gt;
&lt;P&gt;Tim Sneath mentions a secret number 10 feature on &lt;A href="http://blogs.msdn.com/tims/archive/2007/04/15/introducing-microsoft-silverlight.aspx"&gt;his list&lt;/A&gt;:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;"Ah... #10. I can't reveal this yet - there's a big surprise up our collective corporate sleeve that will be announced at MIX. I hate to hold back on you, but anticipation is part of the pleasure, as my mother used to tell me as a child when I was waiting impatiently for Christmas to come!"&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Could this be the .NET programmability that was &lt;A href="http://www.windows-now.com/blogs/robert/archive/2007/02/26/a-new-direction-for-the-net-framework.aspx"&gt;previously speculated about&lt;/A&gt;? &lt;A href="http://blogs.msdn.com/somasegar/archive/2007/04/15/silverlight-the-next-generation-web-media-experiences.aspx"&gt;Soma&lt;/A&gt; spills some more details in his announcement:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;"As I mentioned, this Silverlight announcement at NAB is only part of the story, the rest will be unveiled at MIX including details about how Silverlight is a core component of Microsoft’s broader .NET platform."&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;I commented previously on &lt;A href="http://www.windows-now.com/blogs/robert/archive/2007/02/26/a-new-direction-for-the-net-framework.aspx"&gt;Robert McLaws'&lt;/A&gt; blog that I didn't think that Microsoft wasn't going to release a lightweight&amp;nbsp;crossplatform CLR for Silverlight programmability. But I also speculated that Microsoft &lt;EM&gt;was&lt;/EM&gt; working on a&amp;nbsp;&lt;A href="http://bloggingabout.net/blogs/erwyn/archive/2007/02/01/hybridizing-java-flash-and-wpf-e.aspx"&gt;bigger crossplatform CLR based on the .NET Compact Framework&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;What I am pretty sure about, is that Microsoft will announce ASP.NET controls that will allow you to very easily integrate Silverlight on your web pages and to expose dynamic data as XAML to Silverlight controls. I.e., AJAX on steroids UI-wise.&lt;/P&gt;
&lt;P&gt;Adding ASP.NET to the mix shows that there is no direct need for a CLR on the client in order to enable C#&amp;nbsp;or VB.NET programmability: coding in C#, compiling to IL &lt;EM&gt;and&lt;/EM&gt; converting that IL to JavaScript on the fly! Prototype efforts by Nikhil Kothari with Script# show that this is quite possible. &lt;A href="http://www.nikhilk.net/WPFEAndScriptSharp.aspx"&gt;Check out Nikhil's example&lt;/A&gt;.&lt;/P&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=162712" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/.NET/default.aspx">.NET</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Architecture+and+Design/default.aspx">Architecture and Design</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/WPF/default.aspx">WPF</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Article on developing iTV websites in Dutch .NET Magazine</title><link>http://bloggingabout.net/blogs/erwyn/archive/2007/03/31/article-on-developing-itv-websites-in-dutch-net-magazine.aspx</link><pubDate>Sat, 31 Mar 2007 09:58:00 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:151238</guid><dc:creator>Erwyn van der Meer</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/erwyn/rsscomments.aspx?PostID=151238</wfw:commentRss><comments>http://bloggingabout.net/blogs/erwyn/archive/2007/03/31/article-on-developing-itv-websites-in-dutch-net-magazine.aspx#comments</comments><description>&lt;P&gt;[&lt;STRONG&gt;Update&lt;/STRONG&gt;: The &lt;A href="http://www.microsoft.com/netherlands/msdn/netmagazine/code/magazine16.aspx"&gt;electronic version&lt;/A&gt; (in Dutch) is&amp;nbsp;available online now.]&lt;/P&gt;
&lt;P&gt;My article on developing interactive TV-websites using ASP.NET 2.0 has been&amp;nbsp;published in the Dutch .NET Magazine #16. I &lt;A href="http://bloggingabout.net/blogs/erwyn/archive/2007/01/04/tag-you-re-it.aspx"&gt;mentioned&lt;/A&gt; that I was writing this article in January and I made the deadline.&lt;/P&gt;
&lt;P&gt;If you are subscribed to this magazine, you&amp;nbsp;received issue #16 last Friday. The &lt;A href="http://www.microsoft.com/netherlands/msdn/netmagazine/code/magazine16.aspx"&gt;electronic version&lt;/A&gt; (in Dutch!) is not online yet, but it should appear in the near future. All previous issues are available &lt;A href="http://www.microsoft.com/netherlands/msdn/netmagazine/default.aspx"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;The typesetting process has caused a few minor issues that I would like to rectify here:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The byline of code example 1 reads "WMC.browserbestand om Windows Media Center mee te herkennen". This should be "WMC.browser bestand etc." I.e., it's a file with the &lt;FONT face="courier new"&gt;.browser&lt;/FONT&gt; extension. 
&lt;LI&gt;In the "ASP.NET 2.0 browser sniffing" section, the line "Daarin kun je bestanden plaatsen met de browserextensie." should read "Daarin kun je bestanden plaatsen met de &lt;FONT face="courier new"&gt;.browser&lt;/FONT&gt; extensie".&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;If any other issues are discovered, I'll update this post.&lt;/P&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=151238" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/.NET/default.aspx">.NET</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Personal/default.aspx">Personal</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Architecture+and+Design/default.aspx">Architecture and Design</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Work/default.aspx">Work</category></item><item><title>Similarity between EntLib 3.0 Policy Injection Application Block and EDRA</title><link>http://bloggingabout.net/blogs/erwyn/archive/2007/03/04/similarity-between-entlib-3-0-policy-injection-application-block-and-edra.aspx</link><pubDate>Sun, 04 Mar 2007 06:03:00 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:129311</guid><dc:creator>Erwyn van der Meer</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/erwyn/rsscomments.aspx?PostID=129311</wfw:commentRss><comments>http://bloggingabout.net/blogs/erwyn/archive/2007/03/04/similarity-between-entlib-3-0-policy-injection-application-block-and-edra.aspx#comments</comments><description>&lt;P&gt;As announced on Tom Hollander's blog, the Microsoft&amp;nbsp;Enterprise Library 3.0 will include a new application block: the &lt;A href="http://blogs.msdn.com/tomholl/archive/2007/02/23/announcing-the-policy-injection-application-block.aspx"&gt;Policy Injection Application Block&lt;/A&gt;.&lt;/P&gt;
&lt;H2&gt;Enterprise Development Reference Architecture (EDRA)&lt;/H2&gt;
&lt;P&gt;&lt;A href="http://www.edwardbakker.nl/"&gt;Edward&lt;/A&gt; and me noticed a striking similarity with an earlier effort&amp;nbsp;by Microsoft Patterns and Practices. For some other people who have been following the P&amp;amp;P guidance for some years now, this similarity didn't go unnoticed as well. For example in the post: &lt;A href="http://manicprogrammer.com/cs/blogs/michaelruminer/archive/2007/02/27/can-anyone-say-shadowfax.aspx"&gt;Can anyone say Shadowfax&lt;/A&gt;?&lt;/P&gt;
&lt;P&gt;"Shadowfax" was the codename for the &lt;A href="http://www.gotdotnet.com/workspaces/workspace.aspx?id=9c29a963-594e-4e7a-9c45-576198df8058"&gt;Enterprise Development Reference Architecture&lt;/A&gt; (EDRA) released by Microsoft in 2004.&lt;/P&gt;
&lt;P&gt;One of the important goals for EDRA was the separation of business logic from cross cutting concerns in enterprise applications. This was implemented by providing&amp;nbsp;a pipeline of pre- and posthandlers that could be inserted declaratively using configuration in XML format. Messages would pass through this pipeline before reaching the business logic. The response would go back through the pipeline as well. EDRA handlers could inspect and even alter the messages flowing through the pipeline.&lt;/P&gt;
&lt;P&gt;One of the other&amp;nbsp;important goals for EDRA was the ability to physically separate the&amp;nbsp;service interface from the service implementation. As in distributing these layers across different tiers and across security boundaries. &lt;/P&gt;
&lt;P&gt;Our business unit at&amp;nbsp;LogicaCMG followed and evaluated this effort in 2004 and even used it in some projects. We especially liked the fact that this was a ready-made framework for "policy injection". We&amp;nbsp;made some extensions for cross cutting concerns not originally included in EDRA. Previously, we worked on a home-made framework that was based on .NET remoting extensibility to configure cross-cutting concerns. Although architecturally sound, it was far from complete because it&amp;nbsp;still had a long way to go to fulfill our vision.&lt;/P&gt;
&lt;P&gt;EDRA also included an early prototype of the &lt;A href="http://msdn2.microsoft.com/en-us/teamsystem/aa718948.aspx"&gt;Guidance Automation Toolkit&lt;/A&gt; to help framework users with building an EDRA based&amp;nbsp;service. This was known as the "Microsoft IPE Wizard Framework". Check out &lt;A href="http://clariusconsulting.net/blogs/kzu/archive/2004/07/05/257.aspx"&gt;this blog post from Daniel Cazzulino&lt;/A&gt; to see the EDRA wizard framework&amp;nbsp;in action.&lt;/P&gt;
&lt;P&gt;Eventually we reluctantly decided to drop EDRA. Some of the reasons for this were:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;The EDRA wizards were hard to extend. 
&lt;LI&gt;You had to mess with a big XML file to configure handlers. 
&lt;LI&gt;No proper .NET 2.0 support. 
&lt;LI&gt;No WS-* support. 
&lt;LI&gt;No support for calling out into other services from the service implementation. 
&lt;LI&gt;No big adoption in the worldwide .NET community. Not a lot of publicly available handlers. 
&lt;LI&gt;No clear path towards Windows Communication Foundation. The internal messaging structure was not based on SOAP.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Especially the last reason was probably the biggest&amp;nbsp;reason why Microsoft decided to stop the P&amp;amp;P effort on EDRA. The 1.1 release was announced to be the final release.&lt;/P&gt;
&lt;P&gt;The Microsoft Enterprise Library has become far more successful with respect to adoption world-wide than EDRA. There are several EntLib extensions freely available. I've contributed my &lt;A href="http://bloggingabout.net/blogs/erwyn/articles/rolling_file_trace_listener.aspx"&gt;RollingFileTraceListener&lt;/A&gt; to the greater EntLib community. According to the feedback I got, this extension has been really useful for several people and companies.&amp;nbsp;Microsoft&amp;nbsp;has realized the lack of&amp;nbsp;this functionality&amp;nbsp;in the&amp;nbsp;Enterprise Library and&amp;nbsp;EntLib 3.0 will include a similar rolling file trace listener out-of-the-box.&lt;/P&gt;
&lt;P&gt;EDRA is still being used by some companies. One of the largest implementations is the&amp;nbsp;&lt;A href="http://msdn2.microsoft.com/en-us/library/bb190160.aspx"&gt;Commonwealth Bank of Australia CommSee Solution that is based on EDRA&lt;/A&gt;. Microsoft is still using this as a reference case. For instance, there was a presentation on CommSee at &lt;A href="http://msdn2.microsoft.com/en-us/library/bb190160.aspx"&gt;LEAP2007&lt;/A&gt; in Redmond.&lt;/P&gt;
&lt;P&gt;I disliked the idea that EDRA pushed you into the direction of distributing the service interface and service implementation across different tiers. Both layers had to be realized in managed code using EDRA, so the service interface could also just call the service implementation in process. Remember the first law of distributed computing: "Don't distribute!" (unless you have to).&lt;/P&gt;
&lt;P&gt;Of course, it was great that you could distribute service interface and service implementation. But not all applications need this.&lt;/P&gt;
&lt;P&gt;So in my opinion it is better to have different frameworks that cleanly support these orthogonal&amp;nbsp;concepts:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Separating business logic from cross cutting concerns. 
&lt;LI&gt;Separating service interface from service implementation across physical tiers.&lt;/LI&gt;&lt;/UL&gt;
&lt;H2&gt;Proseware&lt;/H2&gt;
&lt;P&gt;By the way, a sample application that was commissioned by Microsoft to provide guidance on how to build distributed systems never saw the public light of day. It was the &lt;A href="http://friends.newtelligence.net/clemensv/PermaLink,guid,b90c9c1c-131f-4806-bf29-8540b40cd8ec.aspx"&gt;Proseware application designed and build by newtelligence's Clemens Vasters&lt;/A&gt;. &lt;A href="http://blogs.msdn.com/richardt/archive/2005/07/11/437671.aspx#438501"&gt;I never got a clear answer from Richard Turner&lt;/A&gt;, the responsible program manager at Microsoft, for why it would not be released.&amp;nbsp;But I think it was because of internal Microsoft politics: Proseware&amp;nbsp;was too close to the release of WCF and might be perceived as conflicting guidance (too close turned out to be two years!).&lt;/P&gt;
&lt;P&gt;Proseware included a great idea to improve the reliability and scalability of web services. By using one-way messaging for both requests and response. That way you can use queuing inside your service to handle heavy loads and to automatically retry failed attempts at processing messages (for example when a database is temporarily unavailable) without bothering the service clients with having to retry.&amp;nbsp;To achieve this, a web service interface would be a very thin facade around an MSMQ transactional&amp;nbsp;message queue. The web service would only return a fault when the message could not be placed onto the queue (highly unlikely). The message would re-enter the&amp;nbsp;queue if the service implementation failed at processing it so it could be processed again. A response from the service implementation would be send using a one-way message to the recipient specified in the WS-Addressing ReplyTo header in the original request. Note that this recipient does not have to be the original caller! It could well be a different service and the response message&amp;nbsp;is really&amp;nbsp;a new request.&amp;nbsp;Check out &lt;A href="http://benjaminm.net/PermaLink.aspx?guid=87ce6b8b-0fbf-4f0d-86c9-d9e780a1cb6a"&gt;this blog entry for more details on Proseware&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Eventually, we will all leave the world of developing and calling synchronous services in distributed systems, but that may take a while ;) Anyway, sorry for this digression, enter the Policy Injection Application Block.&lt;/P&gt;
&lt;H2&gt;Policy Injection Application Block&lt;/H2&gt;
&lt;P&gt;The new&amp;nbsp;Policy Injection Application Block (PIAB) wisely focuses on just the separation of business logic from cross cutting concerns. Windows Communication Foundation is the way to go for distributing your system, i.e., for building connected systems.&lt;/P&gt;
&lt;P&gt;The PIAB shares the idea of a pipeline of pre- and post handlers processing messages. It uses the MarshalByRefObject and TransparentProxy infrastructure that was originally designed for .NET remoting to transparently insert policies when they are enabled. The&amp;nbsp;client just thinks it is calling the business logic object directly. Take a look at the &lt;A href="http://blogs.msdn.com/tomholl/archive/2007/02/23/announcing-the-policy-injection-application-block.aspx"&gt;pictures in Tom's blog entry&lt;/A&gt; to get a better idea of how this works and read &lt;A href="http://blogs.msdn.com/edjez/archive/2007/02/23/policy-injection-app-block-behind-the-scenes.aspx"&gt;Edward Jezierski's blog post&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;You might also be interested in&amp;nbsp;the &lt;A href="http://blogs.msdn.com/tomholl/archive/2007/02/23/announcing-the-policy-injection-application-block.aspx#comments"&gt;comments&lt;/A&gt; posted to Tom's announcement. Several people are concerned about the performance impact that inserting policies will have on your code. This is caused by the technical implementation that Microsoft has chosen to insert policies (or should they be called aspects? ;). As I haven't looked into detail at the new block, I&amp;nbsp;do not have a firm&amp;nbsp;opinion on this matter yet. &lt;/P&gt;
&lt;P&gt;The transparent aspect of the policy injection&amp;nbsp;does conflict with&amp;nbsp;the wisdom put into WCF. WCF follows one of the important tenets of service orientation: "Make boundaries explicit". Don't fool the client into thinking they are just performing a local method call, because the performance and reliability characteristics are entirely different.&amp;nbsp;WCF achieves this explicitness by using DataContracts and ServiceContracts. It does not expose everything by default, you have to opt-in. It also makes you more aware that you should not use chatty interfaces across service boundaries.&lt;/P&gt;
&lt;P&gt;One of the comments to Tom's blog post states that the overhead of just having a&amp;nbsp;PIAB policy injection could mean&amp;nbsp;that the mere act of calling a method is 50 times slower than a direct method call. If this is the case, you should be well aware and design your objects accordingly: don't implement chatty interfaces!&lt;/P&gt;
&lt;P&gt;The future will tell if the PIAB will be more successful than EDRA&amp;nbsp;at enabling the separation of business logic from cross cutting concerns in .NET enterprise applications.&lt;/P&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=129311" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/.NET/default.aspx">.NET</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Architecture+and+Design/default.aspx">Architecture and Design</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Work/default.aspx">Work</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Enterprise+Library/default.aspx">Enterprise Library</category></item><item><title>Hybridizing Java, Flash and WPF/E</title><link>http://bloggingabout.net/blogs/erwyn/archive/2007/02/01/hybridizing-java-flash-and-wpf-e.aspx</link><pubDate>Thu, 01 Feb 2007 00:37:01 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:105241</guid><dc:creator>Erwyn van der Meer</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/erwyn/rsscomments.aspx?PostID=105241</wfw:commentRss><comments>http://bloggingabout.net/blogs/erwyn/archive/2007/02/01/hybridizing-java-flash-and-wpf-e.aspx#comments</comments><description>&lt;p&gt;Bruce Eckel has an interesting post on &lt;a href="http://www.artima.com/weblogs/viewpost.jsp?thread=193593"&gt;hybridizing Java with Flash&lt;/a&gt;. He notices the trend in the Java world to replace Java-based GUI frameworks (AWT, Swing, etc.) for Java apps by Flash.&lt;/p&gt; &lt;p&gt;Incidently, I came across one such app yesterday evening when I installed &lt;a href="http://www.powersnap.com/"&gt;PowerSnap&lt;/a&gt;. The UI indeed was somewhat snappy. This application claims it can keep your locally stored photographs in sync with those posted on &lt;a href="http://www.flickr.com/photos/erwyn/"&gt;Flickr&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Of course, the major benefit of using Flash over UI technologies as WPF is &lt;em&gt;reach&lt;/em&gt;. WPF only runs on a subset of the Windows platforms. PowerSnap is working on a Mac version which should be relatively easy because Java and Flash are available on the Mac.&lt;/p&gt; &lt;p&gt;WPF/E is nice and will be cross-platform but I think it will be confined to the browser in v1. Currently the WPF/E engine can only be scripted using JavaScript.&lt;/p&gt; &lt;p&gt;Maybe in future versions it can be used for the GUI layer of a standalone cross-platform .NET application. Microsoft is quietly working on versions of the CLR that will run on other platforms so that WPF/E can be "scripted" using C#. The work done by the &lt;a href="http://msdn2.microsoft.com/en-us/netframework/aa497273.aspx"&gt;.NET Compact Framework&lt;/a&gt; team already proves that this is possible. This CLR runs on devices like SmartPhones, PDAs and the &lt;a href="http://msdn2.microsoft.com/en-us/library/bb203912.aspx"&gt;Xbox 360&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=105241" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Architecture+and+Design/default.aspx">Architecture and Design</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/WPF/default.aspx">WPF</category></item><item><title>LEAP Day 1</title><link>http://bloggingabout.net/blogs/erwyn/archive/2007/01/17/leap-day-1.aspx</link><pubDate>Tue, 16 Jan 2007 23:27:40 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:96919</guid><dc:creator>Erwyn van der Meer</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://bloggingabout.net/blogs/erwyn/rsscomments.aspx?PostID=96919</wfw:commentRss><comments>http://bloggingabout.net/blogs/erwyn/archive/2007/01/17/leap-day-1.aspx#comments</comments><description>&lt;p&gt;RJ has already &lt;a href="http://robertjan.vanholland.net/weblog/?p=91"&gt;blogged (in Dutch) about Tuesday's sessions of LEAP&lt;/a&gt; here at the Microsoft campus in&amp;nbsp;Redmond, WA.&lt;/p&gt; &lt;p&gt;Let me add that I was pleasantly surprised by the lack&amp;nbsp;of product pushing by the Microsoft architects. The LEAP sessions in Barneveld (NL) were much more focussed on Microsoft products. They were mainly on the pros and not the cons of those products.&lt;/p&gt; &lt;p&gt;The sessions here in Redmond gave nice high-level overviews of a couple of topics that we as architects face in today's IT world. &lt;/p&gt; &lt;p&gt;The G-word seemed to be&amp;nbsp;forbidden (apart from Gmail) but all-in-all&amp;nbsp;Microsoft gave a balanced picture of software as a service.&lt;/p&gt; &lt;p&gt;The session by Jack Greenfield on Software Factories was the best of the day. I was already familiar with Microsoft's vision and strategy and the Sofware Factories Initiative. Hearing the man with the vision speak himself on this subject adds a lot to this. &lt;/p&gt; &lt;p&gt;On Thursday we can attend a workshop that goes into more depth on software factories and where Microsoft will show off early bits of the future products in this space. We have to sign a Non-Disclosure Agreement (NDA) before attending that session, so we can't blog about it.&lt;/p&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=96919" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Architecture+and+Design/default.aspx">Architecture and Design</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Work/default.aspx">Work</category></item></channel></rss>