<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.pluralsight.com/community/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Service Station, by Aaron Skonnard</title><link>http://www.pluralsight.com/community/blogs/aaron/default.aspx</link><description>Your pit stop through the SO universe</description><dc:language>en</dc:language><generator>CommunityServer 2008 SP1 (Build: 30619.63)</generator><item><title>Screencast: Hosting WCF services in ASP.NET/IIS</title><link>http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/28/screencast-hosting-wcf-services-in-asp-net-iis.aspx</link><pubDate>Thu, 28 Aug 2008 17:06:42 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52759</guid><dc:creator>Aaron Skonnard</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/aaron/rsscomments.aspx?PostID=52759</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/28/screencast-hosting-wcf-services-in-asp-net-iis.aspx#comments</comments><description>&lt;p&gt;This week&amp;#39;s screencast covers how to &lt;a href="http://channel9.msdn.com/posts/cliff.simpkins/Endpoint-Screencasts-Hosting-WCF-Services-in-IIS/"&gt;host your WCF Service in ASP.NET/IIS.&lt;/a&gt; We&amp;#39;ll start with the simple WCF service that I created in the &lt;a href="http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/21/screencast-creating-your-first-wcf-service.aspx"&gt;first screencast&lt;/a&gt;, and then I&amp;#39;ll show you how to expose the service using an svc file within an ASP.NET Web site. Next, we&amp;#39;ll walk through the process of adding endpoints to the site&amp;#39;s web.config file (for further details on configuring endpoints see &lt;a href="http://channel9.msdn.com/posts/cliff.simpkins/Endpoint-Screencasts-Configuring-Services-with-Endpoints/"&gt;this&lt;/a&gt; screencast). Then I&amp;#39;ll show you how to test it using the ASP.NET Development Web Server in Visual Studio. And finally, I&amp;#39;ll show you how to publish it within IIS.&lt;/p&gt; &lt;p style="text-align:center;"&gt;&lt;a href="http://channel9.msdn.com/posts/cliff.simpkins/Endpoint-Screencasts-Hosting-WCF-Services-in-IIS/"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="184" alt="EndpointScreenCastHostingWcfSvcIIS2008_large_ch9" src="http://www.pluralsight.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/aaron/EndpointScreenCastHostingWcfSvcIIS2008_5F00_large_5F00_ch9_5F00_3.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;em&gt;Previous Screencasts (&lt;a href="http://www.pluralsight.com/community/blogs/aaron/rss.aspx?Tags=Screencasts&amp;amp;AndTags=1"&gt;RSS for all posts in the series&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/21/screencast-creating-your-first-wcf-service.aspx"&gt;Creating your first WCF service&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/21/screencast-configuring-wcf-services-with-endpoints.aspx"&gt;Configuring services with endpoints&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52759" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/aaron/archive/tags/Screencasts/default.aspx">Screencasts</category></item><item><title>Can Microsoft + Seinfeld outdo Apple's marketing?</title><link>http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/22/can-microsoft-seinfeld-outdo-apple-s-marketing.aspx</link><pubDate>Fri, 22 Aug 2008 15:54:20 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52684</guid><dc:creator>Aaron Skonnard</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/aaron/rsscomments.aspx?PostID=52684</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/22/can-microsoft-seinfeld-outdo-apple-s-marketing.aspx#comments</comments><description>&lt;p&gt;Mary Jo Foley &lt;a href="http://blogs.zdnet.com/microsoft/?p=1548"&gt;reported about this&lt;/a&gt; yesterday and now it&amp;#39;s &lt;a href="http://www.cbsnews.com/stories/2008/08/21/business/main4372097.shtml?source=RSSattr=SciTech_4372097"&gt;all over the news&lt;/a&gt;. Microsoft is gearing up to launch a $300M advertising campaign to combat the negative ads launched against them in recent years, and to rebuild the company&amp;#39;s fading image. Since the &amp;quot;Get a Mac&amp;quot; ad campaign first started, and proved &lt;em&gt;sooo&lt;/em&gt; effective, I&amp;#39;ve been dumbfounded by the fact that Microsoft has just sat back and taken it, one hit at a time. I even started to wonder if Microsoft would ever launch a counter strike.&amp;nbsp; I finally started to conclude that maybe Microsoft &lt;em&gt;isn&amp;#39;t actually able &lt;/em&gt;to orchestrate a successful counter-campaign given their historic lack of creativity with all things marketing, and maybe it was better that way. Because if they actually tried to do something, and it flopped, that would make things even worse for the company.&lt;/p&gt; &lt;p&gt;Well, it looks like the day has finally arrived like it or not.&lt;/p&gt; &lt;p&gt;The key question was always...who would they use as spokesperson? Given the Mac ads, they really need just the right guy to pull it off and resonate. Well, they&amp;#39;ve chosen Jerry Seinfeld for the spokesperson role (he gets $10M), which made me really happy when I first heard about it. &lt;/p&gt; &lt;p&gt;Since then, however, I&amp;#39;ve been poking around to see what others are saying, and many are questioning if he&amp;#39;s the right choice. Some say he&amp;#39;s out-of-date. Some point to his ineffective AMEX commercials. And some say the biggest problem with Jerry is that he &lt;em&gt;actually seems &lt;/em&gt;more like a Mac Guy. In fact, didn&amp;#39;t Jerry have a Mac in his Seinfeld set apartment all those years? Apparently, some Microsoft partners &lt;a href="http://www.msfn.org/comments.php?shownews=22751"&gt;aren&amp;#39;t completely convinced&lt;/a&gt; either. &lt;/p&gt; &lt;p&gt;Despite Microsoft&amp;#39;s latest attempts to improve Vista perception via &lt;a href="http://www.mojaveexperiment.com/?WT.srch=1"&gt;The Mojave Experiment&lt;/a&gt;, there are &lt;a href="http://www.daniweb.com/blogs/entry3007.html"&gt;some who believe&lt;/a&gt; that Microsoft&amp;#39;s fundamental problem isn&amp;#39;t lack of marketing but rather a flawed product (Vista) and that they should spend the $300M fixing that first. Some say this is just a pathetic attempt by Gates to get back at Jobs (apparently the Mac ads really ticked him off). Who knows.&lt;/p&gt; &lt;p&gt;I personally believe that Microsoft&amp;#39;s move to get more aggressive with their marketing is the right call. There&amp;#39;s simply too much negativity targeting them to withstand it sitting still. While some of the negativity may be merited, a lot of it clearly isn&amp;#39;t, and perception is king. And I&amp;#39;m glad to hear that they&amp;#39;re taking this seriously -- a $300M campaign is significant -- they need to do it right. Now they just need to nail the creative.&lt;/p&gt; &lt;p&gt;It will be very interesting, and hopefully entertaining, to watch these new ads roll out combined with the celebrity of Jerry Seinfeld. I sure hope it works...Microsoft needs a win here.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52684" width="1" height="1"&gt;</description></item><item><title>Thanks Lutz Roeder!</title><link>http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/22/thanks-lutz-roeder.aspx</link><pubDate>Fri, 22 Aug 2008 14:53:31 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52683</guid><dc:creator>Aaron Skonnard</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/aaron/rsscomments.aspx?PostID=52683</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/22/thanks-lutz-roeder.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://blog.lutzroeder.com/"&gt;Lutz Roeder&lt;/a&gt;, creator of the ever-so-popular &lt;a href="http://www.red-gate.com/products/reflector/"&gt;.NET Reflector&lt;/a&gt;, sent out the following email today announcing a big change for his tool:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;After more than eight years of working on .NET Reflector, I have decided it is time to move on and explore some new opportunities. &lt;p&gt;I have reached an agreement to have &lt;a href="http://www.red-gate.com/"&gt;Red Gate Software&lt;/a&gt; continue the development of .NET Reflector. Red Gate has a lot of experience creating development tools for both .NET and SQL Server. They have the resources necessary to work on new features, and Reflector fits nicely with other .NET tools the company offers. &lt;p&gt;Red Gate will continue to provide the free community version and is looking for your feedback and ideas for future versions. &lt;p&gt;For news and updates on Reflector, sign up for the &lt;a href="http://reflector.red-gate.com/subscribe.aspx"&gt;.NET Developer’s Newsletter&lt;/a&gt; from Red Gate. To find out more about the agreement, see the interview on &lt;a href="http://www.simple-talk.com/the_future_of_reflector"&gt;Simple Talk&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;I&amp;#39;ve personally used .NET Reflector extensively over the years, ever since its earliest release, and it has never let me down. It&amp;#39;s come to my rescue on many occasions as I&amp;#39;ve struggled to understand different areas of the .NET Framework. My experience wouldn&amp;#39;t have been the same without it. &lt;p&gt;So I guess I just wanted to say...thanks Lutz!&amp;nbsp; &lt;p&gt;And best of luck to &lt;a href="http://www.red-gate.com/"&gt;Reg Gate&lt;/a&gt; in continuing his great work.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52683" width="1" height="1"&gt;</description></item><item><title>Screencast: Configuring WCF services with endpoints</title><link>http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/21/screencast-configuring-wcf-services-with-endpoints.aspx</link><pubDate>Thu, 21 Aug 2008 18:28:54 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52664</guid><dc:creator>Aaron Skonnard</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/aaron/rsscomments.aspx?PostID=52664</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/21/screencast-configuring-wcf-services-with-endpoints.aspx#comments</comments><description>&lt;p&gt;As &lt;a href="http://blogs.msdn.com/endpoint/archive/2008/08/20/screencast-configuring-services-with-endpoints.aspx"&gt;Cliff mentioned&lt;/a&gt;, the second installment in the &lt;a href="http://channel9.msdn.com/posts/cliff.simpkins/"&gt;WCF/WF Developer Screencast Series&lt;/a&gt; just went live. &lt;/p&gt; &lt;p&gt;This one is called &lt;a href="http://channel9.msdn.com/posts/cliff.simpkins/Endpoint-Screencasts-Configuring-Services-with-Endpoints/"&gt;Configuring WCF services with endpoints&lt;/a&gt;. In this screencast, I build on &lt;a href="http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/21/screencast-creating-your-first-wcf-service.aspx"&gt;the service I showed you how to create last week&lt;/a&gt; and show you to configure it with different endpoints -- you&amp;#39;ll learn about addresses, bindings, and contracts -- and you&amp;#39;ll see how to use the WCF Service Configuration Editor to create/modify different endpoint configurations.&lt;/p&gt; &lt;p style="text-align:center;"&gt;&lt;a href="http://channel9.msdn.com/posts/cliff.simpkins/Endpoint-Screencasts-Configuring-Services-with-Endpoints/"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="154" alt="Ch9-SC-002_6" src="http://www.pluralsight.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/aaron/Ch9SC002_5F00_6.jpg" width="204" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&lt;em&gt;Previous Screencasts (&lt;a href="http://www.pluralsight.com/community/blogs/aaron/rss.aspx?Tags=Screencasts&amp;amp;AndTags=1"&gt;RSS for all posts in the series&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/21/screencast-creating-your-first-wcf-service.aspx"&gt;Creating your first WCF service&lt;/a&gt; &lt;/li&gt;&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52664" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/aaron/archive/tags/Screencasts/default.aspx">Screencasts</category></item><item><title>Screencast: Creating your first WCF service</title><link>http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/21/screencast-creating-your-first-wcf-service.aspx</link><pubDate>Thu, 21 Aug 2008 18:28:11 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52662</guid><dc:creator>Aaron Skonnard</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/aaron/rsscomments.aspx?PostID=52662</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/21/screencast-creating-your-first-wcf-service.aspx#comments</comments><description>&lt;p&gt;I &lt;a href="http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/19/pluralsight-s-wcf-wf-developer-screencast-series.aspx"&gt;announced earlier this week&lt;/a&gt; that we&amp;#39;ve joined forces with the WCF/WF teams at Microsoft to produce a &lt;a href="http://channel9.msdn.com/posts/cliff.simpkins/"&gt;weekly screencast&lt;/a&gt; on ramping-up with these .NET 3.0 technologies. This is the first installment in the &lt;a href="http://channel9.msdn.com/posts/cliff.simpkins/"&gt;series&lt;/a&gt;, entitled &lt;a href="http://channel9.msdn.com/posts/cliff.simpkins/Endpoint-Screencasts-Creating-Your-First-WCF-Service/"&gt;Creating your first WCF service in Visual Studio 2008&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;This short video guides you through how to create your first WCF Service from scratch in VS2008 - defining a data contract, a service contract, and testing/hosting the service using the new built-in WCF tools found in VS2008. &lt;/p&gt; &lt;p style="text-align:center;"&gt;&lt;a href="http://channel9.msdn.com/posts/cliff.simpkins/Endpoint-Screencasts-Creating-Your-First-WCF-Service/"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="154" alt="EndpointScreenCastCreatingFirstWcfServiceVS2008_large_ch9_3" src="http://www.pluralsight.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/aaron/EndpointScreenCastCreatingFirstWcfServiceVS2008_5F00_large_5F00_ch9_5F00_3_5F00_3.jpg" width="204" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Note: I want each of these screencasts to have a unique URI, hence the separate post. Apologies if you&amp;#39;ve already seen this clip.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52662" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/aaron/archive/tags/Screencasts/default.aspx">Screencasts</category></item><item><title>Pluralsight's WCF/WF Developer Screencast Series</title><link>http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/19/pluralsight-s-wcf-wf-developer-screencast-series.aspx</link><pubDate>Tue, 19 Aug 2008 23:44:52 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52609</guid><dc:creator>Aaron Skonnard</dc:creator><slash:comments>8</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/aaron/rsscomments.aspx?PostID=52609</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/19/pluralsight-s-wcf-wf-developer-screencast-series.aspx#comments</comments><description>&lt;p&gt;Pluralsight has joined forces with the WCF/WF teams at Microsoft to deliver a series of short videos that illustrate how to get started using WCF/WF in your applications. The videos will be &lt;a href="http://channel9.msdn.com/Media/Screencasts/"&gt;hosted on Channel9 within the Screencasts section&lt;/a&gt;, and they&amp;#39;ll be highlighted on &lt;a href="http://blogs.msdn.com/endpoint/default.aspx"&gt;The .NET Endpoint Team Blog&lt;/a&gt; and the MSDN Dev Centers for &lt;a href="http://msdn.microsoft.com/en-us/netframework/aa663324.aspx"&gt;WCF&lt;/a&gt; &amp;amp; &lt;a href="http://msdn.microsoft.com/en-us/netframework/aa663328.aspx"&gt;WF&lt;/a&gt;. These videos provide 100-200 level content intended for folks new to the technology or those looking for quick tutorials on how to perform common tasks within each framework. &lt;/p&gt; &lt;p&gt;Cliff Simpkins &lt;a href="http://blogs.msdn.com/endpoint/archive/2008/08/13/screencast-creating-your-first-wcf-service.aspx"&gt;announced the first video in the WCF series&lt;/a&gt; last week -- you can find it &lt;a href="http://channel9.msdn.com/posts/cliff.simpkins/Endpoint-Screencasts-Creating-Your-First-WCF-Service/"&gt;over here on Channel9&lt;/a&gt;. It&amp;#39;s called &lt;em&gt;Creating Your First WCF Service&lt;/em&gt;. This short video guides you through how to create your first WCF Service from scratch in VS2008 - defining a data contract, a service contract, and testing/hosting the service using the new built-in WCF tools found in VS2008. &lt;/p&gt; &lt;p&gt;A new video will be posted every week in the series...so &lt;a href="http://channel9.msdn.com/posts/cliff.simpkins/"&gt;check back on Channel9&lt;/a&gt; if you&amp;#39;re interested! And if you like what you see, you should also check out &lt;a href="http://www.pluralsight.com/main/olt/courses.aspx"&gt;Pluralsight&amp;#39;s new online training system&lt;/a&gt; that is currently in beta at the moment. You&amp;#39;ll be hearing more about this over the next few months but if you&amp;#39;re interested in participating in our early-adopter program, shoot me an email.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52609" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/aaron/archive/tags/Screencasts/default.aspx">Screencasts</category></item><item><title>Programming the MetaWeblog API in .NET/C#</title><link>http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/19/programming-the-metaweblog-api-in-net-c.aspx</link><pubDate>Tue, 19 Aug 2008 23:09:10 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:52607</guid><dc:creator>Aaron Skonnard</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/aaron/rsscomments.aspx?PostID=52607</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/aaron/archive/2008/08/19/programming-the-metaweblog-api-in-net-c.aspx#comments</comments><description>&lt;p&gt;Most modern blogging engines support the MetaWeblog API, which was &lt;a href="http://msdn.microsoft.com/en-us/library/bb259702.aspx"&gt;defined by XML-RPC.com&lt;/a&gt; many years ago.&amp;nbsp; It&amp;#39;s become one of the most popular API&amp;#39;s for programmatically interacting with blogs because of its simplicity. Even Microsoft&amp;#39;s Windows Live Spaces &lt;a href="http://msdn.microsoft.com/en-us/library/bb259702.aspx"&gt;provides support for it&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;I wanted to use this API recently to interact with our &lt;a href="http://communityserver.com/"&gt;Community Server&lt;/a&gt; implementation so I started searching around for client-side implementations that would be easy to program in C#. I was surprised that I couldn&amp;#39;t find a mainstream implementation readily available. So I followed &lt;a href="http://msdn.microsoft.com/en-us/library/aa905670.aspx"&gt;the example on MSDN&lt;/a&gt; and built my own MetaWeblog library in C# on top of Cook Computing&amp;#39;s &lt;a href="http://www.xml-rpc.net/"&gt;XML-RPC.NET library&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;Here&amp;#39;s what my MetaWeblogClient class looks like (truncated for brevity):&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;public class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;MetaWeblogClient &lt;/span&gt;: &lt;span style="color:#2b91af;"&gt;XmlRpcClientProtocol
&lt;/span&gt;{
&lt;span style="color:gray;"&gt;    &lt;/span&gt;[&lt;span style="color:#2b91af;"&gt;XmlRpcMethod&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;metaWeblog.getRecentPosts&amp;quot;&lt;/span&gt;)]
    &lt;span style="color:blue;"&gt;public &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Post&lt;/span&gt;[] getRecentPosts(&lt;span style="color:blue;"&gt;string &lt;/span&gt;blogid, &lt;span style="color:blue;"&gt;string &lt;/span&gt;username, &lt;span style="color:blue;"&gt;string &lt;/span&gt;password, &lt;span style="color:blue;"&gt;int &lt;/span&gt;numberOfPosts)
    {
        &lt;span style="color:blue;"&gt;return &lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;Post&lt;/span&gt;[])&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Invoke(&lt;span style="color:#a31515;"&gt;&amp;quot;getRecentPosts&amp;quot;&lt;/span&gt;, &lt;br /&gt;            &lt;span style="color:blue;"&gt;new object&lt;/span&gt;[] { blogid, username, password, numberOfPosts });
    }

