<?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 : Work</title><link>http://bloggingabout.net/blogs/erwyn/archive/tags/Work/default.aspx</link><description>Tags: Work</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 SP2 (Build: 40407.4157)</generator><item><title>Trace and TraceSource in the Windows Azure DevFabric UI</title><link>http://bloggingabout.net/blogs/erwyn/archive/2010/04/22/trace-and-tracesource-in-the-windows-azure-devfabric-ui.aspx</link><pubDate>Thu, 22 Apr 2010 13:23:00 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:483145</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=483145</wfw:commentRss><comments>http://bloggingabout.net/blogs/erwyn/archive/2010/04/22/trace-and-tracesource-in-the-windows-azure-devfabric-ui.aspx#comments</comments><description>&lt;p&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="Windows Azure" border="0" alt="Windows Azure" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/erwyn.metablogapi/2728.WindowsAzure_5F00_3D9EA2A4.png" width="240" height="43" /&gt; &lt;/p&gt;  &lt;p&gt;The Windows Azure Platform has a rich diagnostics infrastructure to enable logging and performance monitoring in the cloud.&lt;/p&gt;  &lt;p&gt;When you run a cloud app locally in the DevFabric you can view diagnostics trace output in the console window that is part of the DevFabric UI. For example, say I have the line&lt;/p&gt;  &lt;pre class="code"&gt;System.Diagnostics.&lt;span style="color:#2b91af;"&gt;Trace&lt;/span&gt;.TraceInformation(&lt;span style="color:#a31515;"&gt;&amp;quot;Old Trace called at {0}.&amp;quot;&lt;/span&gt;, &lt;span style="color:#2b91af;"&gt;DateTime&lt;/span&gt;.Now);&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;That line gives a result like this in the DevFabric UI:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/erwyn.metablogapi/3782.image_5F00_562E3FF4.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="Screenshot of DevFabric UI" border="0" alt="Screenshot of DevFabric UI" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/erwyn.metablogapi/4718.image_5F00_thumb_5F00_2EF3F6BF.png" width="861" height="583" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;If you can’t see the DevFabric UI, you can enable it here after starting your cloud app from Visual Studio:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/erwyn.metablogapi/7416.image_5F00_0ED8EA02.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="image" border="0" alt="image" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/erwyn.metablogapi/5732.image_5F00_thumb_5F00_40D08A8C.png" width="421" height="265" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Using the DevFabric UI is the most basic form of viewing Trace output. Looking at each individual console window doesn’t really scale well if you have many instances and, furthermore, the console window of an instance is not available in the cloud. For this, there is a special TraceListener derived class: &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.diagnostics.diagnosticmonitortracelistener.aspx" target="_blank"&gt;&lt;font face="Courier New"&gt;Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener&lt;/font&gt;&lt;/a&gt;. It sends the trace output to a Windows Azure diagnostics monitor process that is able to store the messages in Windows Azure Storage. Here is a look at a trace message using the &lt;a href="http://azurestorageexplorer.codeplex.com/" target="_blank"&gt;Azure Storage Explorer&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/erwyn.metablogapi/1541.image_5F00_35A70042.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="Screenshot of Azure Storage Explorer" border="0" alt="Screenshot of Azure Storage Explorer" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/erwyn.metablogapi/0638.image_5F00_thumb_5F00_009A7112.png" width="985" height="535" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;This trace listener is enabled through web.config:&lt;/p&gt;

