<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Kurt Claeys</title>
        <link>http://geekswithblogs.net/claeyskurt/Default.aspx</link>
        <description>DEVITECT.NET</description>
        <language>nl-BE</language>
        <copyright>Kurt Claeys</copyright>
        <managingEditor>kurt@casey.be</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <image>
            <title>Kurt Claeys</title>
            <url>http://geekswithblogs.net/images/RSS2Image.gif</url>
            <link>http://geekswithblogs.net/claeyskurt/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <item>
            <title>MCT, MCTS 3.5 Certification and TLG at TechEd Orlando.</title>
            <link>http://geekswithblogs.net/claeyskurt/archive/2008/05/14/122134.aspx</link>
            <description>&lt;p&gt;Today the MCT 2008 Welcome Pack arrived. I'll be certified trainer again, for the 4th year now. Last 12 months i've been busy with WCF and WF and I succeeded in both .NET 3.5 exams on these topics (&lt;a href="http://www.microsoft.com/learning/exams/70-503.mspx" target="_blank"&gt;TS: Microsoft .NET Framework 3.5 – Windows Communication Foundation&lt;/a&gt; and &lt;a href="http://www.microsoft.com/learning/exams/70-504.mspx" target="_blank"&gt;TS: Microsoft .NET Framework 3.5 – Windows Workflow Foundation&lt;/a&gt;). Looking forward to teach the new MOC's.&lt;/p&gt; &lt;p&gt;At the end of the month I'm off to &lt;a href="http://www.microsoft.com/events/teched2008/developer/default.mspx" target="_blank"&gt;TechEd 08 Orlando&lt;/a&gt; as Technical Learning Guide. Technical Learning Guide is a volunteer role as MCT to assist at TechEd. I'll be helping in the Hands-on-Labs. Beside this I will be presenting there the Instructor Led Lab "Workflow Services using the Windows Communication Foundation" (yeah, a training with both names of these great technologies in the title, that's my game) at TechEd. Hope to see someone from Belgium there.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=122134"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=122134" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/claeyskurt/aggbug/122134.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Kurt Claeys</dc:creator>
            <guid>http://geekswithblogs.net/claeyskurt/archive/2008/05/14/122134.aspx</guid>
            <pubDate>Wed, 14 May 2008 18:04:08 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/claeyskurt/comments/122134.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/claeyskurt/archive/2008/05/14/122134.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/claeyskurt/comments/commentRss/122134.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/claeyskurt/services/trackbacks/122134.aspx</trackback:ping>
        </item>
        <item>
            <title>WCF : Where to find SvcTraceViewer.exe ?</title>
            <link>http://geekswithblogs.net/claeyskurt/archive/2008/04/23/121540.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial" size="2"&gt;A great tool every WCF developer could benefit from is &lt;strong&gt;SvcTraceViewer.exe&lt;/strong&gt;. More info &lt;a target="_blank" href="http://msdn2.microsoft.com/en-us/library/ms732023.aspx"&gt;here&lt;/a&gt;. This tool is an UI to interprete the logfiles WCF can produce and show them in a nice graphical way. It even supports correlation of the activities in the client logfiles with the activities in the service logfile. So you can see when the messages are transported from client to server.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial" size="2"&gt;But this tool is kind of hidden gem. It doesn't come with Visual Studio and not with the Visual Studio extensions for WCF. You can not download it anywhere as a standalone executable. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;No, the only way (as far that I know of) to have it, is to install the .NET SDK. The latest version of this SDK is 6.1 and is called &lt;strong&gt;'Windows SDK for Windows Server 2008 and .NET Framework 3.5'&lt;/strong&gt;. &lt;br /&gt;
&lt;br /&gt;
This is a huge install. First you have to download a 1,29 GB .ISO on &lt;/font&gt;&lt;a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=e6e1c3df-a74f-4207-8586-711ebe331cdc&amp;amp;DisplayLang=en"&gt;&lt;font size="2"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=e6e1c3df-a74f-4207-8586-711ebe331cdc&amp;amp;DisplayLang=en&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;. After burning it to DVD or mounting it with a ISO mounting tool (like &lt;/font&gt;&lt;a target="_blank" href="http://www.slysoft.com/en/virtual-clonedrive.html"&gt;&lt;font size="2"&gt;http://www.slysoft.com/en/virtual-clonedrive.html&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;) you can start the setup. Uncheck all the unneeded parts in the install options. To have SvcTraceViewer.exe you only need to select Developer Tools \ .NET Development Tools.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;font size="2"&gt;This setup will create the SDK directory which is &lt;em&gt;&lt;u&gt;C:\Program Files\Microsoft SDKs\Windows\v6.1\Bin&lt;/u&gt;&lt;/em&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial" size="2"&gt;SvcTraceViewer.exe is in this directory.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial" size="2"&gt;Here is some configuration code to setup you WCF host (and client) to produce the logfiles. I marked the place to configure the path to the logfiles in &lt;font color="#ff0000"&gt;red&lt;/font&gt;.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;font color="#0000ff"&gt;&lt;font face="Arial" size="1"&gt;&amp;lt;system.diagnostics&amp;gt;&lt;br /&gt;
  &amp;lt;sources&amp;gt;&lt;br /&gt;
    &amp;lt;source name="System.ServiceModel" switchValue="Verbose,ActivityTracing"&lt;br /&gt;
      propagateActivity="true"&amp;gt;&lt;br /&gt;
      &amp;lt;listeners&amp;gt;&lt;br /&gt;
        &amp;lt;add type="System.Diagnostics.DefaultTraceListener" name="Default"&amp;gt;&lt;br /&gt;
          &amp;lt;filter type="" /&amp;gt;&lt;br /&gt;
        &amp;lt;/add&amp;gt;&lt;br /&gt;
        &amp;lt;add name="ServiceModelTraceListener"&amp;gt;&lt;br /&gt;
          &amp;lt;filter type="" /&amp;gt;&lt;br /&gt;
        &amp;lt;/add&amp;gt;&lt;br /&gt;
      &amp;lt;/listeners&amp;gt;&lt;br /&gt;
    &amp;lt;/source&amp;gt;&lt;br /&gt;
    &amp;lt;source name="System.ServiceModel.MessageLogging" switchValue="Verbose,ActivityTracing"&amp;gt;&lt;br /&gt;
      &amp;lt;listeners&amp;gt;&lt;br /&gt;
        &amp;lt;add type="System.Diagnostics.DefaultTraceListener" name="Default"&amp;gt;&lt;br /&gt;
          &amp;lt;filter type="" /&amp;gt;&lt;br /&gt;
        &amp;lt;/add&amp;gt;&lt;br /&gt;
        &amp;lt;add name="ServiceModelMessageLoggingListener"&amp;gt;&lt;br /&gt;
          &amp;lt;filter type="" /&amp;gt;&lt;br /&gt;
        &amp;lt;/add&amp;gt;&lt;br /&gt;
      &amp;lt;/listeners&amp;gt;&lt;br /&gt;
    &amp;lt;/source&amp;gt;&lt;br /&gt;
  &amp;lt;/sources&amp;gt;&lt;br /&gt;
  &amp;lt;sharedListeners&amp;gt;&lt;br /&gt;
    &amp;lt;add initializeData="&lt;strong&gt;&lt;font color="#ff0000"&gt;C:\Temp\Logs\App_tracelog.svclog&lt;/font&gt;&lt;/strong&gt;"&lt;br /&gt;
      type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"&lt;br /&gt;
      name="ServiceModelTraceListener" traceOutputOptions="Timestamp"&amp;gt;&lt;br /&gt;
      &amp;lt;filter type="" /&amp;gt;&lt;br /&gt;
    &amp;lt;/add&amp;gt;&lt;br /&gt;
    &amp;lt;add initializeData="&lt;strong&gt;&lt;font color="#ff0000"&gt;C:\Temp\Logs\App_messages.svclog&lt;/font&gt;&lt;/strong&gt;"&lt;br /&gt;
      type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"&lt;br /&gt;
      name="ServiceModelMessageLoggingListener" traceOutputOptions="Timestamp"&amp;gt;&lt;br /&gt;
      &amp;lt;filter type="" /&amp;gt;&lt;br /&gt;
    &amp;lt;/add&amp;gt;&lt;br /&gt;
  &amp;lt;/sharedListeners&amp;gt;&lt;br /&gt;
  &amp;lt;trace autoflush="true" /&amp;gt;&lt;br /&gt;