&lt;span style="color:gray;"&gt;    &lt;/span&gt;[&lt;span style="color:#2b91af;"&gt;XmlRpcMethod&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;metaWeblog.newPost&amp;quot;&lt;/span&gt;)]
    &lt;span style="color:blue;"&gt;public string &lt;/span&gt;newPost(&lt;span style="color:blue;"&gt;string &lt;/span&gt;blogid, &lt;span style="color:blue;"&gt;string &lt;/span&gt;username, &lt;span style="color:blue;"&gt;string &lt;/span&gt;password, &lt;span style="color:#2b91af;"&gt;Post &lt;/span&gt;content, &lt;span style="color:blue;"&gt;bool &lt;/span&gt;publish)
    {

        &lt;span style="color:blue;"&gt;return &lt;/span&gt;(&lt;span style="color:blue;"&gt;string&lt;/span&gt;)&lt;span style="color:blue;"&gt;this&lt;/span&gt;.Invoke(&lt;span style="color:#a31515;"&gt;&amp;quot;newPost&amp;quot;&lt;/span&gt;, &lt;br /&gt;            &lt;span style="color:blue;"&gt;new object&lt;/span&gt;[] { blogid, username, password, content, publish });
    }&lt;br /&gt;    ...&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;With this class, you can simply make method calls like getRecentPosts, newPost, editPost, etc to interact with any blog that supports the MetaWeblog API. You will need to specify that URL to the MetaWeblog endpoint prior to making those method calls. Here&amp;#39;s an example:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;class &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Program