&lt;pre class="code"&gt;  &lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;system.diagnostics&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;sources&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;source &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Diag&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;listeners&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
          &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;add &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;AzureDiagnostics&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;listeners&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
      &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;source&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;sources&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;sharedListeners&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;add &lt;/span&gt;&lt;span style="color:red;"&gt;type&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&lt;/span&gt;&amp;quot;
          &lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;AzureDiagnostics&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;sharedListeners&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;trace&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;listeners&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;add &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;AzureDiagnostics&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;
      &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;listeners&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;trace&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;system.diagnostics&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;You can also see a message “TraceSource called at …”. This message was output using a TraceSource instance:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;private static readonly &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;TraceSource &lt;/span&gt;ts = new System.Diagnostics.&lt;span style="color:#2b91af;"&gt;TraceSource&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;Diag&amp;quot;&lt;/span&gt;, &lt;span style="color:#2b91af;"&gt;SourceLevels&lt;/span&gt;.All);&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;protected void &lt;/span&gt;TraceMeButton_Click(&lt;span style="color:blue;"&gt;object &lt;/span&gt;sender, &lt;span style="color:#2b91af;"&gt;EventArgs &lt;/span&gt;e)
{
    ts.TraceEvent(&lt;span style="color:#2b91af;"&gt;TraceEventType&lt;/span&gt;.Information, 2, &lt;span style="color:#a31515;"&gt;&amp;quot;TraceSource called at {0}.&amp;quot;&lt;/span&gt;, &lt;span style="color:#2b91af;"&gt;DateTime&lt;/span&gt;.Now);
    System.Diagnostics.&lt;span style="color:#2b91af;"&gt;Trace&lt;/span&gt;.TraceInformation(&lt;span style="color:#a31515;"&gt;&amp;quot;Old Trace called at {0}.&amp;quot;&lt;/span&gt;, &lt;span style="color:#2b91af;"&gt;DateTime&lt;/span&gt;.Now);
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;However, note that a similar message “TraceSource called at …” didn’t show up in the DevFabric UI. You might wonder what is going on. And you might wonder why I want to use a TraceSource instead of Trace? Because &lt;a href="http://msdn.microsoft.com/en-us/library/ms228993(VS.80).aspx" target="_blank"&gt;this MSDN article states&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;One of the new features in the .NET Framework version 2.0 is an enhanced tracing system. The basic premise is unchanged: tracing messages are sent through switches to listeners, which report the data to an associated output medium. A primary difference for version 2.0 is that traces can be initiated through instances of the &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.tracesource(VS.80).aspx"&gt;TraceSource&lt;/a&gt; class. &lt;b&gt;TraceSource&lt;/b&gt; is intended to function as an enhanced tracing system and can be used in place of the static methods of the older &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.trace(VS.80).aspx"&gt;Trace&lt;/a&gt; and &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.debug(VS.80).aspx"&gt;Debug&lt;/a&gt; tracing classes. The familiar &lt;b&gt;Trace&lt;/b&gt; and &lt;b&gt;Debug&lt;/b&gt; classes still exist, but the recommended practice is to use the &lt;b&gt;TraceSource&lt;/b&gt; class for tracing.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Also check out &lt;a href="http://blogs.msdn.com/bclteam/archive/2005/03/15/396431.aspx" target="_blank"&gt;this blog post&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The reason you don’t see the message for the TraceSource in the DevFabric UI is that the DevFabric magically adds a special TraceListener for the “old fashioned” Trace class, but not for your TraceSource instance. I put together a &lt;a title="Download the Visual Studio solution" href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/erwyn.attachments/0741.DiagnosticsService.zip"&gt;cloud app solution&lt;/a&gt; (Visual Studio 2010) that shows this through a simple web role. This web role has the configuration you see above in its web.config file. If you run this simple web role in the DevFabric you’ll see:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/erwyn.metablogapi/8272.image_5F00_27688752.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="Screenshot of sample web role app" border="0" alt="Screenshot of sample web role app" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/erwyn.metablogapi/7651.image_5F00_thumb_5F00_7C23F04A.png" width="755" height="488" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Note that Trace has a &lt;font face="Courier New"&gt;Microsoft.ServiceHosting.Tools.DevelopmentFabric.Runtime.DevelopmentFabricTraceListener&lt;/font&gt; instance registered, while the TraceSource hasn’t. To remedy this, I’ve created a small class that adds a DevFabricTraceListener to a TraceSource if it is registered for Trace:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;public static class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;TraceSourceFixer
&lt;/span&gt;{
    &lt;span style="color:blue;"&gt;private const string &lt;/span&gt;DevFabricTraceListenerFullName = &lt;span style="color:#a31515;"&gt;&amp;quot;Microsoft.ServiceHosting.Tools.DevelopmentFabric.Runtime.DevelopmentFabricTraceListener&amp;quot;&lt;/span&gt;;

    &lt;span style="color:blue;"&gt;public static void &lt;/span&gt;AddDevFabricTraceListener(&lt;span style="color:#2b91af;"&gt;TraceSource &lt;/span&gt;traceSource)
    {
        &lt;span style="color:blue;"&gt;var &lt;/span&gt;alreadyInTraceSource = GetDevFabricTraceListeners(traceSource.Listeners);

        &lt;span style="color:blue;"&gt;if &lt;/span&gt;(alreadyInTraceSource.Count() &amp;gt; 0)
            &lt;span style="color:blue;"&gt;return&lt;/span&gt;;

        &lt;span style="color:blue;"&gt;var &lt;/span&gt;alreadyInTrace = GetDevFabricTraceListeners(&lt;span style="color:#2b91af;"&gt;Trace&lt;/span&gt;.Listeners);

        &lt;span style="color:blue;"&gt;var &lt;/span&gt;devFabricTraceListener = alreadyInTrace.FirstOrDefault();
        &lt;span style="color:blue;"&gt;if &lt;/span&gt;(devFabricTraceListener != &lt;span style="color:blue;"&gt;null&lt;/span&gt;)
        {
            traceSource.Listeners.Add(devFabricTraceListener);
        }
    }

    &lt;span style="color:blue;"&gt;private static &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af;"&gt;TraceListener&lt;/span&gt;&amp;gt; GetDevFabricTraceListeners(&lt;span style="color:#2b91af;"&gt;TraceListenerCollection &lt;/span&gt;listeners)
    {
        &lt;span style="color:blue;"&gt;var &lt;/span&gt;result = &lt;span style="color:blue;"&gt;from &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;TraceListener &lt;/span&gt;listener &lt;span style="color:blue;"&gt;in &lt;/span&gt;listeners.Cast&amp;lt;&lt;span style="color:#2b91af;"&gt;TraceListener&lt;/span&gt;&amp;gt;()
                &lt;span style="color:blue;"&gt;where &lt;/span&gt;IsDevFabricTraceListener(listener)
                &lt;span style="color:blue;"&gt;select &lt;/span&gt;listener;

        &lt;span style="color:blue;"&gt;return &lt;/span&gt;result;
    }

    &lt;span style="color:blue;"&gt;private static bool &lt;/span&gt;IsDevFabricTraceListener(&lt;span style="color:#2b91af;"&gt;TraceListener &lt;/span&gt;listener)
    {
        &lt;span style="color:blue;"&gt;return &lt;/span&gt;(listener.GetType().FullName == DevFabricTraceListenerFullName);
    }
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;This helper class gets called when you press the &lt;em&gt;Register DevFabric Listener&lt;/em&gt; button. If you click the &lt;em&gt;Trace Me&lt;/em&gt; button after that, you’ll see two trace messages show up in the DevFabric UI:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/erwyn.metablogapi/5707.image_5F00_4717611A.png"&gt;&lt;img style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" title="Screenshot of DevFabric UI detail" border="0" alt="Screenshot of DevFabric UI detail" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/erwyn.metablogapi/4503.image_5F00_thumb_5F00_0E008418.png" width="501" height="72" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;You can download my solution &lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/erwyn.attachments/0741.DiagnosticsService.zip"&gt;DiagnosticsService.zip&lt;/a&gt; to try it yourself.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=483145" 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/Work/default.aspx">Work</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Windows+Azure/default.aspx">Windows Azure</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Cloud+Computing/default.aspx">Cloud Computing</category></item><item><title>SQL Server 2008 R2 RTM</title><link>http://bloggingabout.net/blogs/erwyn/archive/2010/04/22/sql-server-2008-r2-rtm.aspx</link><pubDate>Wed, 21 Apr 2010 22:17:00 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:483143</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=483143</wfw:commentRss><comments>http://bloggingabout.net/blogs/erwyn/archive/2010/04/22/sql-server-2008-r2-rtm.aspx#comments</comments><description>&lt;p&gt;Wow, April 2010 proves to be a jam-packed month of releases from Microsoft. A short list, that is bound to be incomplete:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;.NET Framework 4&lt;/li&gt;    &lt;li&gt;Visual Studio 2010&lt;/li&gt;    &lt;li&gt;Office 2010&lt;/li&gt;    &lt;li&gt;SharePoint 2010&lt;/li&gt;    &lt;li&gt;Data Protection Manager 2010&lt;/li&gt;    &lt;li&gt;System Center Essentials 2010&lt;/li&gt;    &lt;li&gt;Dynamics GP 2010&lt;/li&gt;    &lt;li&gt;Enterprise Library 5.0&lt;/li&gt;    &lt;li&gt;SQL Server 2008 R2&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.technet.com/www.sqlserverlaunch.com"&gt;&lt;img title="R2 Banner" border="0" alt="R2 Banner" src="http://blogs.technet.com/blogfiles/dataplatforminsider/WindowsLiveWriter/SQLServer2008R2ReleasedtoManufacturing_FF3F/R2%20Banner_3.png" width="517" height="136" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The &lt;a href="http://www.microsoft.com/sqlserver/2008/en/us/R2Downloads.aspx" target="_blank"&gt;trial versions of SQL Server 2008 R2 are now available for download&lt;/a&gt;. Here are the highlights of what’s new in 2008 R2:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.powerpivot.com/"&gt;&lt;em&gt;PowerPivot&lt;/em&gt;&lt;/a&gt;&lt;em&gt;:&lt;/em&gt; a managed self-service analysis solution that empowers end users to access, analyze and share data across the enterprise in an IT managed environment using Excel 2010 and SharePoint Sever 2010. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/sqlserver/2008/en/us/MDS.aspx"&gt;&lt;i&gt;Master Data Services&lt;/i&gt;&lt;/a&gt;&lt;i&gt;:&lt;/i&gt; helps IT organizations centrally manage critical data assets companywide and across diverse systems, and enables more people to securely manage master data directly, and ensure the integrity of information over time. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/sqlserver/2008/en/us/R2-multi-server.aspx"&gt;&lt;i&gt;Application and Multi-server Management&lt;/i&gt;&lt;/a&gt;&lt;i&gt;: &lt;/i&gt;helps organizations proactively manage database environments efficiently at scale through centralized visibility into resource utilization and streamlined consolidation and upgrade initiatives across the application lifecycle. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://download.microsoft.com/download/7/F/D/7FDAA75C-1273-4DFE-8EC6-D9699C3EE47F/SQL_Server_2008_R2_Report_Builder_3_0FAQs.docx"&gt;&lt;i&gt;Report Builder 3.0&lt;/i&gt;&lt;/a&gt;&lt;i&gt;: &lt;/i&gt;report authoring component with support for geospatial visualization. This new release provides capabilities to further increase end user productivity with enhanced wizards, more powerful visualizations, and intuitive authoring. &lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/sqlserver/2008/en/us/R2-complex-event.aspx"&gt;&lt;i&gt;StreamInsight&lt;/i&gt;&lt;/a&gt;&lt;i&gt;: &lt;/i&gt;a low latency complex event processing platform to help IT monitor, analyze and act on the data in motion to make more informed business decisions in near real-time.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;More details about the release can be found &lt;a href="http://blogs.technet.com/dataplatforminsider/archive/2010/04/21/sql-server-2008-r2-released-to-manufacturing.aspx" target="_blank"&gt;on the team blog&lt;/a&gt;. &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=483143" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Work/default.aspx">Work</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/SQL+Server/default.aspx">SQL Server</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Microsoft/default.aspx">Microsoft</category></item><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>Upcoming Support in Windows Azure for .NET Framework 4</title><link>http://bloggingabout.net/blogs/erwyn/archive/2010/04/07/upcoming-support-in-windows-azure-for-net-framework-4.aspx</link><pubDate>Wed, 07 Apr 2010 10:33:00 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:483066</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=483066</wfw:commentRss><comments>http://bloggingabout.net/blogs/erwyn/archive/2010/04/07/upcoming-support-in-windows-azure-for-net-framework-4.aspx#comments</comments><description>&lt;p&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title=".NET Framework" border="0" alt=".NET Framework" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/erwyn.metablogapi/7510.NETFrmwrk_5F00_h_5F00_rgb_5F00_r_5F00_72357070.png" width="120" height="48" /&gt;in &lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/erwyn.metablogapi/1440.WinAzure_5F00_h_5F00_rgb_5F00_638AC48B.png"&gt;&lt;img style="border-bottom:0px;border-left:0px;display:inline;border-top:0px;border-right:0px;" title="Windows Azure" border="0" alt="Windows Azure" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/erwyn.metablogapi/1738.WinAzure_5F00_h_5F00_rgb_5F00_thumb_5F00_110BE44F.png" width="240" height="45" /&gt;&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;As you will probably know, Visual Studio 2010 and .NET Framework 4 will RTM on April 12, 2010 and will be available for download on &lt;a href="http://msdn.microsoft.com/subscriptions/downloads/default.aspx" target="_blank"&gt;MSDN Subscriptions Downloads&lt;/a&gt; the same day.&lt;/p&gt;  &lt;p&gt;The Windows Azure team is committed to making .NET Framework 4 available in &lt;a href="https://windows.azure.com/" target="_blank"&gt;Windows Azure&lt;/a&gt; within 90 days of the RTM date.&lt;/p&gt;  &lt;p&gt;A lesser known fact is that the latest available Windows Azure build already has a .NET 4 version installed, namely the RC bits. Although this version cannot be used to run applications on (because .NET 4 is not yet exposed in the Windows Azure dev tools), you can use this build to test if the presence of .NET 4 has impact on existing .NET 3.5 apps running on Windows Azure.&lt;/p&gt;  &lt;p&gt;Read the &lt;a href="http://blogs.msdn.com/windowsazure/archive/2010/04/07/upcoming-support-in-windows-azure-for-net-framework-4.aspx" target="_blank"&gt;official announcement here&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=483066" 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/Work/default.aspx">Work</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Windows+Azure/default.aspx">Windows Azure</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Cloud+Computing/default.aspx">Cloud Computing</category></item><item><title>Visual Studio Performance Testing Quick Reference Guide</title><link>http://bloggingabout.net/blogs/erwyn/archive/2010/04/03/visual-studio-performance-testing-quick-reference-guide.aspx</link><pubDate>Sat, 03 Apr 2010 12:21:00 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:483055</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=483055</wfw:commentRss><comments>http://bloggingabout.net/blogs/erwyn/archive/2010/04/03/visual-studio-performance-testing-quick-reference-guide.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/erwyn.metablogapi/7506.VS2010Ult_5F00_h_5F00_rgb_5F00_3A8D7A2C.png"&gt;&lt;img height="48" width="240" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/erwyn.metablogapi/1104.VS2010Ult_5F00_h_5F00_rgb_5F00_thumb_5F00_4C6A0DF9.png" alt="VS2010-Ult_h_rgb" border="0" title="VS2010-Ult_h_rgb" style="border-right-width:0px;display:inline;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Last week we published a new major version of the &lt;a target="_blank" href="http://vsptqrg.codeplex.com/"&gt;Visual Studio Performance Testing Quick Reference Guide&lt;/a&gt;. The effort of creating this document was lead by Geoff Gray. Geoff is a senior consultant in the Microsoft Services Labs in the US that specializes in performance testing using Visual Studio. I was part of the &lt;a target="_blank" href="http://msdn.microsoft.com/en-us/teamsystem/ee358786.aspx"&gt;Rangers&lt;/a&gt; team that contributed articles to &lt;a target="_blank" href="http://vsptqrg.codeplex.com/releases/view/42484"&gt;this guide&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;From time to time I do performance testing engagements. Last week for example I worked for a customer and load tested their new Internet facing website before it goes live later this month. Performance testing uncovers issues in the software and the infrastructure that might otherwise go unnoticed until the public hits the site. And that is a bad time to discover performance issues.&lt;/p&gt;
&lt;p&gt;Creating and executing real-world performance testing can be a tricky job and this quick reference guide gives lots of tricks &amp;amp; tips from consultants from Microsoft Services and the Visual Studio product team on how to tackle challenges you might encounter.&lt;/p&gt;
&lt;p&gt;Visual Studio has a rich extensibility model for performance testing and that&amp;rsquo;s why it is interesting for development minded people like me. You can create plug-ins in C# to do&amp;nbsp; advanced parameterization of web tests and load tests (&lt;a target="_blank" href="http://msdn.microsoft.com/en-us/library/ms243191(v=VS.100).aspx" title="Example of creating a web performance test plug-in for Visual Studio"&gt;example on MSDN&lt;/a&gt;). The &lt;a target="_blank" href="http://vsptqrg.codeplex.com/releases/view/42484"&gt;QRG&lt;/a&gt; has lots of examples of when and how this is useful.&lt;/p&gt;
&lt;p&gt;Load testing is part of Visual Studio 2008 Team Suite or Test Edition and of &lt;a target="_blank" href="http://www.microsoft.com/visualstudio/en-us/products/2010-editions/ultimate"&gt;Visual Studio 2010 Ultimate&lt;/a&gt;. With VS2010, if you need to simulate more than 1000 users, you can purchase &amp;ldquo;&lt;a target="_blank" href="http://blogs.msdn.com/edglas/archive/2009/10/20/introducing-the-microsoft-visual-studio-load-test-virtual-user-pack-2010.aspx"&gt;virtual user packs&lt;/a&gt;&amp;rdquo;. This will enable you to simulate higher loads using a test rig consisting of one test controller and several test agents. Previously with VS2008 you had to license each agent. You can&amp;rsquo;t be sure in advance how many users you can simulate with one agent because it depends on many factors like hardware and complexity of the application and the test itself.&lt;/p&gt;
&lt;p&gt;Many organizations forego the effort of performance testing and take a &amp;ldquo;wait and see&amp;rdquo; stance. This reactive approach can lead to costly repairs and bad publicity. My advice is to take a proactive stance and be confident about the performance of your application before it goes live. In many cases there are quick wins to improve the performance by enabling better caching (&lt;a target="_blank" href="http://www.sharepointnutsandbolts.com/2009/05/optimization-blob-caching-and-http-304s.html"&gt;blob caching for SharePoint&lt;/a&gt;). Even simple things like enabling &lt;a target="_blank" href="http://www.iis.net/ConfigReference/system.webServer/httpCompression" title="How to enable HTTP compression on IIS 7"&gt;HTTP compression&lt;/a&gt; are still often forgotten.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=483055" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Work/default.aspx">Work</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Performance+Testing/default.aspx">Performance Testing</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Visual+Studio/default.aspx">Visual Studio</category></item><item><title>Windows Azure DevTableGen.exe issue with x86 assemblies on 64-bit Windows</title><link>http://bloggingabout.net/blogs/erwyn/archive/2009/06/23/windows-azure-devtablegen-exe-issue-with-x86-assemblies-on-64-bit-windows.aspx</link><pubDate>Tue, 23 Jun 2009 21:28:00 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:481845</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=481845</wfw:commentRss><comments>http://bloggingabout.net/blogs/erwyn/archive/2009/06/23/windows-azure-devtablegen-exe-issue-with-x86-assemblies-on-64-bit-windows.aspx#comments</comments><description>&lt;p&gt;I ran into an issue with a Windows Azure project created from scratch in Visual Studio 2010 Beta 1 with the May CTP of the &lt;a href="http://msdn.microsoft.com/en-us/azure/cc994380.aspx"&gt;Windows Azure Tools&lt;/a&gt;.&lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/erwyn.metablogapi/8420.Azure_5F00_Logo_5F00_64BA1313.png"&gt;&lt;img height="112" width="90" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/erwyn.metablogapi/0825.Azure_5F00_Logo_5F00_thumb_5F00_644DE01E.png" align="right" alt="Azure_Logo" border="0" title="Azure_Logo" style="border-bottom:0px;border-left:0px;display:inline;margin-left:0px;border-top:0px;margin-right:0px;border-right:0px;" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;When trying to create tables in the local development storage, I got the error &amp;ldquo;Invalid image format&amp;rdquo;. This issue occurred both from VS (using the Create Test Storage Tables option) and when running &lt;a href="http://msdn.microsoft.com/en-us/library/dd179373.aspx"&gt;DevTableGen.exe&lt;/a&gt; manually from a command prompt. It didn&amp;rsquo;t occur when doing the same in VS2008.&lt;/p&gt;
&lt;p&gt;DevTableGen.exe is a tool from the Windows Azure SDK. This tools loads an assembly, reflects over it and then tries to create tables in the local development storage.&lt;/p&gt;
&lt;p&gt;After some head scratching I figured out the cause: in Dev10 the default target platform for executables was changed from &lt;a href="http://msdn.microsoft.com/en-us/library/zekwfyz4(VS.80).aspx"&gt;&lt;em&gt;AnyCPU&lt;/em&gt;&lt;/a&gt; to &lt;em&gt;x86&lt;/em&gt;. In Beta 1 a bug snuck in, so that &lt;em&gt;x86&lt;/em&gt; is also the default for class libraries (DLLs). This will be changed back to &lt;em&gt;AnyCPU&lt;/em&gt; in Beta 2. &lt;a href="http://blogs.msdn.com/rmbyers/archive/2009/06/08/anycpu-exes-are-usually-more-trouble-then-they-re-worth.aspx"&gt;This blog post from Rick Byers&lt;/a&gt; has a lot of detail on why the default has changed.&lt;/p&gt;
&lt;p&gt;DevTableGen.exe is an &lt;em&gt;AnyCPU&lt;/em&gt; executable, so it will run as a 64-bit process on an 64-bit version of Windows. As such it cannot load assemblies marked as 32-bit only when run on 64-bit Windows. The solution was to change the assembly to &lt;em&gt;AnyCPU&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;This issue would have been prevented if DevTableGen.exe was marked as 32-bit only. That way it would always run in a 32-bit process and could load &lt;em&gt;x86&lt;/em&gt; and &lt;em&gt;AnyCPU&lt;/em&gt; assemblies. According to the blog post linked to above, it is now considered best practice to explicitly mark an executable as &lt;em&gt;x86&lt;/em&gt; or &lt;em&gt;x64&lt;/em&gt;. For most applications &lt;em&gt;x86&lt;/em&gt; is the best option.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve suggested this change to the product team.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update&lt;/strong&gt;: I&amp;#39;ve been informed that DevTableGen.exe will not be changed. This is because this issue is temporary and will go away when VS2010 Beta 2 is released. Also the web role and worker role processes in Windows Azure are&amp;nbsp;64-bit, so trying to load &lt;em&gt;x86&lt;/em&gt; assemblies will fail anyway. So if you use Beta 1 make sure you explicitly change the platform for any assemblies you create&amp;nbsp;for the cloud to &lt;em&gt;AnyCPU&lt;/em&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=481845" 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/Work/default.aspx">Work</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Windows+Azure/default.aspx">Windows Azure</category></item><item><title>New Microsoft .NET Logo and PDC08</title><link>http://bloggingabout.net/blogs/erwyn/archive/2008/10/25/new-microsoft-net-logo-and-pdc08.aspx</link><pubDate>Sat, 25 Oct 2008 18:45:00 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:476146</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=476146</wfw:commentRss><comments>http://bloggingabout.net/blogs/erwyn/archive/2008/10/25/new-microsoft-net-logo-and-pdc08.aspx#comments</comments><description>&lt;p&gt;We have created a new logo for the Microsoft .NET brand.&lt;/p&gt;  &lt;p&gt;&lt;img src="http://bloggingabout.net/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/erwyn/NET-Logo.png" alt="" /&gt; &lt;/p&gt;  &lt;p&gt;It will be used widely starting next week at PDC08 in Los Angeles. Expect lots of great announcements at this event. &lt;/p&gt;  &lt;p&gt;For those attending PDC08, have fun, I am sure you will be amazed! For the not so fortunate who stay at home, the keynote sessions will be streamed live. All other sessions will be available as webcasts within 24 hours.&lt;/p&gt;  &lt;p&gt;Keep an eye on the &lt;a href="http://www.microsoftpdc.com/"&gt;PDC site&lt;/a&gt; next week.&lt;/p&gt;  &lt;p&gt;Details on &lt;a href="http://blogs.msdn.com/msmossyblog/archive/2008/10/25/embrace-the-new-net-logo.aspx"&gt;why we are reinvigorating the .NET brand with a new logo can be found here&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=476146" 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/Work/default.aspx">Work</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/PDC/default.aspx">PDC</category></item><item><title>Microsoft Geek Dinner</title><link>http://bloggingabout.net/blogs/erwyn/archive/2008/07/23/microsoft-geek-dinner.aspx</link><pubDate>Tue, 22 Jul 2008 22:38:11 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:468971</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=468971</wfw:commentRss><comments>http://bloggingabout.net/blogs/erwyn/archive/2008/07/23/microsoft-geek-dinner.aspx#comments</comments><description>&lt;p&gt;It depends on the situation if I self-identify as a geek or not. Today, I thought it would be fine, so I signed up for the &lt;a href="http://www.hanselman.com/blog/July22ndSeattleRedmondBellevueNerdDinner.aspx"&gt;Geek Dinner&lt;/a&gt; organized by &lt;a href="http://www.hanselman.com/blog/"&gt;Scott Hanselman&lt;/a&gt; in &lt;a href="http://maps.live.com/default.aspx?v=2&amp;amp;FORM=LMLTCP&amp;amp;cp=47.619098~-122.130895&amp;amp;style=h&amp;amp;lvl=16&amp;amp;tilt=-90&amp;amp;dir=0&amp;amp;alt=1735.93829580024&amp;amp;cam=47.619098~-122.130895&amp;amp;scene=-1&amp;amp;phx=0&amp;amp;phy=0&amp;amp;phscl=1&amp;amp;encType=1"&gt;Bellevue, WA&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;Quite a lot of people showed up. I went there with my colleague &lt;a href="http://blogs.msdn.com/erwinvandervalk/"&gt;Erwin van der Valk&lt;/a&gt;. He was a Development Consultant, like I currently am, at Microsoft Services in the Netherlands. Erwin now works on the Patterns &amp;amp; Practices team at Microsoft in Redmond.&lt;/p&gt; &lt;p&gt;I took this picture of the entire group:&lt;/p&gt; &lt;p&gt;&lt;a title="Microsoft Geek Dinner" href="http://www.flickr.com/photos/81669747@N00/2694526865/"&gt;&lt;img alt="Microsoft Geek Dinner" src="http://static.flickr.com/3068/2694526865_5ee8217b48.jpg" border="0" /&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;After dinner, a large portion of the group went to the &lt;a href="http://www.rockbottom.com"&gt;Rock Bottom Restaurant and Brewery&lt;/a&gt; in Bellevue to continue the conversation. I had some really interesting discussions, over beer, with guys from several different product teams and a fellow MCS consultant based in Denver, CO. And not even all about Microsoft technology ;)&lt;/p&gt; &lt;p&gt;Too bad, I won&amp;#39;t be able to attend this event in the near future again, unless I just happen to be in the neighborhood.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=468971" 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/Work/default.aspx">Work</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Microsoft/default.aspx">Microsoft</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Geek+Dinner/default.aspx">Geek Dinner</category></item><item><title>SQL Server 2008 RC0 and a new logo</title><link>http://bloggingabout.net/blogs/erwyn/archive/2008/06/09/sql-server-2008-rc0-and-a-new-logo.aspx</link><pubDate>Mon, 09 Jun 2008 20:16:34 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:460092</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=460092</wfw:commentRss><comments>http://bloggingabout.net/blogs/erwyn/archive/2008/06/09/sql-server-2008-rc0-and-a-new-logo.aspx#comments</comments><description>&lt;p&gt;Microsoft SQL Server finally gets a logo!&lt;/p&gt; &lt;p&gt;&lt;a href="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/erwyn/logo_2D00_header_2D00_sql08_2D00_dg_5F00_2.gif"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="75" alt="logo-header-sql08-dg" src="http://bloggingabout.net/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/erwyn/logo_2D00_header_2D00_sql08_2D00_dg_5F00_thumb.gif" width="363" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Check out the revamped homepage of &lt;a href="http://www.microsoft.com/sqlserver/2008/en/us/default.aspx"&gt;SQL Server 2008&lt;/a&gt;. We have just released the &lt;a href="https://msdn.microsoft.com/en-us/subscriptions/securedownloads/details/default.aspx?pm=pid%3a334%7CLk:t"&gt;Release Candidate 0 for download&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;I say &amp;quot;we&amp;quot;, because I work for Microsoft since May 1, 2008 ;) &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=460092" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Work/default.aspx">Work</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/SQL+Server/default.aspx">SQL Server</category></item><item><title>VB code in Windows Presentation Foundation source code</title><link>http://bloggingabout.net/blogs/erwyn/archive/2008/01/17/vb-code-in-windows-presentation-foundation-source-code.aspx</link><pubDate>Thu, 17 Jan 2008 09:32:11 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:457251</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=457251</wfw:commentRss><comments>http://bloggingabout.net/blogs/erwyn/archive/2008/01/17/vb-code-in-windows-presentation-foundation-source-code.aspx#comments</comments><description>&lt;p&gt;You probably already noticed that Microsoft has enabled access to the source code of parts of the .NET Framework 3.5. Here is the &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/01/16/net-framework-library-source-code-now-available.aspx"&gt;announcement of availability&lt;/a&gt; in case you missed it. And there are &lt;a href="http://blogs.msdn.com/sburke/archive/2008/01/16/configuring-visual-studio-to-debug-net-framework-source-code.aspx"&gt;detailed instructions on how to enable this&lt;/a&gt; as well.&lt;/p&gt; &lt;p&gt;This morning I started stepping into the Windows Presentation Foundation. Before I knew it I was deep down into the internals of &lt;a href="http://msdn2.microsoft.com/en-us/library/ms752914.aspx"&gt;dependency properties&lt;/a&gt; and the &lt;a href="http://msdn2.microsoft.com/en-us/library/ms750441.aspx"&gt;Dispatcher&lt;/a&gt; object. The dispatcher has a nice old-fashioned message pump. I stepped into the dispatch of a message call onto a non-UI thread. Even though I already knew this, it is still startling to see that this translates into old-fashioned User32 Windows messages being send.&lt;/p&gt; &lt;p&gt;What really surprised me was to see a bit of VB code in a file that is called ExceptionFilterHelper.vb. According to the comment this file was needed because C#, unlike VB, does not support &lt;a href="http://www.pluralsight.com/blogs/keith/archive/2005/03/31/7149.aspx"&gt;exception filters&lt;/a&gt;. However, the filter always returns true. According to the comment in the source code it is a &amp;quot;dummy stub to keep compiler happy, will not be replaced&amp;quot;.&lt;/p&gt; &lt;p&gt;Something weird is going on here. The debugger shows I am in &lt;font face="Courier New"&gt;WindowsBase.dll!System.Windows.Threading.ExceptionWrapper.TryCatchWhen&lt;/font&gt;. The source code file shows the class &lt;font face="Courier New"&gt;MS.Internal.Threading.ExceptionWrapper.TryCatchWhen&lt;/font&gt;. Reflector can only find the former class. The disassembly of this class shows source code that is very different than what the MS source code server gives me.&lt;/p&gt; &lt;p&gt;This doesn&amp;#39;t make much sense to me. Is the source code for this class deliberately hidden or is there some error in the source code lookup?&lt;/p&gt; &lt;p&gt;Since I haven&amp;#39;t had my lawyer take a look at the license agreement that governs the source code access, I will not add a screen shot of the VB code ;)&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=457251" 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/Work/default.aspx">Work</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/WPF/default.aspx">WPF</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>.NET Framework Libraries go "open" source</title><link>http://bloggingabout.net/blogs/erwyn/archive/2007/10/04/net-framework-libraries-go-open-source.aspx</link><pubDate>Thu, 04 Oct 2007 04:54:23 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:384973</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=384973</wfw:commentRss><comments>http://bloggingabout.net/blogs/erwyn/archive/2007/10/04/net-framework-libraries-go-open-source.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx"&gt;Scott Guthrie&lt;/a&gt; did a major announcement on his blog yesterday: Microsoft will be releasing the source code for most .NET Framework libraries with the release of Visual Studio 2008. There will even be integrated support for debugging into framework classes and on-demand dynamic downloading of source files and debug symbols in Visual Studio 2008.&lt;/p&gt; &lt;p&gt;This is great news for .NET developers and a major step forward for Microsoft in my opinion. In and by itself it is enough reason to warrant an upgrade to Visual Studio 2008. In fact, I can think of no reason to keep using Visual Studio 2005 after the release of VS2008.&lt;/p&gt; &lt;p&gt;The source will be released under the &lt;a href="http://www.microsoft.com/resources/sharedsource/licensingbasics/referencelicense.mspx"&gt;Microsoft Reference License&lt;/a&gt; which basically means you can view and debug but not change or reuse the source code.&lt;/p&gt; &lt;p&gt;If you want a more liberal license you can look into &lt;a href="http://msdn.microsoft.com/net/sscli/"&gt;Rotor aka the Shared Source CLI&lt;/a&gt;. Rotor was Microsoft&amp;#39;s first effort for open sourcing a .NET CLI implementation. But Microsoft does not guarantee that Rotor has exactly the same codebase as the real .NET Framework.&lt;/p&gt; &lt;p&gt;Check out the &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx"&gt;full details and screenshots of VS2008 integration on Scott&amp;#39;s blog&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=384973" 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/Work/default.aspx">Work</category></item><item><title>Solved Problem with Missing XSD Metadata for WCF Service</title><link>http://bloggingabout.net/blogs/erwyn/archive/2007/09/19/solved-problem-with-missing-xsd-metadata-for-wcf-service.aspx</link><pubDate>Wed, 19 Sep 2007 14:32:57 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:366884</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=366884</wfw:commentRss><comments>http://bloggingabout.net/blogs/erwyn/archive/2007/09/19/solved-problem-with-missing-xsd-metadata-for-wcf-service.aspx#comments</comments><description>&lt;p&gt;Today I encountered a problem with accessing the metadata for a WCF service that was deployed on a Windows Server 2003 machine.&lt;/p&gt; &lt;p&gt;The WSDL part worked just fine for the metadata exchange endpoint (&lt;em&gt;url&lt;/em&gt;?wsdl, &lt;em&gt;url&lt;/em&gt;?wsdl=wsdl0, etc.). These WSDL files refer to XSD files for the message types. Requesting these files (&lt;em&gt;url&lt;/em&gt;?xsd=xsd0, &lt;em&gt;url&lt;/em&gt;?xsd=xsd1, etc.) resulted in an empty response from the webserver. Checking the IIS logs indicated a HTTP 200 OK response with 0 bytes transferred. A very weird problem. Checking the config files did not lead anywhere.&lt;/p&gt; &lt;p&gt;Eventually I found a hint in a reply by James Zhang in &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1753179&amp;amp;SiteID=1"&gt;this MSDN Forum post&lt;/a&gt;. The identity that is used for the application pool that hosts the WCF service must have the correct NTFS permissions on the &lt;font face="Courier New"&gt;%WINDIR%\temp&lt;/font&gt; folder. The identity that I used is a domain account. After setting the right NTFS permissions, the problem disappeared. &lt;/p&gt; &lt;p&gt;The funny thing was that this particular answer wasn&amp;#39;t the answer for the original question in this forum post.&lt;/p&gt; &lt;p&gt;James Zhang does not indicate what type of permissions are needed, so I had to experiment a little.&lt;/p&gt; &lt;p&gt;First I added the account to the local &lt;em&gt;Users&lt;/em&gt; group. This gives it special access permissions: &lt;em&gt;Traverse folder/execute file&lt;/em&gt;, &lt;em&gt;create files/write data&lt;/em&gt;, &lt;em&gt;create folders/append data&lt;/em&gt;&amp;nbsp; on &lt;em&gt;this folder and subfolders&lt;/em&gt;. This is not enough. Then I realized, the domain account is already implicitly a member of this group because the &lt;em&gt;Users&lt;/em&gt; group contains the &lt;em&gt;NT Authority\Authenticated Users&lt;/em&gt; group. Next, I duplicated the extra rights that the &lt;em&gt;NETWORK SERVICE&lt;/em&gt; account had for the domain account. These are &lt;em&gt;list folder/read data&lt;/em&gt; and &lt;em&gt;delete&lt;/em&gt; permissions for &lt;em&gt;this folder, subfolders and files&lt;/em&gt;. This was enough. But it doesn&amp;#39;t seem very secure. Now the service account can access temporary files created by other accounts.&lt;/p&gt; &lt;p&gt;So I experimented a bit more. I tuned back the NTFS permissions for the service account on &lt;font face="Courier New"&gt;%WINDIR%\temp&lt;/font&gt; to &lt;em&gt;list folder/read data&lt;/em&gt; on &lt;em&gt;this folder only&lt;/em&gt;. This is just enough. This allows the account to see which files are in the temp folder, but it doesn&amp;#39;t allow it to read the data in files that are owned by other accounts.&lt;/p&gt; &lt;p&gt;It is very unfortunate that WCF didn&amp;#39;t give any clue about why it couldn&amp;#39;t generate metadata in this case. It is also unfortunate that it needs just slightly more permissions that a standard user on the folder for temporary files.&lt;/p&gt; &lt;p&gt;Note that if you run your WCF service in an IIS application pool under the default &lt;em&gt;NETWORK SERVICE&lt;/em&gt; account you won&amp;#39;t run into this problem, because it has more than enough permissions.&lt;/p&gt; &lt;p&gt;PS: Best practices indicate you shouldn&amp;#39;t deploy your services with metadata enabled. We will turn this off eventually. However, of course it should work if you do want to enable this.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=366884" 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/Work/default.aspx">Work</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/WCF/default.aspx">WCF</category></item><item><title>Custom animation using timers in WPF and Silverlight 1.1</title><link>http://bloggingabout.net/blogs/erwyn/archive/2007/05/04/custom-animation-using-timers-in-wpf-and-silverlight-1-1.aspx</link><pubDate>Fri, 04 May 2007 04:01:34 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:188560</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=188560</wfw:commentRss><comments>http://bloggingabout.net/blogs/erwyn/archive/2007/05/04/custom-animation-using-timers-in-wpf-and-silverlight-1-1.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://wpf.netfx3.com/"&gt;WPF&lt;/a&gt; comes with great support for animation using XAML without needing to code this in for example C#. With &lt;a href="http://silverlight.net/"&gt;Silverlight&lt;/a&gt; (fka "WPF/E") you can also do animations from XAML.&lt;/p&gt; &lt;p&gt;If you want to perform custom animations in code&amp;nbsp;that you can't do using XAML, you need timers. In the full blown WPF you have several options, e.g., System.Threading.Timer, System.Timers.Timer and System.Windows.Forms.Timer. &lt;/p&gt; &lt;p&gt;You normally provide a callback that gets called when the timer elapses from a background thread. Properties on WPF objects can only be set from the foreground thread, so you have to queue a call on the UI thread to perform the actual&amp;nbsp;animation. You can do that by calling the Invoke or BeginInvoke method on the &lt;a href="http://msdn2.microsoft.com/en-us/library/ms741870.aspx"&gt;System.Windows.Threading.Dispatcher&lt;/a&gt; class. You can access the correct Dispatcher instance to use through the Dispatcher property on the UI element (*).&lt;/p&gt; &lt;p&gt;Another option in WPF is to use the Rendering event of a &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.media.compositiontarget.aspx"&gt;CompositionTarget&lt;/a&gt; instance. In that case you get called when WPF is ready to render a frame. The frame rate depends on CPU speed, GPU performance, graphics complexity and other factors, so it fluctuates. This means that&amp;nbsp;the interval after which you get called also fluctuates. However this is great for some scenarios.&lt;/p&gt; &lt;p&gt;In the current &lt;a href="http://silverlight.net/GetStarted/"&gt;Silverlight 1.1 alpha&lt;/a&gt; your options are more limited. The &lt;a href="http://bloggingabout.net/blogs/erwyn/archive/2007/05/01/there-is-a-new-clr-in-town.aspx"&gt;CoreCLR&lt;/a&gt; libraries do have a System.Threading.Timer, but there is&amp;nbsp;no Dispatcher class to delegate work to the UI thread. So it is useless for doing&amp;nbsp;custom animation. In the source of the &lt;a href="http://www.aisto.com/roeder/Silverlight/"&gt;Monotone sample by Lutz Roeder&lt;/a&gt; I found there is an HtmlTimer class in Silverlight 1.1. This class is undocumented and marked obsolete. Visual Studio shows a warning after compilation:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;'System.Windows.Browser.HtmlTimer' is obsolete: 'This is not a high resolution timer and is not suitable for short-interval animations. A new timer type will be available in a future release.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Lutz shows how to use an HtmlTimer in his sample. HtmlTimer has&amp;nbsp;a Tick event. Any event handler that you wire-up to that event gets called from the UI thread. So that solves the problem for the time being.&lt;/p&gt; &lt;p&gt;When I tried to Google for more info on HtmlTimer, all I found was &lt;a href="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2007/05/03/9295.aspx"&gt;this blog post by Mike Taulty&lt;/a&gt;&amp;nbsp;which mentions this class in passing.&lt;/p&gt; &lt;p&gt;(*) In fact any .NET class that derives from &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.threading.dispatcherobject.aspx"&gt;DispatcherObject&lt;/a&gt; has a Dispatcher property.&lt;/p&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=188560" 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/Work/default.aspx">Work</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Orcas/default.aspx">Orcas</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>Expression Web and Blend in MSDN Subscription</title><link>http://bloggingabout.net/blogs/erwyn/archive/2007/04/03/expression-web-and-blend-in-msdn-subscription.aspx</link><pubDate>Tue, 03 Apr 2007 11:26:52 GMT</pubDate><guid isPermaLink="false">813b6dfd-644e-4573-a816-eebab56ba0d0:152918</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=152918</wfw:commentRss><comments>http://bloggingabout.net/blogs/erwyn/archive/2007/04/03/expression-web-and-blend-in-msdn-subscription.aspx#comments</comments><description>&lt;p&gt;Microsoft has some great news today: the new Expression Web (already RTM) and Expression Blend (RTM later in Q2 2007) tools will be included in the MSDN Premium Subscription. Soma announced &lt;a href="http://blogs.msdn.com/somasegar/archive/2007/04/03/listening-to-your-feedback-expression-and-msdn.aspx"&gt;this on his blog&lt;/a&gt;. This is the result from strong feedback from the developer community.&lt;/p&gt; &lt;p&gt;Although I am not a graphical designer, I have to come to appreciate both tools. &lt;/p&gt; &lt;p&gt;Expression Blend goes beyond what you can accomplish with "Cider". "Cider" is the codename for the WPF design surface that will be included in Visual Studio "Orcas". I used Blend to design the UI for my &lt;a href="http://www.codeplex.com/FlickrMetadataSynchr"&gt;Flickr Metadata Synchr&lt;/a&gt;. And we have used it at LogicaCMG for a WPF showcase application.&lt;/p&gt; &lt;p&gt;Expression Web has a much richer HTML/CSS editor than the one in Visual Studio 2005. VS "Orcas" will come with a &lt;a href="http://bloggingabout.net/blogs/erwyn/archive/2007/01/22/greatly-improved-web-designer-in-visual-studio-quot-orcas-quot.aspx"&gt;new HTML/CSS editor&lt;/a&gt; based on the same codebase. This will lessen the need for a separate tool for web developers, but "Orcas" will not RTM before the end of this year. I am still working on getting a more graphically inclined colleague to give up on Dreamweaver and switch to Expression Web ;-)&lt;/p&gt;&lt;img src="http://bloggingabout.net/aggbug.aspx?PostID=152918" width="1" height="1"&gt;</description><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Work/default.aspx">Work</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/Orcas/default.aspx">Orcas</category><category domain="http://bloggingabout.net/blogs/erwyn/archive/tags/WPF/default.aspx">WPF</category></item></channel></rss>