&amp;lt;/system.diagnostics&amp;gt;&lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121540"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121540" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/claeyskurt/aggbug/121540.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Kurt Claeys</dc:creator>
            <guid>http://geekswithblogs.net/claeyskurt/archive/2008/04/23/121540.aspx</guid>
            <pubDate>Wed, 23 Apr 2008 14:15:39 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/claeyskurt/comments/121540.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/claeyskurt/archive/2008/04/23/121540.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/claeyskurt/comments/commentRss/121540.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/claeyskurt/services/trackbacks/121540.aspx</trackback:ping>
        </item>
        <item>
            <title>Links of the month (march/april 08)</title>
            <link>http://geekswithblogs.net/claeyskurt/archive/2008/04/19/121412.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial" size="2"&gt;A litle late, busy month, been on holiday to Lissabon with wife and kids and attended the Architect's Master Class (by Juval Lowy). 2 great experiences !&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial" size="2"&gt;The links that hit my eye the last month are :&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial" size="2"&gt;About ASP.NET MVC, great screencasts by Scott Hanselman&lt;br /&gt;
&lt;/font&gt;&lt;font face="Arial"&gt;&lt;a href="http://www.hanselman.com/blog/ASPNET35ExtensionsPlusMVCHowToScreencast.aspx"&gt;&lt;font size="2"&gt;http://www.hanselman.com/blog/ASPNET35ExtensionsPlusMVCHowToScreencast.aspx&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/font&gt;&lt;font face="Arial"&gt;&lt;a href="http://www.asp.net/learn/3.5-extensions-videos/default.aspx#mvc"&gt;&lt;font size="2"&gt;http://www.asp.net/learn/3.5-extensions-videos/default.aspx#mvc&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/font&gt;&lt;font face="Arial"&gt;&lt;br /&gt;
&lt;font size="2"&gt;About Workflow Services in .NET 3.5 on Channel9&lt;br /&gt;
&lt;/font&gt;&lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=398586"&gt;&lt;font size="2"&gt;http://channel9.msdn.com/Showpost.aspx?postid=398586&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=362199"&gt;&lt;font size="2"&gt;http://channel9.msdn.com/Showpost.aspx?postid=362199&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;
&lt;/font&gt;&lt;font face="Arial"&gt;&lt;font face="Arial" size="2"&gt;&lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=338720"&gt;http://channel9.msdn.com/ShowPost.aspx?postid=338720&lt;/a&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;Or by Mike Taulty (&lt;font face="Arial"&gt;Building WCF Services Using Workflow Foundation&lt;/font&gt;)&lt;br /&gt;
&lt;/font&gt;&lt;font face="Arial"&gt;&lt;a href="http://www.microsoft.com/uk/msdn/screencasts/screencast/285/WF-V35-Building-WCF-Services-Using-Workflow-Foundation.aspx"&gt;http://www.microsoft.com/uk/msdn/screencasts/screencast/285/WF-V35-Building-WCF-Services-Using-Workflow-Foundation.aspx&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;More on Workflow Services : Building Workflow Services (WF+WCF) with Visual Studio 2008 by Marc Schweigert&lt;br /&gt;
&lt;/font&gt;&lt;font face="Arial"&gt;&lt;a href="http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=en-US&amp;amp;EventID=1032366133&amp;amp;CountryCode=US"&gt;http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?culture=en-US&amp;amp;EventID=1032366133&amp;amp;CountryCode=US&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;
&lt;font face="Arial"&gt;&lt;font size="2"&gt;
&lt;p&gt;Free books on WCF&lt;br /&gt;
&lt;font face="Arial" color="#000000" size="2"&gt;&lt;a target="_blank" href="https://webmail.ordina.be/exchweb/bin/redir.asp?URL=http://codeidol.com/csharp/wcf/"&gt;http://codeidol.com/csharp/wcf/&lt;/a&gt;&lt;br /&gt;
&lt;/font&gt;&lt;font face="Arial" color="#000000" size="2"&gt;&lt;a target="_blank" href="https://webmail.ordina.be/exchweb/bin/redir.asp?URL=http://books.google.be/books?id=-AUyj6S7etwC"&gt;http://books.google.be/books?id=-AUyj6S7etwC&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;WCF Community Site&lt;br /&gt;
&lt;font face="Arial"&gt;&lt;a href="http://wcfcommunity.com"&gt;http://wcfcommunity.com&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;&lt;font face="Arial"&gt;Miscellaneous&lt;/font&gt; links (from my favorites collected during research and course preparation work), worth to have a look at. &lt;br /&gt;
This lists somehow reflects what I have been doing past months.&lt;br /&gt;
&lt;/font&gt;&lt;a href="http://www.infoq.com/presentations/ddd-dsl-evans"&gt;&lt;font size="2"&gt;http://www.infoq.com/presentations/ddd-dsl-evans&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.objectmentor.com/resources/articles/ocp.pdf"&gt;&lt;font size="2"&gt;http://www.objectmentor.com/resources/articles/ocp.pdf&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.soapatterns.org/section53.asp"&gt;&lt;font size="2"&gt;http://www.soapatterns.org/section53.asp&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.langnetsymposium.com/talks/1-01%20-%20CSharp3%20-%20Anders%20Hejlsberg.html"&gt;&lt;font size="2"&gt;http://www.langnetsymposium.com/talks/1-01%20-%20CSharp3%20-%20Anders%20Hejlsberg.html&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.west-wind.com/weblog/posts/246222.aspx"&gt;&lt;font size="2"&gt;http://www.west-wind.com/weblog/posts/246222.aspx&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://forums.microsoft.com/MSDN/showpost.aspx?postid=1935713&amp;amp;siteid=1"&gt;&lt;font size="2"&gt;http://forums.microsoft.com/MSDN/showpost.aspx?postid=1935713&amp;amp;siteid=1&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://msdn2.microsoft.com/en-us/magazine/cc163647.aspx"&gt;&lt;font size="2"&gt;http://msdn2.microsoft.com/en-us/magazine/cc163647.aspx&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://www.designpatternsfor.net"&gt;&lt;font size="2"&gt;http://www.designpatternsfor.net&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;font size="2"&gt;A very good blog to follow up close : &lt;br /&gt;
&lt;/font&gt;&lt;font size="2"&gt;&lt;a href="http://www.clemensreijnen.nl"&gt;http://www.clemensreijnen.nl&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font size="2"&gt;A list of great screencasts at :&lt;br /&gt;
&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Arial"&gt;&lt;a href="http://devkeydet.spaces.live.com/lists/cns!1F72DA7294089597!583/"&gt;http://devkeydet.spaces.live.com/lists/cns!1F72DA7294089597!583/&lt;/a&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;/font&gt;&lt;/font&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121412"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121412" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/claeyskurt/aggbug/121412.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Kurt Claeys</dc:creator>
            <guid>http://geekswithblogs.net/claeyskurt/archive/2008/04/19/121412.aspx</guid>
            <pubDate>Sun, 20 Apr 2008 11:13:05 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/claeyskurt/comments/121412.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/claeyskurt/archive/2008/04/19/121412.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/claeyskurt/comments/commentRss/121412.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/claeyskurt/services/trackbacks/121412.aspx</trackback:ping>
        </item>
        <item>
            <title>Slides for my IT Club for developers session on Data Access in .NET 3.5 with LINQ &amp;amp; ADO Entity Framework</title>
            <link>http://geekswithblogs.net/claeyskurt/archive/2008/02/27/120027.aspx</link>
            <description>&lt;p&gt;26 developers from 'West-Vlaanderen' interested in LINQ and the Entity Framework attended (and liked) my IT Club session yesterday. This session will be repeated for Ordina and some local .NET usergroups. I this session i give an introduction to LINQ and the needed C# languages enhancements, focus on OR-mapping and contains demos on Linq to SQL and the Entity Framework. &lt;br /&gt;&lt;br /&gt;Interested in attending, please mail me or reply to this post.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.devitect.net/itclub/SyntraWest%20ITClub%20Seminar%20Kurt%20CLAEYS%20_%20Data%20Access%20in%20.NET%203.5%20with%20LINQ%20&amp;amp;%20ADO%20Entity%20Framework.pdf" target="_blank"&gt;Or you can download the slides here.&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120027"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=120027" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/claeyskurt/aggbug/120027.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Kurt Claeys</dc:creator>
            <guid>http://geekswithblogs.net/claeyskurt/archive/2008/02/27/120027.aspx</guid>
            <pubDate>Wed, 27 Feb 2008 21:48:23 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/claeyskurt/comments/120027.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/claeyskurt/archive/2008/02/27/120027.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/claeyskurt/comments/commentRss/120027.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/claeyskurt/services/trackbacks/120027.aspx</trackback:ping>
        </item>
        <item>
            <title>Links of the Month (Feb08)</title>
            <link>http://geekswithblogs.net/claeyskurt/archive/2008/02/25/119960.aspx</link>
            <description>&lt;p&gt;I'll try to post every month some interesting links (to blogsposts, articles, white books and other content) I noticed on the net in the last month during professional daily work or from personal interests (what's the difference anyway). Not always brand new resources but the ones I found of most value and quality. Most links will be in the area of OO design patterns, software architecture, EAI and agile development and can be seen as needed reading material (if time permits) for a role as solution architect. Some of them are quick reads/views, others are huge and in-depth material.&lt;/p&gt; &lt;p&gt;This month :&lt;/p&gt; &lt;p&gt;&lt;a href="http://download.microsoft.com/download/9/b/f/9bf6ec5f-01ff-4de9-84c6-3e87f0a2fa28/dnm19_65-69.pdf" target="_blank"&gt;Implementing Value Objects (by Sander Hoogendoorn) in .NET Magazine #19 (dutch article)&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.parleys.com/display/PARLEYS/Scrum+%28Part+1%29" target="_blank"&gt;Scrum - Started without Getting Burned Part 1 (by Giovanni Asproni, webcast on Parleys.com)&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.parleys.com/display/PARLEYS/Scrum+%28Part+2%29" target="_blank"&gt;Scrum - Started without Getting Burned Part 2 (by Giovanni Asproni, webcast on Parleys.com)&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.infoq.com/minibooks/domain-driven-design-quickly" target="_blank"&gt;Domain Driven Design MiniBook (InfoQ)&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.martinfowler.com/articles/injection.html" target="_blank"&gt;Inversion of Control Containers and the Dependency Injection pattern (Martin Fowler)&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://community.bartdesmet.net/blogs/bart/default.aspx" target="_blank"&gt;The Blog of Bart De Smet.&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://dotnet.org.za/cjlotz/archive/2008/01/15/continuous-integration-from-theory-to-practice-2nd-edition.aspx" target="_blank"&gt;Continuous Integration: From Theory to Practice 2nd Edition (Carel Lotz)&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://ctrl-shift-b.blogspot.com/2007/08/interactive-application-architecture.html" target="_blank"&gt;Interactive Application Architecture Patterns (Derek Greer, Ctrl-Shift-B)&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=5251f103-329d-4f8d-95b5-64f99f2f6dfc&amp;amp;displaylang=en" target="_blank"&gt;Microsoft BizTalk Server Operations Guide (Microsoft Download Center)&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.infoq.com/articles/santos-software-factories" target="_blank"&gt;Interview Jezz Santos About Software Factories&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.pnpguidance.net/Post/UnityDependencyInjectionIoCScreencast.aspx" target="_blank"&gt;Patterns and Practices Guidance Unity Dependency Injection IoC Screencast (David Hayden)&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;a href="http://msdn2.microsoft.com/en-us/vstudio/cc296539.aspx" target="_blank"&gt;How Do I: Create and Customize My Domain Specific Language? (MSDN)&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://msdn2.microsoft.com/en-us/vs2005/cc197965.aspx" target="_blank"&gt;How Do I: Use Advanced Customization (DSL)? (MSDN)&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.zapthink.com/report.html?id=WP-0166" target="_blank"&gt;Simplifying SOA (Zapthink)&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/belux/msdn/nl/chopsticks/default.aspx?id=307" target="_blank"&gt;MSDN Belgium Chopsticks&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.hanselman.com/blog/content/binary/NDepend%20metrics%20placemats%201.1.pdf" target="_blank"&gt;NDepend Metrics poster (pdf, Corillian Corporation)&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://msdn2.microsoft.com/en-us/arcjournal/bb906063.aspx" target="_blank"&gt;Project Astoria (Pablo Castro in The Architecture Journal)&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Happy reading/viewing ....&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=119960"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=119960" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/claeyskurt/aggbug/119960.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Kurt Claeys</dc:creator>
            <guid>http://geekswithblogs.net/claeyskurt/archive/2008/02/25/119960.aspx</guid>
            <pubDate>Mon, 25 Feb 2008 21:16:38 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/claeyskurt/comments/119960.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/claeyskurt/archive/2008/02/25/119960.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/claeyskurt/comments/commentRss/119960.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/claeyskurt/services/trackbacks/119960.aspx</trackback:ping>
        </item>
        <item>
            <title>Unity Application Block Feb 2008 CTP</title>
            <link>http://geekswithblogs.net/claeyskurt/archive/2008/02/18/119739.aspx</link>
            <description>&lt;p&gt;The Unity Application Block Feb 2008 CTP (from now on called Unity) is released on &lt;a target="_blank" href="http://www.codeplex.com/unity"&gt;www.codeplex.com/unity&lt;/a&gt;. It's a lightweight dependency injection container with support for constructor, property and method call injection. &lt;/p&gt;