&lt;/span&gt;{
    &lt;span style="color:blue;"&gt;static void &lt;/span&gt;Main(&lt;span style="color:blue;"&gt;string&lt;/span&gt;[] args)
    {
        &lt;span style="color:#2b91af;"&gt;MetaWeblogClient &lt;/span&gt;blog = &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;MetaWeblogClient&lt;/span&gt;();
        blog.Url = &lt;span style="color:#a31515;"&gt;&amp;quot;http://www.pluralsight.com/community/blogs/metablog.ashx&amp;quot;&lt;/span&gt;;

        &lt;span style="color:green;"&gt;// here&amp;#39;s how you post a new entry...
        &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Post &lt;/span&gt;newPost = &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Post&lt;/span&gt;();
        newPost.dateCreated = &lt;span style="color:#2b91af;"&gt;DateTime&lt;/span&gt;.Now;
        newPost.title = &lt;span style="color:#a31515;"&gt;&amp;quot;Test post from Metablog Api&amp;quot;&lt;/span&gt;;
        newPost.description = &lt;span style="color:#a31515;"&gt;&amp;quot;This is the body of the post&amp;quot;&lt;/span&gt;;
        newPost.categories = &lt;span style="color:blue;"&gt;new string&lt;/span&gt;[] { &lt;span style="color:#a31515;"&gt;&amp;quot;WCF&amp;quot;, &amp;quot;WF&amp;quot; &lt;/span&gt;};
        blog.newPost(&lt;span style="color:#a31515;"&gt;&amp;quot;blogid&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;username&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;password&amp;quot;&lt;/span&gt;, newPost, &lt;span style="color:blue;"&gt;true&lt;/span&gt;);

        &lt;span style="color:green;"&gt;// here&amp;#39;s how you retrieve the most recent entries...
        &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;Post&lt;/span&gt;[] posts = blog.getRecentPosts(&lt;span style="color:#a31515;"&gt;&amp;quot;blogid&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;username&amp;quot;&lt;/span&gt;, &lt;span style="color:#a31515;"&gt;&amp;quot;password&amp;quot;&lt;/span&gt;, 5);
        &lt;span style="color:blue;"&gt;foreach &lt;/span&gt;(&lt;span style="color:#2b91af;"&gt;Post &lt;/span&gt;post &lt;span style="color:blue;"&gt;in &lt;/span&gt;posts)
            &lt;span style="color:#2b91af;"&gt;Console&lt;/span&gt;.WriteLine(post.title);
    }
}&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;The code turns out to be wonderfully simple. So if you find yourself in the same boat as me, looking for a MetaWeblog C# implementation, feel free to &lt;a href="http://alt.pluralsight.com/aaron/bits/pluralsight.metaweblog.zip"&gt;download my library here&lt;/a&gt;. Hopefully it will save you a little bit of time! &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=52607" width="1" height="1"&gt;</description></item><item><title>My latest article on BizTalk Services</title><link>http://www.pluralsight.com/community/blogs/aaron/archive/2008/05/28/51061.aspx</link><pubDate>Wed, 28 May 2008 16:24:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:51061</guid><dc:creator>Aaron Skonnard</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/aaron/rsscomments.aspx?PostID=51061</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/aaron/archive/2008/05/28/51061.aspx#comments</comments><description>&lt;P&gt;&lt;A href="http://www.pluralsight.com/blogs/jfland/default.aspx"&gt;Jon Flanders&lt;/A&gt; and I coauthored an article on BizTalk Services that &lt;A href="http://msdn.microsoft.com/en-us/magazine/cc546613.aspx"&gt;just went live on the MSDN Magazine web site&lt;/A&gt;. We begin the article by discussing ESB's and the trends towards SaaS, and then we describe how BizTalk Services embodies the best of these different worlds through what Microsoft likes to call the &lt;EM&gt;Internet Service Bus &lt;/EM&gt;(ISB). Then we show you&amp;nbsp;how to begin using BizTalk Services within your WCF applications through the new RelayBinding.&lt;/P&gt;
&lt;P&gt;If you haven't touched it yet, there's plenty of sample code within the article to help you get started with BizTalk Services on your own. Simply browse to &lt;A href="http://labs.biztalk.net"&gt;http://labs.biztalk.net&lt;/A&gt;, create your own user account, download/install the SDK, and you'll be good to go. Enjoy.&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=51061" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/aaron/archive/tags/XML_2F00_WS/default.aspx">XML/WS</category><category domain="http://www.pluralsight.com/community/blogs/aaron/archive/tags/Indigo/default.aspx">Indigo</category></item><item><title>Double Feature: WCF + WF</title><link>http://www.pluralsight.com/community/blogs/aaron/archive/2008/05/23/51042.aspx</link><pubDate>Fri, 23 May 2008 15:22:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:51042</guid><dc:creator>Aaron Skonnard</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/aaron/rsscomments.aspx?PostID=51042</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/aaron/archive/2008/05/23/51042.aspx#comments</comments><description>&lt;P&gt;We still have a few seats left for our upcoming &lt;A href="https://www.pluralsight.com/courses/DoubleFeatureWCFWF.aspx"&gt;Double Feature: WCF + WF&lt;/A&gt; events. For those new to our Double Feature offerings, the concept is simple: we cover almost two complete 4-day courses (&lt;A href="https://www.pluralsight.com/courses/AppliedWCF.aspx"&gt;WCF&lt;/A&gt; + &lt;A href="https://www.pluralsight.com/courses/AppliedWF.aspx"&gt;WF&lt;/A&gt;) in one extended hours 5-day week. We call it the firehose methodology. &lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://pluralsight.com/aaron/images/DoubleFeature.jpg"&gt;&lt;/P&gt;
&lt;P&gt;If you're looking to ramp-up on both of these emerging Connected Systems technologies in the most efficient way possible, &lt;A href="https://www.pluralsight.com/courses/DoubleFeatureWCFWF.aspx"&gt;take a look at this offering&lt;/A&gt;. It's a great way to maximize the ROI on your limited training/travel dollars, especially in today's economy.&lt;/P&gt;
&lt;P&gt;The next event is in Irvine on 6/16. If that doesn't work for you, we're also holding one in London on 7/14, another in Chicago on 8/4, and another in Waltham on 9/22. You can &lt;A href="https://www.pluralsight.com/courses/DoubleFeatureWCFWF.aspx"&gt;save yourself a seat right now&lt;/A&gt; without any obligation (simply click &amp;#8220;Save a Seat&amp;#8220; instead of &amp;#8220;Register Now&amp;#8220;).&lt;/P&gt;
&lt;P&gt;I will be teaching the Irvine course with &lt;A href="http://www.pluralsight.com/jfland.aspx"&gt;Jon Flanders&lt;/A&gt; and Chicago with &lt;A href="http://www.pluralsight.com/matt.aspx"&gt;Matt Milner&lt;/A&gt;.&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=51042" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/aaron/archive/tags/Pluralsight/default.aspx">Pluralsight</category></item><item><title>Disabling WcfSvcHost.exe when debugging projects</title><link>http://www.pluralsight.com/community/blogs/aaron/archive/2008/05/21/51017.aspx</link><pubDate>Wed, 21 May 2008 13:17:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:51017</guid><dc:creator>Aaron Skonnard</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/aaron/rsscomments.aspx?PostID=51017</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/aaron/archive/2008/05/21/51017.aspx#comments</comments><description>&lt;P&gt;One of the &lt;A href="http://www.pluralsight.com/blogs/aaron/archive/2008/05/12/50909.aspx"&gt;many new WCF features in Visual Studio 2008 SP1&lt;/A&gt; is a mechanism to control whether the built-in WCF test host application (WcfSvcHost.exe) should automatically launch when debugging other projects in a solution. Prior to this release, there was no way to control this without disabling WcfSvcHost.exe &lt;A href="http://blogs.msdn.com/drnick/archive/2008/05/12/disabling-the-visual-studio-service-host.aspx"&gt;by removing the special ProjectTypeGuid that controls this feature from the .csproj file&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Now, you can simply right click on your WCF Service Library and select Properties. Then in the project properties area you should find a tab called &lt;EM&gt;WCF Options, &lt;/EM&gt;which looks like this:&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://pluralsight.com/aaron/images/StartWcfServiceHost.jpg"&gt;&lt;/P&gt;
&lt;P&gt;Simply &lt;EM&gt;uncheck &lt;/EM&gt;the box to disable the WcfSvcHost.exe from starting when debugging other projects within your solution (such as your own custom host application). However, if you attempt debug the WCF Service Library directly (as the startup project), the WcfSvcHost.exe will still launch in that case.&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=51017" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/aaron/archive/tags/XML_2F00_WS/default.aspx">XML/WS</category><category domain="http://www.pluralsight.com/community/blogs/aaron/archive/tags/Indigo/default.aspx">Indigo</category></item><item><title>XML Schema Explorer in Visual Studio 2008 SP1</title><link>http://www.pluralsight.com/community/blogs/aaron/archive/2008/05/20/51007.aspx</link><pubDate>Tue, 20 May 2008 19:34:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:51007</guid><dc:creator>Aaron Skonnard</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/aaron/rsscomments.aspx?PostID=51007</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/aaron/archive/2008/05/20/51007.aspx#comments</comments><description>&lt;P&gt;In case you didn't notice, the XML Schema Designer that &lt;A href="http://blogs.msdn.com/xmlteam/archive/2007/08/27/announcing-ctp1-of-the-xml-schema-designer.aspx"&gt;was made available as a downloadable CTP back in August 2007&lt;/A&gt; made it into Visual Studio 2008 SP1. &lt;/P&gt;
&lt;P&gt;&lt;IMG src="/aaron/images/VS2008SchemaExplorer.jpg"&gt;&lt;/P&gt;
&lt;P&gt;It's now called the XML Schema Explorer. You can read more about it &lt;A href="http://blogs.msdn.com/xmlteam/archive/2008/05/12/new-xsd-functionality-in-visual-studio-2008-sp1-beta-1.aspx"&gt;here&lt;/A&gt;.&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=51007" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/aaron/archive/tags/XML_2F00_WS/default.aspx">XML/WS</category></item><item><title>The Ogden Marathon</title><link>http://www.pluralsight.com/community/blogs/aaron/archive/2008/05/19/50986.aspx</link><pubDate>Mon, 19 May 2008 16:50:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:50986</guid><dc:creator>Aaron Skonnard</dc:creator><slash:comments>10</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/aaron/rsscomments.aspx?PostID=50986</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/aaron/archive/2008/05/19/50986.aspx#comments</comments><description>&lt;P&gt;Well, &lt;A href="http://www.pluralsight.com/blogs/aaron/archive/2008/01/16/49938.aspx"&gt;like I mentioned back in January&lt;/A&gt;, one of my major personal goals for this year has been to complete my first marathon. I started training back in December and followed &lt;A href="http://www.halhigdon.com/marathon/Mar00novice.htm"&gt;Hal Hidgon's novice training program&lt;/A&gt;. I only missed a few runs here and there but was able to stay pretty consistent throughout the 18 week program. Sometimes it got a little tricky while traveling but thanks to the &lt;A href="http://www.gmap-pedometer.com/"&gt;GMaps Pedometer&lt;/A&gt;, &lt;A href="http://www.logyourrun.com/"&gt;LogYourRun.com&lt;/A&gt;, and my &lt;A href="http://www.amazon.com/Garmin-Forerunner-Wrist-Mounted-Fitness-Computer/dp/B000CSWCQA"&gt;Garmin Forerunner 305&lt;/A&gt;, I was able to figure out decent routes on the fly.&lt;/P&gt;
&lt;P&gt;I trained for the &lt;A href="http://www.ogdenmarathon.com/"&gt;Ogden Marathon&lt;/A&gt;, which was held this past Saturday. We had to get up at 3:45am to drive into downtown Ogden to catch the buses at 5:00am that shuttled us up the canyon and into the mountains. We arrived at the start line around 6:00am where we found some bon fires and about 50 green porta-potties lined up in a row. There were about 2000 runners, which is max-capacity for this marathon. &lt;/P&gt;
&lt;P&gt;My wife and I found our friends we'd been training with and joked around until the start of the race, trying to reduce the nerves as much as possible, hitting the porta-potties occassionally, while trying to stay warm. It was very cold up in the starting area -- cold enough to see our breath. But we also heard we we're going to have record-breaking heat later in the day, somewhere in the 80-90 F range.&lt;/P&gt;
&lt;P&gt;After a short motivational speach by &lt;A href="http://www.jeffgalloway.com/"&gt;Jeff Galloway&lt;/A&gt;,&amp;nbsp;the race started&amp;nbsp;promptly at 7:00am and&amp;nbsp;there was no turning back.&amp;nbsp;The first 8 miles of the race was mostly downhill,&amp;nbsp;running down a&amp;nbsp;small canyon into the&amp;nbsp;valley of &lt;A href="http://www.fs.fed.us/r4/wcnf/recreation/pineview.shtml"&gt;Pineview Reservoire&lt;/A&gt;. The next 10 miles required us to run around the reservoire. There were several long stretches that never seemed to end and only one hill worth mentioning. The route took us to the top of Ogden Canyon, where we&amp;nbsp;began our decent&amp;nbsp;into downtown Ogden. This final canyon decent was about 6 miles long (from miles 17-23), at which point we got on the &lt;A href="http://www.weberpathways.org/projects.asp"&gt;Ogden River Parkway&lt;/A&gt; running path for the next few miles until we emerged onto Grant Street and could see the finish line a mile down the road. So the course was mostly downhill -- and is generally considered easy -- but it didn't turn out that way for me.&lt;/P&gt;
&lt;P&gt;There was a great deal of excitement, energy, and adrenaline in the air when the race began. So like an inexperienced first-time-marathoner I started out &lt;EM&gt;way &lt;/EM&gt;too fast. My normal long run pace is a little under 9:00/mile and I ran the first 3-4 miles at a 7:30/mile pace. I knew I was probably running a little too fast for my own good so I slowed it down to an 8:00/mile pace, which I held for most of the first half. At mile 13, my time was about 1:48 so I was totally on pace to crush the 4:00 mark, which was my main time goal.&lt;/P&gt;
&lt;P&gt;Going out too fast was my first mistake but not the only one. I also ate and drank too much early in the race. I had a banana, a gatoraide, and a &lt;A href="http://www.gusports.com/"&gt;Gu&lt;/A&gt; before the race began. Then at the first few aid stations I ate whatever they gave me. I think this amounted to a few more cups of Poweraide, another Gu, and an orange slice. In the end, it was too much stuff, and I started feeling sick to my stomach. So for like the next 10 miles or so all I could handle taking was water, and I could feel my energy levels depleting. At mile 13, it was also starting to get hot, much hotter than the weather we were used to training in.&lt;/P&gt;
&lt;P&gt;I hit my first major wall around mile 15 and knew I was in trouble. After the half-way mark, I slowed my pace down to my normal 9:00/mile pace but after mile 15, I was having trouble even maintaining that pace. I still felt a bit nauseus but I also knew I had to get more carbs in my body or I would never make it. So I put some more Gu down and took some fruit at the next aid station and did my best to keep it in. I also started using Jeff Galloway's run/walk technique at this point where I'd run for a mile and then walk for 30 seconds. This helped conserve what little energy I had left until I got to mile 20, where I hit an even bigger wall. &lt;/P&gt;
&lt;P&gt;After mile 20, I felt like my body was completely depleted and wasn't sure if I'd be able to propel myself to the finish line. When you start feeling like this, your mind starts playing funny games on you. It's weird. And to top it off, all the running downhill started to hurt my right hip and knee, so I was dealing with some occasional sharp pains, which forced me to stop a stretch periodically. My intervals between run/walk started evening out, and my overall pace slowed down dramatically...closer to a 12:00/mile pace, but that didn't bother me any more, because at this point my newly revised goal was to simply &lt;EM&gt;finish&lt;/EM&gt;.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;When I finally emerged into downtown Ogden and saw the finish line, all I could think about was collapsing on the ground. When I got close to the end I saw my family and my son Michael joined me to the finish line. It was an amazing feeling to cross the finish line after such a long internal battle.&lt;/P&gt;
&lt;P&gt;My final time was 4:19.&amp;nbsp;So I didn't reach my 4:00 goal but I was &lt;EM&gt;very happy &lt;/EM&gt;to finish. I placed #826, which means that there were more people behind me than in front of me so I felt good about that. ;-)&lt;/P&gt;
&lt;P&gt;The heat definitely tooks its toll on me and many of the other runners. Over the last 5-6 miles, it was so hot that several runners collapsed off to the side of the course. I saw 3 groups of policemen trying to revive runners along the way, so I was glad to still have been dragging myself along to some degree. Before the race, Jeff Galloway said that when the temperature is over 60 F, most runners slow down about 30-45 sec per mile. Everyone I talked to after the race, ran somewhere between 20-30 minutes slower than they wanted to so Jeff's estimate was pretty close given my limited sampling. &lt;/P&gt;
&lt;P&gt;But heat aside, I think my other two mistakes of 1) going out too fast, and 2) eating too much early on had already done me in. I have much more respect for the race now, the difficulty level, and the importance of training properly and running the race smartly. If there's one thing I learned, it's &lt;STRONG&gt;the importance of running the race just like the long runs in training&lt;/STRONG&gt;. There were some amazing athletes out there zooming by me with plenty of energy left at the end of the race and I couldn't help but admire them.&lt;/P&gt;
&lt;P&gt;In the end, it was a lot of pain but I'm glad I did it. Although I didn't win any prize money, I did lose 25 lbs, which was the real purpose behind the goal. I feel much healthier now than I have in a long time.&lt;/P&gt;
&lt;P&gt;Now the million dollar question: will I ever do another one?&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=50986" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/aaron/archive/tags/Personal/default.aspx">Personal</category></item><item><title>DataContracts and object references</title><link>http://www.pluralsight.com/community/blogs/aaron/archive/2008/05/14/50943.aspx</link><pubDate>Wed, 14 May 2008 15:44:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:50943</guid><dc:creator>Aaron Skonnard</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/aaron/rsscomments.aspx?PostID=50943</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/aaron/archive/2008/05/14/50943.aspx#comments</comments><description>&lt;P&gt;Another new WCF feature that's part of .NET 3.5 SP1 has to do with better support for object references. DataContractSerializer has always supported serializing object references and dealing with graphs, including cycles, and not just simple trees. But&amp;nbsp;doing so is not the default behavior -- you have to tell DataContractSerializer that you want it to preserve object references when you instantiate it.&lt;/P&gt;
&lt;P&gt;Let's look at a simple example. Supposed that you have the following cyclic object graph (I'm assuming the same Person type that I used in my &lt;A href="http://www.pluralsight.com/blogs/aaron/archive/2008/05/13/50934.aspx"&gt;previous post&lt;/A&gt;):&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #2b91af; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Person&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; p = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Person&lt;/SPAN&gt;();&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;p.Id = &lt;SPAN style="COLOR: #a31515"&gt;"123"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;p.Name = &lt;SPAN style="COLOR: #a31515"&gt;"Aaron"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;p.Spouse = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Person&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;p.Spouse.Id = &lt;SPAN style="COLOR: #a31515"&gt;"456"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;p.Spouse.Name = &lt;SPAN style="COLOR: #a31515"&gt;"Monica"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;p.Spouse.Spouse = p;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;...&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;And now let's supposed that you want to serialize it. If you create the DataContractSerializer using the default constructor, it will throw an exception when it identifies the cycle during serialization. However, you can tell DataContractSerializer to preserve object references using one of the other constructors:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #2b91af; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;DataContractSerializer&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; dcs = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;DataContractSerializer&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;typeof&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #2b91af"&gt;Person&lt;/SPAN&gt;),&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt;.MaxValue, &lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt; &lt;SPAN style="COLOR: green"&gt;/* preserve object refs */&lt;/SPAN&gt;, &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;using&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; (&lt;SPAN style="COLOR: #2b91af"&gt;FileStream&lt;/SPAN&gt; fs = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;FileStream&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"person.xml"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #2b91af"&gt;FileMode&lt;/SPAN&gt;.Create))&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;dcs.WriteObject(fs, p);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;
&lt;P&gt;The resulting person.xml file now looks like this:&lt;/P&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Person&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;z:Id&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;1&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;http://schemas.datacontract.org/2004/07/SerializationSp1&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;xmlns:i&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;xmlns:z&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;http://schemas.microsoft.com/2003/10/Serialization/&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Id&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;z:Id&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;2&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;123&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Id&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;z:Id&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;3&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;Aaron&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Spouse&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;z:Id&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;4&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Id&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;z:Id&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;5&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;456&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Id&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;z:Id&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;6&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;/SPAN&gt;Monica&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Spouse&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;z:Ref&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;1&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;i:nil&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Spouse&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Person&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;Notice that each reference type has been given an &amp;#8220;Id&amp;#8221; attribute and the nested Spouse reference refers back to the containing Person via the Ref attribute, thereby preserving the references within the XML.&lt;/P&gt;
&lt;P&gt;Now, as of SP1, the definitions for the Id/Ref attributes are now part of the generated schema. If you run SvcUtil.exe /dconly over the assembly containing Person,&amp;nbsp;it will produce a schema file for the &amp;#8220;http://schemas.microsoft.com/2003/10/Serialization&amp;#8221; namespace. And within that schema, you'll find the following definitions for Id/Ref, which are defined as ID/IDREF types:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;...&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;xs:attribute&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;name&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;Id&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;type&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;xs:ID&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;xs:attribute&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;name&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;Ref&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;type&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;xs:IDREF&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; /&amp;gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="COLOR: blue"&gt;...&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;ID and IDREF are standard DTD/XSD types that are widely supported across platforms.&lt;/P&gt;
&lt;P&gt;One problem with employing this object-reference-preservation technique is that you don't have direct control over how the DataContractSerializer is constructed when defining your WCF services. You can, however, implement a behavior that intercepts the standard serializer creation process so that you can enable this feature. Sowmy provides a complete example of how to accomplish this &lt;A href="http://blogs.msdn.com/sowmy/archive/2006/03/26/561188.aspx"&gt;over on his blog&lt;/A&gt;.&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=50943" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/aaron/archive/tags/Indigo/default.aspx">Indigo</category></item><item><title>DataContracts without attributes (POCO support) in .NET 3.5 SP1</title><link>http://www.pluralsight.com/community/blogs/aaron/archive/2008/05/13/50934.aspx</link><pubDate>Tue, 13 May 2008 20:50:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:50934</guid><dc:creator>Aaron Skonnard</dc:creator><slash:comments>13</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/aaron/rsscomments.aspx?PostID=50934</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/aaron/archive/2008/05/13/50934.aspx#comments</comments><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;&lt;BR&gt;One of the &lt;/FONT&gt;&lt;A href="http://www.pluralsight.com/blogs/aaron/archive/2008/05/12/50909.aspx"&gt;&lt;FONT face=Calibri&gt;new WCF features in .NET 3.5 SP1&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt; is that DataContractSerializer now supports serializing types that aren&amp;#8217;t annotated with any serialization attributes like [DataContract] or [Serializable].&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;If you were using DataContractSerializer prior to SP1, you had to follow &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/sowmy/archive/2006/02/22/536747.aspx"&gt;&lt;FONT face=Calibri&gt;the rules outline by Sowmy here&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt;. These rules illustrate that for custom classes you have a few choices. You can annotate the class with [DataContract] and [DataMember] to define an attribute-based mapping or implement IXmlSerializable to define a custom mapping. Or you can annotate the class with [Serializable] to automatically map all fields (like with .NET Remoting) or implement ISerializable to take things into your own hands (assuming IXmlSerializable wasn't used). &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;However, as you can see from &lt;/FONT&gt;&lt;A href="http://blogs.msdn.com/sowmy/archive/2006/02/22/536747.aspx"&gt;&lt;FONT face=Calibri&gt;the rules&lt;/FONT&gt;&lt;/A&gt;&lt;FONT face=Calibri&gt;, there is no allowance for types that haven&amp;#8217;t been annotated with one of these serialization attributes or that implement one of the serialization-related interfaces, or in other words, you can't serialize &lt;EM&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;&amp;#8220;plain old C# objects&amp;#8220;&lt;/SPAN&gt;&lt;/EM&gt; (&lt;EM&gt;&lt;SPAN style="FONT-FAMILY: 'Calibri','sans-serif'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin"&gt;POCO&lt;/SPAN&gt;&lt;/EM&gt; for short). &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;The support for [Serializable] provided a nice migration path for traditional .NET Remoting types, which was nice, but the lack of support for POCO types meant you couldn&amp;#8217;t move your ASMX types over to the DataContractSerializer without sprinkling a bunch of new attributes on them. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;With .NET 3.5 SP1 you can serialize any C# object even if it doesn&amp;#8217;t come with any serialization attributes. For example, the following Person type is now serializable by default:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;namespace&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; SerializationSp1&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Person&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; id;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; Id { &lt;SPAN style="COLOR: blue"&gt;get&lt;/SPAN&gt; { &lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; id; } &lt;SPAN style="COLOR: blue"&gt;set&lt;/SPAN&gt; { id = &lt;SPAN style="COLOR: blue"&gt;value&lt;/SPAN&gt;; } }&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; Name;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Person&lt;/SPAN&gt; Spouse;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;...&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;For POCO types, DataContractSerializer only includes the public read/write fields and properties into the resulting XML Infoset. So in our example above, the private &amp;#8220;id&amp;#8221; field won&amp;#8217;t make it into the message. Also, these types must have a public default (no argument) constructor in order to be serialized. The Person type above works find because the compiler gives us a public default constructor but if you were to add a non-default constructor, it would no longer be serializable using this approach.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;With this new support, you can use virtually any C# type (with a public default constructor) in your WCF service contracts and you don&amp;#8217;t have to worry about changing the serializer back to XmlSerializer using [XmlSerializerFormat]. For example, the following service contract works as-is in .NET 3.5 SP1:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;[&lt;SPAN style="COLOR: #2b91af"&gt;ServiceContract&lt;/SPAN&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;interface&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;ILookupPerson&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;[&lt;SPAN style="COLOR: #2b91af"&gt;OperationContract&lt;/SPAN&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Person&lt;/SPAN&gt; GetPerson(&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; id);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;Now let&amp;#8217;s take a look at the serialized XML for the Person type shown above. Here&amp;#8217;s a simple console program that uses DataContractSerializer to serialize a Person object:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;class&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Program&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; Main(&lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt;[] args)&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;Person&lt;/SPAN&gt; p = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Person&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;p.Id = &lt;SPAN style="COLOR: #a31515"&gt;"123"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;p.Name = &lt;SPAN style="COLOR: #a31515"&gt;"Aaron"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;p.Spouse = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Person&lt;/SPAN&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;p.Spouse.Id = &lt;SPAN style="COLOR: #a31515"&gt;"456"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;p.Spouse.Name = &lt;SPAN style="COLOR: #a31515"&gt;"Monica"&lt;/SPAN&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;DataContractSerializer&lt;/SPAN&gt; dcs = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;DataContractSerializer&lt;/SPAN&gt;(&lt;SPAN style="COLOR: blue"&gt;typeof&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #2b91af"&gt;Person&lt;/SPAN&gt;));&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;using&lt;/SPAN&gt; (&lt;SPAN style="COLOR: #2b91af"&gt;FileStream&lt;/SPAN&gt; fs = &lt;SPAN style="COLOR: blue"&gt;new&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;FileStream&lt;/SPAN&gt;(&lt;SPAN style="COLOR: #a31515"&gt;"person.xml"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #2b91af"&gt;FileMode&lt;/SPAN&gt;.Create))&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;dcs.WriteObject(fs, p);&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;And here&amp;#8217;s what the resulting person.xml file looks like:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Person&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;http://schemas.datacontract.org/2004/07/SerializationSp1&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;xmlns:i&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Id&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;123&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Id&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Aaron&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Spouse&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Id&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;456&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Id&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Monica&lt;SPAN style="COLOR: blue"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="COLOR: #a31515"&gt;Name&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Spouse&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;i:nil&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;true&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp; &lt;/SPAN&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Spouse&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;lt;/&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Person&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;The mapping algorithm is similar to what&amp;#8217;s used with [DataContract] or [Serializable] &amp;#8211; it uses the type name for the root element name, member names for the local element names, and it orders them alphabetically. It also produces a reasonable XML namespace based on the .NET namespace. The only difference is how it chooses what to put into the message &amp;#8211; in this case it&amp;#8217;s based on the public contract of the type. When you use this approach, you must be happy with the XML that DataContractSerializer gives you. In other words, you can&amp;#8217;t customize the resulting XML in any way. &lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;As soon as you place the [DataContract] attribute on the class, DataContractSerializer will only include fields/properties annotated with [DataMember] once again. For example, suppose I make the following change to the Person type by annotating it with [DataContract]:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;[&lt;SPAN style="COLOR: #2b91af"&gt;DataContract&lt;/SPAN&gt;]&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;SPAN style="COLOR: blue"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Person&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; id;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; Id { &lt;SPAN style="COLOR: blue"&gt;get&lt;/SPAN&gt; { &lt;SPAN style="COLOR: blue"&gt;return&lt;/SPAN&gt; id; } &lt;SPAN style="COLOR: blue"&gt;set&lt;/SPAN&gt; { id = &lt;SPAN style="COLOR: blue"&gt;value&lt;/SPAN&gt;; } }&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: blue"&gt;string&lt;/SPAN&gt; Name;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #2b91af"&gt;Person&lt;/SPAN&gt; Spouse;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt; LINE-HEIGHT: normal; mso-layout-grid-align: none"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;If I run my console program again, the resulting person.xml now looks like this:&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: #a31515; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;Person&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt; &lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: red; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;xmlns&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;=&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: Consolas; mso-bidi-font-family: 'Times New Roman'; mso-no-proof: yes"&gt;"&lt;SPAN style="COLOR: blue"&gt;http://schemas.datacontract.org/2004/07/SerializationSp1&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;BR&gt;&lt;SPAN style="mso-spacerun: yes"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: red"&gt;xmlns:i&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;=&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/SPAN&gt;"&lt;SPAN style="COLOR: blue"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;Notice that none of the fields were serialized because they weren&amp;#8217;t annotated with [DataMember]. Once I applied [DataContract] to Person, DataContractSerializer no longer treated it like a POCO type. The same would hold true if I annotated the type with [Serializable]. If it finds the [Serializable] attribute, it falls back to the [Serializable] mapping and only includes the fields.&lt;SPAN style="FONT-FAMILY: 'Times New Roman','serif'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;To summarize, the new DataContractSerializer provides several different mechanisms for defining the serialization mapping:&lt;SPAN style="FONT-FAMILY: 'Times New Roman','serif'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpFirst style="MARGIN: 0in 0in 0pt 37.5pt; TEXT-INDENT: -19.5pt; mso-list: l0 level1 lfo1; mso-add-space: auto"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri&gt;1.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;Simply rely on the public interface and take the default XML mapping&lt;SPAN style="FONT-FAMILY: 'Times New Roman','serif'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 37.5pt; TEXT-INDENT: -19.5pt; mso-list: l0 level1 lfo1; mso-add-space: auto"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri&gt;2.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;Use [Serializable] to only include fields in the mapping&lt;SPAN style="FONT-FAMILY: 'Times New Roman','serif'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpMiddle style="MARGIN: 0in 0in 0pt 37.5pt; TEXT-INDENT: -19.5pt; mso-list: l0 level1 lfo1; mso-add-space: auto"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri&gt;3.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;Use [DataContract] and [DataMember] and apply some basic customization&lt;SPAN style="FONT-FAMILY: 'Times New Roman','serif'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoListParagraphCxSpLast style="MARGIN: 0in 0in 10pt 37.5pt; TEXT-INDENT: -19.5pt; mso-list: l0 level1 lfo1; mso-add-space: auto"&gt;&lt;SPAN style="mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin"&gt;&lt;SPAN style="mso-list: Ignore"&gt;&lt;FONT face=Calibri&gt;4.&lt;/FONT&gt;&lt;SPAN style="FONT: 7pt 'Times New Roman'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;FONT face=Calibri&gt;Use IXmlSerializable or ISerializable for advanced mapping customization&lt;SPAN style="FONT-FAMILY: 'Times New Roman','serif'; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 10pt"&gt;&lt;FONT face=Calibri&gt;I was actually surprised to learn that they added this feature because it goes against the main reason for the original [DataContract] design (&amp;#8220;boundaries are explicit&amp;#8221;), at least according to the team in early design reviews. I asked for this feature (an implicit mapping) but my request was dismissed for that very reason. Despite whatever principle it may violate, I like it, because it makes it simpler for folks to get started with WCF and it provides an easier migration path for ASMX.&lt;/FONT&gt;&lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=50934" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/aaron/archive/tags/Indigo/default.aspx">Indigo</category></item><item><title>WCF features/improvements in .NET 3.5 SP1 &amp;amp; VS 2008 SP1</title><link>http://www.pluralsight.com/community/blogs/aaron/archive/2008/05/12/50909.aspx</link><pubDate>Mon, 12 May 2008 21:00:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:50909</guid><dc:creator>Aaron Skonnard</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/aaron/rsscomments.aspx?PostID=50909</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/aaron/archive/2008/05/12/50909.aspx#comments</comments><description>&lt;P&gt;&lt;A href="http://weblogs.asp.net/scottgu/default.aspx"&gt;Scott Guthrie&lt;/A&gt; announced the availability of .NET 3.5 SP1 and Visual Studio 2008 SP1 today. If you read &lt;A href="http://weblogs.asp.net/scottgu/archive/2008/05/12/visual-studio-2008-and-net-framework-3-5-service-pack-1-beta.aspx"&gt;his entry&lt;/A&gt;, you'll see this release is packed with new features, many of which revolve around the Ajax, MVC, and ADO.NET improvements they've been working on.&lt;/P&gt;
&lt;P&gt;However, this release also contains some new WCF nuggets including the following:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;New Hosting Wizard for WCF Service projects. 
&lt;LI&gt;Enhancements in Test Client such as support for RM Sessions, Message Contract and Nullable&lt;T&gt; types enables testing of broader set of WCF-based services. 
&lt;LI&gt;Expanding reach of DataContract Serializer by relaxing the need of having [DataContract]/ [DataMember] on types and by supporting an interoperable mechanism for dealing with object references. 
&lt;LI&gt;Improved Partial Trust Debugging Experience with support for Event Log. 
&lt;LI&gt;Support for ADO.NET Entity Framework entities in WCF contracts. 
&lt;LI&gt;Improvements in writing REST based services ranging from easily supporting ServiceDocuments publication and consumption to providing greater control and usability of UriTemplate. 
&lt;LI&gt;Significant performance improvements on large workflow-based projects in Visual Studio. 
&lt;LI&gt;Considerable scalability increases for hosted WCF services in IIS7-integrated mode.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;EM&gt;Update: Steve Maine provides more WCF details &lt;/EM&gt;&lt;A href="http://hyperthink.net/blog/2008/05/12/We+Are+Pleased+To+Bring+You+New+Features+In+NET+35+SP1.aspx"&gt;&lt;EM&gt;in this post&lt;/EM&gt;&lt;/A&gt;&amp;nbsp;&lt;EM&gt;and Omri gives his take &lt;/EM&gt;&lt;A href="https://www.gazitt.com/blog/PermaLink,guid,dd5a7066-d288-48ef-91a8-af895fecbe8c.aspx"&gt;&lt;EM&gt;over here&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;You can read more about this release and grab the bits from &lt;A href="http://msdn.microsoft.com/en-us/vstudio/products/cc533447.aspx"&gt;here&lt;/A&gt;.&lt;FONT face=arial size=2&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=50909" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/aaron/archive/tags/Indigo/default.aspx">Indigo</category></item></channel></rss>