&lt;p&gt;To get people started with this, I created a small example. Actually I ported my &lt;a target="_blank" href="http://geekswithblogs.net/claeyskurt/archive/2008/02/14/119583.aspx"&gt;Dependency Injection with Spring.NET example&lt;/a&gt; from some posts ago to this release of Unity. &lt;/p&gt;
&lt;p&gt;This sample shows how a class can get an reference to another class through its constructor.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.devitect.net/blogdata/testunity.zip"&gt;Hit this link to download this example (VS2008!)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Let assume that ClassA needs a reference to ClassB. But ... not always to ClassB. Sometimes, for testing purposes, you would like to have another Class (called ClassB2 in this example) being giving to the constructor. Yeah, once again .... the loose coupling pattern, very usefull from the point-of-view of unittests.&lt;/p&gt;
&lt;p&gt;So ClassA Looks like this : &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:214fab38-e3e6-4251-8f70-cc7cb1c2548b" contenteditable="false" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;
&lt;pre style="OVERFLOW: auto; BACKGROUND-COLOR: white"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ClassA
{
    IClassB _refToB;

    &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ClassA(IClassB b)
    {
        Console.WriteLine(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Class A constructed!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);
        _refToB &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; b;
    }
    &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; Test()
    {
        _refToB.DoSomething();
    }
}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Of course ClassB2 would need to implement the same interface as ClassB does otherwise the compiler is not satisfied. Note that the contructor for ClassA gets a reference to a class which implements this interface called IClassB&lt;/p&gt;
&lt;p&gt;IClassB (the Interface for ClassB and ClassB2) looks like this :&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:b02b9ba2-7064-4171-8901-c557bc992d5c" contenteditable="false" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;
&lt;pre style="OVERFLOW: auto; BACKGROUND-COLOR: white"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;interface&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; IClassB
{
    &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; DoSomething();
}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
&lt;p&gt;Concrete implementation of ClassB :&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:503b19fe-3059-4fa7-9ea3-0e3665010ef8" contenteditable="false" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;
&lt;pre style="OVERFLOW: auto; BACKGROUND-COLOR: white"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ClassB : IClassB
{
    &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ClassB()
    {
        Console.WriteLine(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Class B constructed!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);
    }
    &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; DoSomething()
    {
        Console.WriteLine(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Class B did something&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);
    }
}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Concrete implementation of ClassB2 :&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:7c282176-2549-42ee-8b91-edde899103a1" contenteditable="false" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;
&lt;pre style="OVERFLOW: auto; BACKGROUND-COLOR: white"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ClassB2 : IClassB
{

    &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ClassB2()
    {
        Console.WriteLine(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Class B2 constructed!&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);
    }

    &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; DoSomething()
    {
        Console.WriteLine(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;Class B2 did something&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);
    }

}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Ok, these are normal classes, nothing special. If we want to use them, we instantiate them with the &lt;em&gt;new &lt;/em&gt;operator. First instantiate ClassB (or ClassB2) than instantiate ClassA giving it the freshly created ClassB (or ClassB2) in the constructor. Not ! This is too tighly coupled !&lt;/p&gt;
&lt;p&gt;With a depency injector container (like Unity) we do not explicitly program the instantiations with the &lt;em&gt;new &lt;/em&gt;operator. The container will do this for us. Al we have to do is : ask the container which object we want. If we ask for ClassA, the container will see that the constructor must have an instantiation of a class that implements IClassB and such a class will be instantiated for us and been given to this constructor. &lt;br /&gt;
&lt;br /&gt;
Of course the container must know what concrete class (ClassB or ClassB2) it must instantiate. This is done by first mapping the Interface type to the concrete type, either by code or by configuration.&lt;/p&gt;
&lt;p&gt;&lt;u&gt;By Code&lt;/u&gt; :&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:4bc3ed0f-9492-4474-a605-f734170597ff" contenteditable="false" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 1023px; PADDING-TOP: 0px"&gt;
&lt;pre style="OVERFLOW: auto; BACKGROUND-COLOR: white"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="COLOR: #000000"&gt;IUnityContainer container &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; UnityContainer();
container.Register(&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;typeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(IClassB), &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;typeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(ClassB2));
&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
&lt;p&gt;This code results in the creating of the container. Thereafter the IClassB interface type is mapped to the concrete ClassB2. From now on, if we want the have ClassA instantiated we just ask the container to get a reference by specifying the type in the generic Get method of the container. &lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:9993c57f-4d41-46b3-bb50-fcbcff7183a0" contenteditable="false" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;
&lt;pre style="OVERFLOW: auto; BACKGROUND-COLOR: white"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="COLOR: #000000"&gt;ClassA a1;
a1 &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; container.Get&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;ClassA&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;();
a1.Test();&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
&lt;p&gt;So this method will lookup (through reflection) if other instantiations are needed (= dependent) and detects that it needs a class of type IClassB in the constructor. Because we already mapped ClassB2 to this interface the container is able to know that he needs to instantiate ClassB2 and thereafter needs to instantiate ClassA with the reference to ClassB2.&lt;/p&gt;
&lt;p&gt;Result :&lt;/p&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;Class B2 constructed!&lt;br /&gt;
Class A constructed!&lt;br /&gt;
Class B2 did something&lt;/font&gt; &lt;/p&gt;
&lt;p&gt;&lt;u&gt;By Configuration&lt;/u&gt; :&lt;/p&gt;
&lt;p&gt;In the previous way the choice of wich implementation of the interface to use is still hardcoded in the program. To be really loose coupled we need to have this decision written down in the configuration. Unity also supports this.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:396cbef7-8740-45ab-8562-d861cd46eb11" contenteditable="false" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; WIDTH: 1023px; PADDING-TOP: 0px"&gt;
&lt;pre style="OVERFLOW: auto; BACKGROUND-COLOR: white"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="COLOR: #ff00ff"&gt;xml version="1.0" encoding="utf-8" &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;?&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;
&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;configuration&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;
  &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;configSections&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;
    &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;section &lt;/span&gt;&lt;span style="COLOR: #ff0000"&gt;name&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;="unity"&lt;/span&gt;&lt;span style="COLOR: #ff0000"&gt;
             type&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,
                   Microsoft.Practices.Unity.Configuration"&lt;/span&gt;&lt;span style="COLOR: #ff0000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;
  &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;configSections&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;
  &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;unity&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;
    &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;containers&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;
      &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;container&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;
        &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;types&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;
          &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;type &lt;/span&gt;&lt;span style="COLOR: #ff0000"&gt;type&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;="TestUnity.IClassB,TestUnity"&lt;/span&gt;&lt;span style="COLOR: #ff0000"&gt;
                mapTo&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;="TestUnity.ClassB2,TestUnity"&lt;/span&gt;&lt;span style="COLOR: #ff0000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;
        &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;types&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;
      &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;container&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;
    &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;containers&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;
  &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;unity&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;
&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;configuration&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;In this configuration the mapping between IClassB an ClassB2 (or ClassB) is clearly specified. To read this configuration we need to use the ConfigurationManager like this :&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:b540953c-09f8-458d-a750-22b34754d0c4" contenteditable="false" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;
&lt;pre style="OVERFLOW: auto; BACKGROUND-COLOR: white"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="COLOR: #000000"&gt;IUnityContainer container &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; UnityContainer();

UnityConfigurationSection section;
section &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; (UnityConfigurationSection)ConfigurationManager.GetSection(&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;unity&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;"&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;);
section.Containers.Default.GetConfigCommand().Configure(container);&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;The rest of the code remains the same.&lt;/p&gt;
&lt;p&gt;Bottom line : &lt;strong&gt;The container shields the developer away from that awfull &lt;em&gt;new &lt;/em&gt;operater and gives him/her the needed objects based on a simple configuration. &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;But ... there's more (lots of ...)&lt;/p&gt;
&lt;p&gt;For example : You can even configure the container to use singletons when instantiating the classes by setting the lifetime attribute. By default the Unity container will not use singletons unless you specify this. Like this :&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:109461be-49f7-4a1b-b076-8d83317ad0c6" contenteditable="false" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;
&lt;pre style="OVERFLOW: auto; BACKGROUND-COLOR: white"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="COLOR: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #800000"&gt;type &lt;/span&gt;&lt;span style="COLOR: #ff0000"&gt;type&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;="TestUnity.ClassA,TestUnity"&lt;/span&gt;&lt;span style="COLOR: #ff0000"&gt;
      mapTo&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;="TestUnity.ClassA,TestUnity"&lt;/span&gt;&lt;span style="COLOR: #ff0000"&gt;
      lifetime&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;="Singleton"&lt;/span&gt;&lt;span style="COLOR: #ff0000"&gt;
  &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Result : when calling this code ....&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E7:b75f6fb5-4385-401d-bac2-38d817ff0a35" contenteditable="false" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;
&lt;pre style="OVERFLOW: auto; BACKGROUND-COLOR: white"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="COLOR: #000000"&gt;ClassA a1;
a1 &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; container.Get&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;ClassA&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;();
a1.Test();

ClassA a2;
a2 &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; container.Get&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;ClassA&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;();
a2.Test();
&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;... the constructor of ClassA and the constructor of ClassB2 (or ClassB) will only be executed once and a1 and a2 will point to the same instantiation without the need to write our own singleton logic. &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;One advice about the CTP : clearly the documantation is not in syc with this release. Please follow the discussions about this on &lt;a href="http://www.codeplex.com/unity/Thread/List.aspx"&gt;http://www.codeplex.com/unity/Thread/List.aspx&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=119739"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=119739" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/claeyskurt/aggbug/119739.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Kurt Claeys</dc:creator>
            <guid>http://geekswithblogs.net/claeyskurt/archive/2008/02/18/119739.aspx</guid>
            <pubDate>Mon, 18 Feb 2008 19:40:34 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/claeyskurt/comments/119739.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/claeyskurt/archive/2008/02/18/119739.aspx#feedback</comments>
            <slash:comments>6</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/claeyskurt/comments/commentRss/119739.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/claeyskurt/services/trackbacks/119739.aspx</trackback:ping>
        </item>
        <item>
            <title>The new 3.5 Technology Exams.</title>
            <link>http://geekswithblogs.net/claeyskurt/archive/2008/02/16/119684.aspx</link>
            <description>&lt;p&gt;&lt;/p&gt; &lt;p&gt;Microsoft has announced the next generation of the Technology Specialist exams. There are 6 MCTS exams to choose from, instead of 3 for the current certification track.  The main difference is that the new exams are more 3.5 technology (WCF,WF,WPF,ADO,ASP) oriented instead of to the type of application (web,win,distributed) as in the 2.0 track. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;The exams are ... &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.microsoft.com/learning/exams/70-502.mspx" target="_blank"&gt;70-502 TS: Microsoft .NET Framework 3.5 - Windows Presentation Foundation&lt;/a&gt;&lt;br /&gt;Launching on 25 March 2008 &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.microsoft.com/learning/exams/70-503.mspx" target="_blank"&gt;70-503 TS: Microsoft .NET Framework 3.5 - Windows Communication Foundation&lt;/a&gt;&lt;br /&gt;Launching on 27 March 2008 &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.microsoft.com/learning/exams/70-504.mspx" target="_blank"&gt;70-504 TS: Microsoft .NET Framework 3.5 – Windows Workflow Foundation&lt;/a&gt;&lt;br /&gt;Launching on 28 March 2008 &lt;/p&gt;&lt;p&gt;70-505  TS: Microsoft .NET Framework 3.5 - Windows Forms Applications&lt;br /&gt;No launchdate know yet (No Preparation Guide available yet) &lt;/p&gt;&lt;p&gt;70-561  TS: Microsoft .NET Framework 3.5 - ADO.NET Applications&lt;br /&gt;Launching on 12 May 2008 (No Preparation Guide available yet) &lt;/p&gt;&lt;p&gt;70-562  TS: Microsoft .NET Framework 3.5 - ASP.NET Applications&lt;br /&gt;Launching on 21 May 2008 (No Preparation Guide available yet) &lt;/p&gt;&lt;p&gt;&lt;br /&gt;Worth noticing is : &lt;/p&gt;&lt;p&gt;- The 70-536 exam is still valid, but will be renamed to TS: Microsoft .NET Framework, Development Foundation.  They will drop the 2.0 versionnumber in the title.&lt;br /&gt;- There is no upgrade path from the MCAD/MCSD certifications, the MCAD/MCSD credentials will not expire, but the exams will retire in the future. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;Want to know how many already have been certified in the existing track ? The numbers of MCP's worlwide have been published (i mean recently updated). Check out : &lt;a href="http://www.microsoft.com/learning/mcp/certified.mspx" target="_blank"&gt;http://www.microsoft.com/learning/mcp/certified.mspx&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;br /&gt;Besides the 3.5 Technology Specialist exams there are also a number of new exams in various areas. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.microsoft.com/learning/exams/70-541.mspx" target="_blank"&gt;70-541 TS: Microsoft Windows SharePoint Services 3.0 - Application Development&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/learning/exams/70-542.mspx" target="_blank"&gt;70-542 TS: Microsoft Office SharePoint Server 2007 – Application Development&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/learning/exams/70-543.mspx" target="_blank"&gt;70-543 TS: Visual Studio 2005 Tools for the Microsoft Office System&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/learning/exams/70-544.mspx" target="_blank"&gt;70-544 TS: Microsoft Virtual Earth 6.0, Application Development&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/learning/exams/70-545.mspx" target="_blank"&gt;70-545 TS: Microsoft Office Visio 2007, Application Development&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/learning/exams/70-571.mspx" target="_blank"&gt;70-571 TS: Microsoft Windows Embedded CE 6.0 Application Development&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;br /&gt;BTW : the &lt;a href="http://www.microsoft.com/learning/mcp/offers/secondshot/default.mspx" target="_blank"&gt;'Get a second chance to pass your Microsoft Certification exam'&lt;/a&gt; offer has been extended through June 30, 2008!&lt;/p&gt; &lt;p&gt;&lt;br /&gt;Release plans for Courseware,E-learning and Microsoft Press books are :&lt;br /&gt;- Starting from March some E-learning will be available&lt;br /&gt;- In April and May courseware for all exams except 70-505 will be available&lt;br /&gt;- Schedule for Self Paced Training Kits : July 2008 : 502, 503, 504, Sep 2008 : 561 and 562&lt;/p&gt; &lt;p&gt;&lt;br /&gt;Happy Studying.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=119684"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=119684" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/claeyskurt/aggbug/119684.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Kurt Claeys</dc:creator>
            <guid>http://geekswithblogs.net/claeyskurt/archive/2008/02/16/119684.aspx</guid>
            <pubDate>Sat, 16 Feb 2008 21:15:00 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/claeyskurt/comments/119684.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/claeyskurt/archive/2008/02/16/119684.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/claeyskurt/comments/commentRss/119684.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/claeyskurt/services/trackbacks/119684.aspx</trackback:ping>
        </item>
        <item>
            <title>Chopsticks video : Web Service Software Factory walkthrough</title>
            <link>http://geekswithblogs.net/claeyskurt/archive/2008/02/14/119577.aspx</link>
            <description>&lt;p&gt;Microsoft.be has published my ORDINA chopsticks session. In this presentation I guide you through the use of the Web Service Software Factory in Visual Studio 2008. &lt;/p&gt;
&lt;p align="center"&gt;&lt;iframe marginwidth="0" marginheight="0" src="http://www.microsoft.com/belux/msdn/nl/chopsticks/player.aspx?id=307&amp;amp;e=1" frameborder="0" width="493" scrolling="no" height="385"&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;p align="center"&gt;&lt;font face="Arial"&gt;&lt;a target="_blank" href="http://www.microsoft.com/belux/msdn/nl/chopsticks/player.aspx?id=307&amp;amp;e=1"&gt;http://www.microsoft.com/belux/msdn/nl/chopsticks/player.aspx?id=307&amp;amp;e=1&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=119577"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=119577" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/claeyskurt/aggbug/119577.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Kurt Claeys</dc:creator>
            <guid>http://geekswithblogs.net/claeyskurt/archive/2008/02/14/119577.aspx</guid>
            <pubDate>Thu, 14 Feb 2008 18:51:36 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/claeyskurt/comments/119577.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/claeyskurt/archive/2008/02/14/119577.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/claeyskurt/comments/commentRss/119577.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/claeyskurt/services/trackbacks/119577.aspx</trackback:ping>
        </item>
        <item>
            <title>Heroes Happen in Ghent</title>
            <link>http://geekswithblogs.net/claeyskurt/archive/2008/02/07/119384.aspx</link>
            <description>&lt;p&gt;Countdown till the 2008 launch in Belgium and the start of the TechDays summit has started. Proud to see loads of great Belgian speakers here. &lt;/p&gt; &lt;p&gt;Here a list speakers I like, collegeas, community (visug) friends, Microsoft.be guys and other certified trainers and people I met at other Microsoft events.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.snowball.be/" target="_blank"&gt;Gill Cleeren&lt;/a&gt; : A collegea at Ordina, MVP, SilverLight geek presenting Next Generation Web Applications.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.ilikesql.com/" target="_blank"&gt;Dandy Weyn&lt;/a&gt; : A Redmond based SQL Guru with Belgian roots has multiple sessions on SQL 2008.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.u2u.info/Blogs/Peter/default.aspx" target="_blank"&gt;Peter Himschoot&lt;/a&gt; : Great guy, talking about VS2008 and WCF.&lt;/p&gt; &lt;p&gt;&lt;a href="http://community.bartdesmet.net/blogs/bart/Default.aspx" target="_blank"&gt;Bart De Smet (B#)&lt;/a&gt; : Belgian Top Speaker, LINQ to ... anything guy, working at Microsoft Corp, talking about PowerShell and the future of WPF.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.goeleven.com/" target="_blank"&gt;Yves Goeleven&lt;/a&gt; : Domain Driven Design and VSTS fellow, talking about Application Lifecycle Management in VSTS.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.u2u.info/Blogs/Patrick/default.aspx" target="_blank"&gt;Patrick Tisseghem&lt;/a&gt; : The Sharepoint monument, presenting Search Server 2008.&lt;/p&gt; &lt;p&gt;&lt;a href="http://steven.wilssens.net/" target="_blank"&gt;Steven Wilssens&lt;/a&gt; : Another Belgian in Redmond, talking about SOA.&lt;/p&gt; &lt;p&gt;&lt;a href="http://blog.baeke.info/" target="_blank"&gt;Geert Baeke&lt;/a&gt; : an ITPro MCT, about transitioning from Exchange to Sharepoint.&lt;/p&gt; &lt;p&gt;&lt;a href="http://jopx.blogspot.com/" target="_blank"&gt;Joris Poelmans&lt;/a&gt; : Sharepoint MVP, about MOSS 2007.&lt;/p&gt; &lt;p&gt;&lt;a href="http://sergeluca.spaces.live.com/" target="_blank"&gt;Serge Luca&lt;/a&gt; : Great trainer and MVP, about Workflow Foundation Rules Engine.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.wiver.com/" target="_blank"&gt;Wim Verhaegen&lt;/a&gt; : .NET Geek, About SilverLight and Blend.&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/belux/heroeshappenhere/default.aspx" target="_new" atomicselection="true"&gt;&lt;img src="http://www.microsoft.com/belux/heroeshappenhere/img/toolbox/signature_hero_1.gif" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=119384"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=119384" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/claeyskurt/aggbug/119384.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Kurt Claeys</dc:creator>
            <guid>http://geekswithblogs.net/claeyskurt/archive/2008/02/07/119384.aspx</guid>
            <pubDate>Thu, 07 Feb 2008 23:22:31 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/claeyskurt/comments/119384.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/claeyskurt/archive/2008/02/07/119384.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/claeyskurt/comments/commentRss/119384.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/claeyskurt/services/trackbacks/119384.aspx</trackback:ping>
        </item>
        <item>
            <title>ITClub developers seminar on Workflow Foundation.</title>
            <link>http://geekswithblogs.net/claeyskurt/archive/2008/01/24/118878.aspx</link>
            <description>&lt;p&gt;&lt;font face="Arial"&gt;&lt;font size="3"&gt;This week I gave another .NET 3.x session for the &lt;/font&gt;&lt;a title="syntrawest" target="_blank" href="http://www.syntrawest.be/informatics"&gt;&lt;font size="3"&gt;syntrawest&lt;/font&gt;&lt;/a&gt;&lt;font size="3"&gt; ITClub developers in Kortrijk. &lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font face="Arial"&gt;19 People from West Vlaanderen where interested in Workflow Foundation and liked my presentation. &lt;/font&gt;&lt;font face="Arial"&gt;As promised to them : you can download the code of the demos &lt;a target="_blank" href="http://www.devitect.net/itclub/demoswf.zip"&gt;here&lt;/a&gt;.&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial" size="3"&gt;BTW : the agenda for my next sessions :&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial" size="3"&gt;26/02 : VS2008, ADO.NET in .NET 3.5,LINQ&lt;br /&gt;
22/04 : Patterns &amp;amp; Practices, Applicaton Blocks and Software Factories&lt;br /&gt;
27/05 : Rich Internet Applications with Silverlight&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial" size="3"&gt;Want to attend these events ? Drop me a mail or reply to this post with your contact info.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;/font&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118878"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118878" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/claeyskurt/aggbug/118878.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Kurt Claeys</dc:creator>
            <guid>http://geekswithblogs.net/claeyskurt/archive/2008/01/24/118878.aspx</guid>
            <pubDate>Thu, 24 Jan 2008 20:36:08 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/claeyskurt/comments/118878.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/claeyskurt/archive/2008/01/24/118878.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/claeyskurt/comments/commentRss/118878.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/claeyskurt/services/trackbacks/118878.aspx</trackback:ping>
        </item>
        <item>
            <title>How to check if a type supports an excplicit implemented interface</title>
            <link>http://geekswithblogs.net/claeyskurt/archive/2008/01/20/118721.aspx</link>
            <description>&lt;p&gt;&lt;/p&gt; &lt;p&gt;Let's assume you have an object on which you want to call a method which is defined in an interface which is implemented explicitly by the type (=class) of the object.&lt;br /&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:16256e72-9671-4589-815f-de749e0ed33f" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;;overflow: auto;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #0000FF; "&gt;public&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;interface&lt;/span&gt;&lt;span style="color: #000000; "&gt; ITheInterface
{
    &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;void&lt;/span&gt;&lt;span style="color: #000000; "&gt; AMethod();
}

&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;public&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;class&lt;/span&gt;&lt;span style="color: #000000; "&gt; MyClass : ITheInterface
{
    &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;void&lt;/span&gt;&lt;span style="color: #000000; "&gt; ITheInterface.AMethod()
    {
        &lt;/span&gt;&lt;span style="color: #008000; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; "&gt;...&lt;/span&gt;&lt;span style="color: #008000; "&gt;
&lt;/span&gt;&lt;span style="color: #000000; "&gt;    }
}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
&lt;p&gt;To call the method, the object has to be casted to the type of the Interface because the methods are not available on the object itself. This is the normal way to work when doing explicit interface implementation.&lt;/p&gt;
&lt;p&gt;You could code this in the following way :&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:4d03ae5f-8ca5-41dc-9dcd-d390b5095fb5" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;;overflow: auto;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000; "&gt;MyClass o;
o &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;new&lt;/span&gt;&lt;span style="color: #000000; "&gt; MyClass();            

ITheInterface i;
i &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; (ITheInterface)o;
i.AMethod();&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
&lt;p&gt;This is fine if the class has actually implemented the interface, but will result in an &lt;i&gt;InvalidCastException&lt;/i&gt; when it has not. The compiler could not tell that’s something is wrong here.&lt;/p&gt;
&lt;p&gt;You could catch the exception, but that is not the correct solution of course.
&lt;/p&gt;&lt;p&gt;A better approach is to do the cast by using the &lt;i&gt;&lt;strong&gt;as&lt;/strong&gt;&lt;/i&gt; operator. The &lt;i&gt;&lt;strong&gt;as&lt;/strong&gt;&lt;/i&gt; operator will do the casting if the types are compatible (which means the interface is implemented by the type) otherwise the result will be a null reference. No exception will be thrown in this case. 
&lt;/p&gt;&lt;p&gt;After this cast you could check wether the result is null or not and safely call the method when it’s not null.&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:bbaf47ac-2405-4139-af12-cf6cad164545" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;;overflow: auto;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000; "&gt;ITheInterface i;
i &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; o &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;as&lt;/span&gt;&lt;span style="color: #000000; "&gt; ITheInterface;
&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;if&lt;/span&gt;&lt;span style="color: #000000; "&gt; (i &lt;/span&gt;&lt;span style="color: #000000; "&gt;!=&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;null&lt;/span&gt;&lt;span style="color: #000000; "&gt;)
{
    i.AMethod();
}
&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;else&lt;/span&gt;&lt;span style="color: #000000; "&gt;
{
    &lt;/span&gt;&lt;span style="color: #008000; "&gt;//&lt;/span&gt;&lt;span style="color: #008000; "&gt;...&lt;/span&gt;&lt;span style="color: #008000; "&gt;
&lt;/span&gt;&lt;span style="color: #000000; "&gt;}&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
&lt;p&gt;&lt;u&gt;Advice &lt;/u&gt;(as a coding guideline) : always do casting by the &lt;i&gt;as&lt;/i&gt; operator and check for null, unless you really want to catch the InvalidCastException.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118721"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118721" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/claeyskurt/aggbug/118721.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Kurt Claeys</dc:creator>
            <guid>http://geekswithblogs.net/claeyskurt/archive/2008/01/20/118721.aspx</guid>
            <pubDate>Sun, 20 Jan 2008 17:10:58 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/claeyskurt/comments/118721.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/claeyskurt/archive/2008/01/20/118721.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/claeyskurt/comments/commentRss/118721.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/claeyskurt/services/trackbacks/118721.aspx</trackback:ping>
        </item>
        <item>
            <title>MCT Summit Berlin</title>
            <link>http://geekswithblogs.net/claeyskurt/archive/2008/01/19/118693.aspx</link>
            <description>&lt;p&gt;&lt;font face="Tahoma" size="2"&gt;Last week I was present at the &lt;/font&gt;&lt;a target="_blank" href="http://www.microsoft.com/germany/learning/mct/mctsummit2008.mspx"&gt;&lt;font face="Tahoma" size="2"&gt;MCT Summit in Berlin&lt;/font&gt;&lt;/a&gt;&lt;font face="Tahoma" size="2"&gt;. Had fun, saw great presentations. A big applaus was given to &lt;/font&gt;&lt;a target="_blank" href="http://blogs.infosupport.com/marcelv/"&gt;&lt;font face="Tahoma" size="2"&gt;Marcel De Vries&lt;/font&gt;&lt;/a&gt;&lt;font face="Tahoma" size="2"&gt; for his LINQ presentation. Which was deserved, this was the best LINQ presentation I had ever seen. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Tahoma" size="2"&gt;Altough the summit was more focused on ITPro and SQL stuff I had a good time. I was introduced by MCT collegeaus to the world of virtualization and Microsoft Hyper-V.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Tahoma" size="2"&gt;Some 400 MCT’s from the EMEA region where there. About 10  belgians quickly joined together and started thinking about organizing a little belgian MCT community. Any belgian MCT interested to join (there should be 83 of us), please contact me. &lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://www.ilikesql.com/"&gt;&lt;font face="Tahoma" size="2"&gt;Dandy Weyn&lt;/font&gt;&lt;/a&gt;&lt;font face="Tahoma" size="2"&gt; (also a Belgian) presented sessions about SQL Server 2008 and the courses for this topic. Good speaker, belgian style, in his first session on wednesday morning, 08:30h, he even offered all the attendees a free beer (see below). Cheers Dandy.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Tahoma" size="2"&gt;The next generationd MOC’s were presented, looking promising. Less paper, more content on CD.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Tahoma" size="2"&gt;MCT Summit 2008 was fine, and remember … don’t let the powerpoint speak to you and prepare your demo’s to fail…. (ahum, according to Richard Klees)&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Tahoma" size="2"&gt;BTW : What I realy liked about Germany, they have (together with Belgium) the best beer in the world. Ever had a taste of Schöfferhofer ? Great ....&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://www.schoefferhofer.de/images/12304.jpg" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118693"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=118693" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/claeyskurt/aggbug/118693.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Kurt Claeys</dc:creator>
            <guid>http://geekswithblogs.net/claeyskurt/archive/2008/01/19/118693.aspx</guid>
            <pubDate>Sat, 19 Jan 2008 13:19:37 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/claeyskurt/comments/118693.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/claeyskurt/archive/2008/01/19/118693.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/claeyskurt/comments/commentRss/118693.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/claeyskurt/services/trackbacks/118693.aspx</trackback:ping>
        </item>
        <item>
            <title>Slidedecks for SyntraWest ITClub seminars</title>
            <link>http://geekswithblogs.net/claeyskurt/archive/2007/12/23/117945.aspx</link>
            <description>&lt;p&gt;I promised some people to post the slidedecks of my last 2 seminars for the &lt;a title="syntrawest" href="http://www.syntrawest.be/informatics" target="_blank"&gt;syntrawest&lt;/a&gt; ITClub. &lt;/p&gt;
&lt;p&gt;1.  &lt;font face="Arial"&gt;&lt;a target="_blank" href="http://www.devitect.net/itclub/SyntraWest%20ITClub%20Seminar%20Kurt%20CLAEYS%20_%20Agile%20Development%20met%20Visual%20Studio%20Team%20System.pdf"&gt;Agile Development met Visual Studio Team System&lt;/a&gt;&lt;br /&gt;
&lt;/font&gt;2.  &lt;font face="Arial"&gt;&lt;a target="_blank" href="http://www.devitect.net/itclub/SyntraWest%20ITClub%20Seminar%20Kurt%20CLAEYS%20_%20Windows%20Communication%20Foundation.pdf"&gt;Windows Communication Foundation&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;See you on the next seminars :&lt;/p&gt;
&lt;p&gt;22/01 Workflow Foundation&lt;br /&gt;
26/02 LINQ + ADO.NET Entity framework&lt;br /&gt;
22/04 Rich Internet Applications with SilverLight&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117945"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117945" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/claeyskurt/aggbug/117945.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Kurt Claeys</dc:creator>
            <guid>http://geekswithblogs.net/claeyskurt/archive/2007/12/23/117945.aspx</guid>
            <pubDate>Sun, 23 Dec 2007 20:35:12 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/claeyskurt/comments/117945.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/claeyskurt/archive/2007/12/23/117945.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/claeyskurt/comments/commentRss/117945.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/claeyskurt/services/trackbacks/117945.aspx</trackback:ping>
        </item>
        <item>
            <title>Accessing SOAP Headers created by WCF MessageContracts in ASMX clients.</title>
            <link>http://geekswithblogs.net/claeyskurt/archive/2007/10/23/SoapHeadersInWCFforAMSXClients.aspx</link>
            <description>&lt;p&gt;&lt;/p&gt; &lt;p&gt;WCF and AMSX really have a good interopability. Of course ... both technologies are based on SOAP, so they should be.  &lt;/p&gt;&lt;p&gt;Also SOAP headers are supported and the VS2005 asmx proxy generation (add webreference) supports this by adding the headers as properties of the service class. Very convenient. Once these properties are set at the service level, for every call to an WCF operation this headerdata is send to WCF service and is available during the operation. This can be used in the scenario where every method on the service needs access to information regarding the context of the client (the identification of the user for example), but you don't want to specify this in every OperationContract. In most of the cases this information will be static, so setting the properties once at the instantiation of the proxy class becomes in very handy.  &lt;/p&gt;&lt;p&gt;On the WCF contract you have to specify a MessageContract instead of a DataContract. With a MessageContract you have more detailed control over how the fields of the contract get mapped to actual SOAPMessages, seperating header parts and body parts. Both parts can be DataContracts, so a MessageContract is a kind of wrapper around multiple DataContracts in which you specify which part is a header (and thus implicitly send to the service as a SOAPheader) and which part is the body (and must be given explicit as parameter to the methodcall).&lt;/p&gt; &lt;p&gt;Restriction : Only one parameter of the operation can by a MessageContract and when using a MessageContract as a parameter also the returntype has to be a MessageContract.  &lt;/p&gt;&lt;p&gt;&lt;u&gt;Defining a MessageContract with body and header :&lt;/u&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:4ce51b03-7aed-4110-ba79-b002707e9793" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;;overflow: auto;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000; "&gt;[MessageContract]
&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;public&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;class&lt;/span&gt;&lt;span style="color: #000000; "&gt; MyInputMessageType
{
      [MessageHeader(Name&lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;HeaderIn&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;)]
      &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;public&lt;/span&gt;&lt;span style="color: #000000; "&gt; HeaderIn HeaderIn;

      [MessageBodyMember]
      &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;public&lt;/span&gt;&lt;span style="color: #000000; "&gt; OrderPayload Payload;
}

[DataContract]
&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;public&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;class&lt;/span&gt;&lt;span style="color: #000000; "&gt; HeaderIn
{
      [DataMember]
      &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;public&lt;/span&gt;&lt;span style="color: #000000; "&gt; String ClientIdentification;
}

[DataContract]
&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;public&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;class&lt;/span&gt;&lt;span style="color: #000000; "&gt; OrderPayload
{
      [DataMember]
      &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;public&lt;/span&gt;&lt;span style="color: #000000; "&gt; Int64 OrderID;

      [DataMember]
      &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;public&lt;/span&gt;&lt;span style="color: #000000; "&gt; DateTime OrderDate;
}
&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
&lt;p&gt;&lt;u&gt;Definition of the OperationContract&lt;/u&gt;&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:78dcad50-5464-411f-95c6-6a4d5dd12280" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;;overflow: auto;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000; "&gt;[ServiceContract]
&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;interface&lt;/span&gt;&lt;span style="color: #000000; "&gt; IMyService
{
     [OperationContract]
     MyReturnMessageType DoSomething(MyInputMessageType data);
}
&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
&lt;p&gt;&lt;u&gt;The implementation of the operation can access both parts&lt;/u&gt;&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:abe67c87-5ea0-4505-a990-0363625d87be" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;;overflow: auto;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000; "&gt;data.Payload.OrderDate.ToShortDateString()
data.Payload.OrderID.ToString()
data.HeaderIn.ClientIdentification.ToString()&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
&lt;p&gt;&lt;u&gt;The client sets header at the service level &lt;/u&gt;&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:addf3df5-0e1e-408a-a9ef-b2f61073c6a3" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;&lt;pre style="background-color:White;;overflow: auto;"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="color: #000000; "&gt;ServiceReference.MyService service;
service &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;new&lt;/span&gt;&lt;span style="color: #000000; "&gt; ServiceReference.MyService();

ServiceReference.HeaderIn header;
header &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;new&lt;/span&gt;&lt;span style="color: #000000; "&gt; ServiceReference.HeaderIn();
header.ClientIdentification &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;ITSME&lt;/span&gt;&lt;span style="color: #000000; "&gt;"&lt;/span&gt;&lt;span style="color: #000000; "&gt;;

service.HeaderInValue &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; header;
            
ServiceReference.OrderPayload orderPayload;
orderPayload &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;new&lt;/span&gt;&lt;span style="color: #000000; "&gt; ServiceReference.OrderPayload();
orderPayload.OrderDate &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; System.DateTime.Now;
orderPayload.OrderDateSpecified &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #0000FF; "&gt;true&lt;/span&gt;&lt;span style="color: #000000; "&gt;;
            
orderPayload.OrderID &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #000000; "&gt;1234&lt;/span&gt;&lt;span style="color: #000000; "&gt;;
orderPayload.OrderIDSpecified &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; &lt;/span&gt;&lt;span style="color: #0000FF; "&gt;true&lt;/span&gt;&lt;span style="color: #000000; "&gt;;

ServiceReference.OrderReturnData orderReturnData;
orderReturnData &lt;/span&gt;&lt;span style="color: #000000; "&gt;=&lt;/span&gt;&lt;span style="color: #000000; "&gt; service.DoSomething(orderPayload);

MessageBox.Show(orderReturnData.OrderID.ToString());
MessageBox.Show(service.HeaderOutValue.Status);
&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=116271"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=116271" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/claeyskurt/aggbug/116271.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Kurt Claeys</dc:creator>
            <guid>http://geekswithblogs.net/claeyskurt/archive/2007/10/23/SoapHeadersInWCFforAMSXClients.aspx</guid>
            <pubDate>Tue, 23 Oct 2007 20:48:54 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/claeyskurt/comments/116271.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/claeyskurt/archive/2007/10/23/SoapHeadersInWCFforAMSXClients.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/claeyskurt/comments/commentRss/116271.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/claeyskurt/services/trackbacks/116271.aspx</trackback:ping>
        </item>
        <item>
            <title>Polymorphism in WCF contracts.</title>
            <link>http://geekswithblogs.net/claeyskurt/archive/2007/11/02/PolymorphismWCFdatacontracts.aspx</link>
            <description>&lt;p&gt;Polymorphism is a basic concept in object orientation meaning that a reference to a derived class is type-compatible with its base class. Sounds abstract ? (Hmm ... it is)&lt;br /&gt;
&lt;br /&gt;
Look at this example :  &lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:5dc9a32b-4888-42ff-a5cb-71429c3c7175" contenteditable="false" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;
&lt;pre style="OVERFLOW: auto; BACKGROUND-COLOR: white"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ParentDataType
{
    &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; String data1;
}
&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ChildDataType : ParentDataType
{
    &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; String data2;
}
&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; TestClass
{
    &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; DoSomething1(ParentDataType p)
    {
    }
    &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; DoSomething2(ChildDataType c)
    {
    }
}
&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
&lt;br /&gt;
In this example the ChildDataType inherits from the ParentDataType. Besides that, we have a TestClass with 2 methods. The first (DoSomething1) is expecting a reference to the ParentDataType as parameter, the second one (DoSomething2) likes a ChildDataType as parameter. Let's look at what types can be send to which method. In other words ... how are types compatible ?
&lt;p&gt;This code instantiates variables of both types and a reference to the class containing to two testmethods.  &lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:55e85831-7ec0-471a-bd37-f8f01ceca3c0" contenteditable="false" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;
&lt;pre style="OVERFLOW: auto; BACKGROUND-COLOR: white"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="COLOR: #000000"&gt;DoClass o &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; TestClass();
ParentDataType p &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ParentDataType();
ChildDataType c &lt;/span&gt;&lt;span style="COLOR: #000000"&gt;=&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;new&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ChildDataType();
&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
&lt;br /&gt;
The polymorphic rule means  : a variable declared as a parentclass can point to a variable which has its childclass as type. In the case of using parameters the types are casted implicitly. It's perfectly allowed to cast a childclass to it's parentclass.
&lt;p&gt;So, Not only these two methodscalls are allowed.  &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:e5992a43-ff12-4994-994f-c81e39f29f91" contenteditable="false" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;
&lt;pre style="OVERFLOW: auto; BACKGROUND-COLOR: white"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="COLOR: #000000"&gt;o.DoSomething1(p);
o.DoSomething2(c);
&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
&lt;br /&gt;
But also this one : 
&lt;p&gt; &lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:057ee83d-2c20-4883-8a10-82ca8efe25d9" contenteditable="false" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;
&lt;pre style="OVERFLOW: auto; BACKGROUND-COLOR: white"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="COLOR: #000000"&gt;o.DoSomething1(c);&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
&lt;br /&gt;
The method expecting a parentclass is also satisfied with a reference to the childclass because of the implicit casting. Of course are In the method only the properties from the parentclass available.
&lt;p&gt;The opposite is not allowed : &lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:64393dc6-459d-431c-afe5-ed8756bdd4c5" contenteditable="false" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;
&lt;pre style="OVERFLOW: auto; BACKGROUND-COLOR: white"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="COLOR: #000000"&gt;o.DoSomething2(p);&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
&lt;br /&gt;
The compiler gives 'Argument '1': cannot convert from '....ParentDataType' to '....ChildDataType'. Meaning we can not cast a parent to its child. This is perfeclty normal. Consider if it would be allowed and you used some properties on the parameter c in the method DoSomething2 that are only available in the ChildDataType. Should this casting be allowed there's no way to execute those properties because they're not available in the ParentDataType.
&lt;p&gt;So far for the pure OO related concept. ...&lt;/p&gt;
&lt;p&gt;What about WCF ? In WCF proxies are generated based on a WSDL file which in its turn is based on the interface declared as WCF ServiceContracts. The WCF metadataexchange infrastructure creates WSDL elements for each method declared as OperationContract and also creates metadata for the the classes that are used as inputparameters or returnvalues of exposed methods as XSD schemes referenced by the WSDL. But WCF doesn't take in account that another class which derives from the class of your parameter is allowed to be send to the service. WSDL doesn't know OO and its polymorphic rules. &lt;/p&gt;
&lt;p&gt;Lets say we expose the method expecting the ParentDataType parameter as an OperationContract in WCF and also declare both ParentDataType and ChildDataType as DataContracts.    &lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:23ffa305-c46d-49f1-9800-83b578c70867" contenteditable="false" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;
&lt;pre style="OVERFLOW: auto; BACKGROUND-COLOR: white"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="COLOR: #000000"&gt;[DataContract]
&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ParentDataType
{
    [DataMember]
    &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; String data1;
}

[DataContract]
&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ChildDataType : ParentDataType
{
    [DataMember]
    &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; String data2;
}

[ServiceContract]
&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;interface&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; IMyService
{
    [OperationContract]
    &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;void&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; DoSomething1(ParentDataType p);
}
&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
&lt;br /&gt;
Let's examine the WSDL. The XSD part of the WSDL only has metadata information for the ParentDataType and not for the ChildType.
&lt;p&gt;&lt;img alt="" border="0" src="http://www.devitect.net/images/blogs/wsdlwithoutchildtype.gif" /&gt; &lt;/p&gt;
&lt;p&gt;So the ChildlDataType is not present in the generated proxies altough it is perfecly legal en sometimes desired to have the client instantiate a variable of the ChildDataType and send it to the method on the service. &lt;/p&gt;
&lt;p&gt;To solve this we have to make use of the &lt;strong&gt;KnownType attribute &lt;/strong&gt;(found in the namespace &lt;strong&gt;System.Runtime.Serialization&lt;/strong&gt;) to declare at the ParentDataType that there are other classes which derive from it that are type-compatible with it.  &lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="57F11A72-B0E5-49c7-9094-E3A15BD5B5E6:427e7d11-ba6e-4eed-96e5-b5e7399816d3" contenteditable="false" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;
&lt;pre style="OVERFLOW: auto; BACKGROUND-COLOR: white"&gt;&lt;div&gt;&lt;!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt;&lt;span style="COLOR: #000000"&gt;[DataContract]
[KnownType(&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;typeof&lt;/span&gt;&lt;span style="COLOR: #000000"&gt;(ChildDataType))]
&lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;class&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; ParentDataType
{
    [DataMember]
    &lt;/span&gt;&lt;span style="COLOR: #0000ff"&gt;public&lt;/span&gt;&lt;span style="COLOR: #000000"&gt; String data1;
}
&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;
&lt;!-- Code inserted with Steve Dunn's Windows Live Writer Code Formatter Plugin.  http://dunnhq.com --&gt;&lt;/div&gt;
&lt;br /&gt;
In that way the WSDL contains also the definition of the ChildDataType and is therefore available in the proxy class. &lt;img alt="" border="0" src="http://www.devitect.net/images/blogs/wsdlwithchildtype.gif" /&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=116557"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=116557" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/claeyskurt/aggbug/116557.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Kurt Claeys</dc:creator>
            <guid>http://geekswithblogs.net/claeyskurt/archive/2007/11/02/PolymorphismWCFdatacontracts.aspx</guid>
            <pubDate>Fri, 02 Nov 2007 21:17:48 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/claeyskurt/comments/116557.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/claeyskurt/archive/2007/11/02/PolymorphismWCFdatacontracts.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/claeyskurt/comments/commentRss/116557.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/claeyskurt/services/trackbacks/116557.aspx</trackback:ping>
        </item>
    </channel>
</rss>