<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-US"><title type="html">Brad Abrams </title><subtitle type="html">Design Guidelines, Managed code and the .NET Framework</subtitle><id>http://blogs.msdn.com/brada/atom.xml</id><link rel="alternate" type="text/html" href="http://blogs.msdn.com/brada/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.msdn.com/brada/atom.xml" /><generator uri="http://communityserver.org" version="2.1.61025.2">Community Server</generator><updated>2009-09-20T09:18:32Z</updated><entry><title>http://silverlight.net/riaservices/ is Live!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/brada/archive/2009/11/07/http-silverlight-net-riaservices-is-live.aspx" /><id>http://blogs.msdn.com/brada/archive/2009/11/07/http-silverlight-net-riaservices-is-live.aspx</id><published>2009-11-08T02:03:03Z</published><updated>2009-11-08T02:03:03Z</updated><content type="html">&lt;p&gt;We have been working for a while to get a community site together where we can aggregate all the great buzz, resources and discussions about .NET RIA Services.&amp;#160;&amp;#160; We hope you enjoy the content we already have up there and help us get more good stuff up there.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://silverlight.net/riaservices/"&gt;http://silverlight.net/riaservices/&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://silverlight.net/riaservices/ "&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/httpsilverlight.netriaservicesisLive_FDD2/image_3.png" width="420" height="345" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9919170" width="1" height="1"&gt;</content><author><name>BradA</name><uri>http://blogs.msdn.com/members/BradA.aspx</uri></author><category term="Silverlight" scheme="http://blogs.msdn.com/brada/archive/tags/Silverlight/default.aspx" /><category term="RIAServices" scheme="http://blogs.msdn.com/brada/archive/tags/RIAServices/default.aspx" /></entry><entry><title>We Need Your Feedback on the Documentation</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/brada/archive/2009/10/30/we-need-your-feedback-on-the-documentation.aspx" /><id>http://blogs.msdn.com/brada/archive/2009/10/30/we-need-your-feedback-on-the-documentation.aspx</id><published>2009-10-30T16:49:25Z</published><updated>2009-10-30T16:49:25Z</updated><content type="html">&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/WeNeedYourFeedbackontheDocumentation_8A23/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; margin: 0px 20px 0px 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/WeNeedYourFeedbackontheDocumentation_8A23/image_thumb.png" width="156" height="96" /&gt;&lt;/a&gt; The doc teams are looking for your feedback on the .NET Framework and Visual Studio docs.&amp;#160; Help us improve the developer documentation by taking the &lt;a href="http://go.microsoft.com/fwlink/?LinkID=102169"&gt;Visual Studio and .NET Framework Content Survey&lt;/a&gt;.&amp;#160; This survey will give us a better understanding of the type of applications you are developing as well as how you use Help and how we can improve it. The survey takes only 10 minutes, and we really appreciate your feedback! Feel free to forward the survey link.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9915350" width="1" height="1"&gt;</content><author><name>BradA</name><uri>http://blogs.msdn.com/members/BradA.aspx</uri></author><category term=".NET Framework" scheme="http://blogs.msdn.com/brada/archive/tags/.NET+Framework/default.aspx" /></entry><entry><title>Lightweight Linq Parser</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/brada/archive/2009/10/28/lightweight-linq-parser.aspx" /><id>http://blogs.msdn.com/brada/archive/2009/10/28/lightweight-linq-parser.aspx</id><published>2009-10-28T19:28:30Z</published><updated>2009-10-28T19:28:30Z</updated><content type="html">&lt;p&gt;&lt;a href="http://blogs.msdn.com/jasonall/"&gt;Jason Allor&lt;/a&gt;, dev manager for my team, recently posted about a cool &lt;a href="http://blogs.msdn.com/jasonall/archive/2009/10/27/linqlite.aspx"&gt;lightweight LINQ parser&lt;/a&gt;.&amp;#160; The idea was to make it much easier to create a LINQ provider over any arbitrary data source (a web service, custom business objects, etc).&amp;#160; This makes it much easier to get all the sorting, paging, filtering benefits of RIA Services for any arbitrary data store.&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;Check it out, and be sure to subscribe to Jason’s blog as I expect he will have more goodies coming in the future! &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/jasonall/archive/2009/10/27/linqlite.aspx"&gt;LinqLite&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9914272" width="1" height="1"&gt;</content><author><name>BradA</name><uri>http://blogs.msdn.com/members/BradA.aspx</uri></author><category term="RIAServices" scheme="http://blogs.msdn.com/brada/archive/tags/RIAServices/default.aspx" /></entry><entry><title>Index for Business Apps Example for Silverlight 3 RTM and .NET RIA Services July Update</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/brada/archive/2009/10/27/index-for-business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update.aspx" /><id>http://blogs.msdn.com/brada/archive/2009/10/27/index-for-business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update.aspx</id><published>2009-10-27T15:46:21Z</published><updated>2009-10-27T15:46:21Z</updated><content type="html">&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Thanks to all of you who asked…&amp;#160; I had to take a sick day today, so this was nice mindless work to get done.&amp;#160;&amp;#160; Hope you enjoy it!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2009/07/10/amazing-business-apps-example-updated-for-silverlight-3-rtm-and-net-ria-services-july-update.aspx"&gt;Part 1: Navigation Basics&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2009/07/11/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-part-1-rich-data-query.aspx"&gt;Part 2: Rich Data Query&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2009/07/13/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-part-3-authentication.aspx"&gt;Part 3: Authentication&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2009/07/14/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-part-4-seo-export-to-excel-and-out-of-browser.aspx"&gt;Part 4: SEO, Export to Excel and Out of Browser&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2009/07/15/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-part-5-astoria-add-reference-and-winforms.aspx"&gt;Part 5: Astoria, Add Service Reference and WinForms&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2009/07/16/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-part-6-data-transfer-objects-dtos.aspx"&gt;Part 6: Data Transfer Objects (DTOs)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2009/07/21/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-part-7-services-based-data-store.aspx"&gt;Part 7: ADO.NET Data Services Based Data Store&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2009/07/17/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-part-8-wcf-based-data-source.aspx"&gt;Part 8: WCF Based Data Source&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2009/07/22/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-part-6-poco-and-authentication-provider.aspx"&gt;Part 9: POCO and Authentication Provider&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2009/07/23/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-part-9-linqtosql.aspx"&gt;Part 10: LinqToSql&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2009/07/24/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-part-11-the-client-only-world.aspx"&gt;Part 11: The Client-Only World&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2009/07/27/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-part-9-dataset.aspx"&gt;Part 12: DataSet&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2009/07/28/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-part-11-the-new-class-library-project.aspx"&gt;Part 13: The New Class Library Project&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2009/07/29/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-part-xx-visual-basic-vb-and-wpf-support.aspx"&gt;Part 14: Visual Basic (VB) and WPF Support&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2009/07/30/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-part-xx-asp-net-mvc.aspx"&gt;Part 15: ASP.NET MVC&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2009/07/31/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-part-xx-exposing-a-wcf-service.aspx"&gt;Part 16: Exposing a WCF Service&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2009/08/03/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-part-xx-evolving-an-application.aspx"&gt;Part 17: Evolving an Application&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2009/08/04/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-part-xx-custom-linq-provider.aspx"&gt;Part 18: Custom Linq Provider&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2009/08/05/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-asp-net-dynamic-data.aspx"&gt;Part 19: ASP.NET Dynamic Data&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2009/08/06/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-part-nhibernate.aspx"&gt;Part 20: NHibernate&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2009/08/10/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-part-hierarchal-data.aspx"&gt;Part 21: Hierarchical Data&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2009/08/11/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-part-22-separate-solution-files.aspx"&gt;Part 22: Separate Solution Files&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2009/08/21/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-part-23-azure.aspx"&gt;Part 23: Azure&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2009/08/24/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-part-24-stored-procedures.aspx"&gt;Part 24: Stored Procedures&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2009/09/07/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-viewmodel.aspx"&gt;Part 25: ViewModel&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2009/10/05/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-part-26-authentication-and-personalization.aspx"&gt; Part 26: Authentication and Personalization&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2009/09/06/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-comments-about-adding.aspx"&gt;Comments about Adding…&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/brada/archive/2009/08/02/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-summary.aspx"&gt;Summary&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9913548" width="1" height="1"&gt;</content><author><name>BradA</name><uri>http://blogs.msdn.com/members/BradA.aspx</uri></author><category term="Silverlight" scheme="http://blogs.msdn.com/brada/archive/tags/Silverlight/default.aspx" /><category term="RIAServices" scheme="http://blogs.msdn.com/brada/archive/tags/RIAServices/default.aspx" /></entry><entry><title>Mozilla and Microsoft work together on WPF\ClickOnce plugins</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/brada/archive/2009/10/21/mozilla-and-microsoft-work-together-on-wpf-clickonce-plugins.aspx" /><id>http://blogs.msdn.com/brada/archive/2009/10/21/mozilla-and-microsoft-work-together-on-wpf-clickonce-plugins.aspx</id><published>2009-10-21T19:01:47Z</published><updated>2009-10-21T19:01:47Z</updated><content type="html">&lt;p&gt;&lt;img style="margin: 0px 20px 0px 0px; display: inline" align="left" src="http://blog.ebrahim.org/media/firefox-rgb-3.png" width="82" height="82" /&gt;&amp;#160;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/MozillaandMicrosoftworktogetheronWPFClic_A927/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="image" border="0" alt="image" align="right" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/MozillaandMicrosoftworktogetheronWPFClic_A927/image_thumb.png" width="204" height="76" /&gt;&lt;/a&gt; Recently some friends mentioned that they saw Firefox had block-listed some Microsoft WPF\ClickOnce add-ons. As Mike Shaver (VP Engineering for the Mozilla) &lt;a href="http://blog.mozilla.com/security/2009/10/19/net-framework-assistant-windows-presentation-foundation-plugin-blocking-update/"&gt;noted in his blog post&lt;/a&gt;, this action is the result of Mozilla and Microsoft working together to protect customers in relation to Security Update &lt;a href="http://www.microsoft.com/technet/security/Bulletin/MS09-054.mspx"&gt;MS09-054&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;I think it is very important for Microsoft and Mozilla to collaborate so actively to help protect customers… in this case we all agreed it made sense to add the Microsoft add-in to the block-list. We also heard clearly that many customers, especially enterprise customers are relying on this add-on for their daily work. As such Mozilla and Microsoft are working together to give these customers the best possible experience. Like Mike mentioned, as we learned more about &lt;a href="http://www.microsoft.com/technet/security/Bulletin/MS09-054.mspx"&gt;MS09-054&lt;/a&gt;, we felt mutually good about re-enabling the clickonce addon and as this security fix hits market saturation, we expect to feel comfortable with re-enabling the WPF add-on as well.&lt;/p&gt;  &lt;p&gt;We've heard loud and clear from customers how we need to work better with Mozilla around how our plug-ins and add-ons interact with Firefox. And I can promise you that our group will continue to collaborate with Mozilla to more proactively notify them of the effect of updates in the future to help ensure customers have interoperable solutions for their business needs.&lt;/p&gt;  &lt;p&gt;I’d like to thank Mike and his team at Mozilla for their great work on this issue and look forward to working with them in the future.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9910834" width="1" height="1"&gt;</content><author><name>BradA</name><uri>http://blogs.msdn.com/members/BradA.aspx</uri></author><category term=".NET Framework" scheme="http://blogs.msdn.com/brada/archive/tags/.NET+Framework/default.aspx" /></entry><entry><title>RIA Services Blog Posts – Now in French!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/brada/archive/2009/10/15/ria-services-blog-posts-now-in-french.aspx" /><id>http://blogs.msdn.com/brada/archive/2009/10/15/ria-services-blog-posts-now-in-french.aspx</id><published>2009-10-16T05:21:44Z</published><updated>2009-10-16T05:21:44Z</updated><content type="html">&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RIAServicesBlogPostsNowinFrench_13A73/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/RIAServicesBlogPostsNowinFrench_13A73/image_thumb.png" width="240" height="151" /&gt;&lt;/a&gt;Thanks to &lt;a href="http://aristidi.blogspot.com/"&gt;Yannick Aristidi&lt;/a&gt; we are getting many of the &lt;a href="http://blogs.msdn.com/brada/archive/2009/08/02/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-summary.aspx"&gt;RIA Services posts&lt;/a&gt; from my series translated into French!&amp;#160; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://pagesperso-orange.fr/aristidi/files/Partie1.pdf"&gt;Partie 1: les bases de la navigation&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://pagesperso-orange.fr/aristidi/files/Partie2.pdf"&gt;Partie 2: l'accès aux données&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://pagesperso-orange.fr/aristidi/files/Partie3.pdf"&gt;Partie 3: L’authentification&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Thanks Yannick, i hope there are many more to come!&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9907966" width="1" height="1"&gt;</content><author><name>BradA</name><uri>http://blogs.msdn.com/members/BradA.aspx</uri></author><category term="Silverlight" scheme="http://blogs.msdn.com/brada/archive/tags/Silverlight/default.aspx" /><category term="RIAServices" scheme="http://blogs.msdn.com/brada/archive/tags/RIAServices/default.aspx" /></entry><entry><title>PDC 2009 – I can’t wait!</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/brada/archive/2009/10/14/pdc-2009-i-can-t-wait.aspx" /><id>http://blogs.msdn.com/brada/archive/2009/10/14/pdc-2009-i-can-t-wait.aspx</id><published>2009-10-14T17:01:08Z</published><updated>2009-10-14T17:01:08Z</updated><content type="html">&lt;p&gt;Things are really starting to heat up around here as we get ready for the PDC.&amp;#160;&amp;#160; Just this week I have talked to folks on Silverlight, Visual Studio, Azure, ASP.NET, .NET RIA Services, MEF that all have very cool new stuff to talk about at the PDC.&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://microsoftpdc.com/"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="image" border="0" alt="image" align="left" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/PDC2009Icantwait_88A8/image_3.png" width="325" height="88" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;We just recently announced the Scott Guthrie will be giving one of the keynotes, so you can be sure that will be fun.. You can bet Scott will be talking about the latest from ASP.NET, Silverlight, the .NET Framework and Visual Studio!&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;I will also be there to talk about building business application in Silverlight… no rotating images or dancing videos in this talk, it will be all about saving you and your end user’s time by taking advantage of the latest in Silverlight, .NET RIA Services and Visual Studio!&lt;/p&gt;  &lt;p&gt;Hope to see you there, but there will also be lots of good content on line if you can’t make it..&lt;/p&gt;  &lt;p&gt;Find out more information here: &lt;a title="http://microsoftpdc.com/" href="http://microsoftpdc.com/"&gt;http://microsoftpdc.com/&lt;/a&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;When I have talked to developers in the past about coming to PDC, one of the things has been convincing their boss that it is worth the time and money.. I’d love to hear any success stories you have had.&amp;#160; How have you sold the PDC to your boss?&amp;#160; what works?&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9907239" width="1" height="1"&gt;</content><author><name>BradA</name><uri>http://blogs.msdn.com/members/BradA.aspx</uri></author><category term="PDC" scheme="http://blogs.msdn.com/brada/archive/tags/PDC/default.aspx" /></entry><entry><title>Video Posted for Belgium Visual Studio User’s Group: 10 Years of Framework Design Guidelines</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/brada/archive/2009/10/11/video-posted-for-belgium-visual-studio-user-s-group-10-years-of-framework-design-guidelines.aspx" /><id>http://blogs.msdn.com/brada/archive/2009/10/11/video-posted-for-belgium-visual-studio-user-s-group-10-years-of-framework-design-guidelines.aspx</id><published>2009-10-12T00:34:55Z</published><updated>2009-10-12T00:34:55Z</updated><content type="html">&lt;p&gt;As a nice follow up from my &lt;a href="http://blogs.msdn.com/brada/archive/2009/09/28/belgium-visual-studio-user-s-group-10-years-of-framework-design-guidelines.aspx"&gt;Belgium Visual Studio User’s Group: 10 Years of Framework Design Guidelines&lt;/a&gt; talk, I saw that they just &lt;a href="http://www.microsoft.com/belux/msdn/nl/chopsticks/default.aspx?id=1443#"&gt;posted the video (slides+audio).&lt;/a&gt;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/belux/msdn/nl/chopsticks/default.aspx?id=1443#"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/VideoPostedforBelgiumVisualStudioUsersGr_F739/image_3.png" width="376" height="263" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Oh, and i must include the shameless plug…&amp;#160; &lt;a href="http://www.amazon.com/gp/product/0321545613?ie=UTF8&amp;amp;tag=bradabramsblo-20&amp;amp;link_code=wql&amp;amp;camp=212361&amp;amp;creative=380601"&gt;Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries (2nd Edition)&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.amazon.com/gp/product/0321545613?ie=UTF8&amp;amp;tag=bradabramsblo-20&amp;amp;link_code=wql&amp;amp;camp=212361&amp;amp;creative=380601"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/VideoPostedforBelgiumVisualStudioUsersGr_F739/image_6.png" width="189" height="240" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9905961" width="1" height="1"&gt;</content><author><name>BradA</name><uri>http://blogs.msdn.com/members/BradA.aspx</uri></author><category term="Framework Design Guidelines" scheme="http://blogs.msdn.com/brada/archive/tags/Framework+Design+Guidelines/default.aspx" /></entry><entry><title>Business Apps Example for Silverlight 3 RTM and .NET RIA Services July Update: Part 26: Authentication and Personalization</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/brada/archive/2009/10/05/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-part-26-authentication-and-personalization.aspx" /><id>http://blogs.msdn.com/brada/archive/2009/10/05/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-part-26-authentication-and-personalization.aspx</id><published>2009-10-06T03:04:34Z</published><updated>2009-10-06T03:04:34Z</updated><content type="html">&lt;p&gt;The data we work with in business application is valuable.&amp;#160; We need to protect the data.. sometimes by keeping up with exactly who accesses and updates what data when and other times we need to actively prevent data from being accessed expected by trust parties.&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;The web is increasingly becoming a personal place – applications often “know about you” enabling users to having customized settings that work everywhere the apps works.&amp;#160; &lt;/p&gt;  &lt;p&gt;In this example, I will take our ever popular SuperEmployees application and augment it to show more details on the authentication and personalization.&amp;#160; &lt;/p&gt;  &lt;p&gt;You can see the &lt;a href="http://blogs.msdn.com/brada/archive/2009/08/02/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-summary.aspx"&gt;full series here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The demo requires (all 100% free and always free):&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/express/download/"&gt;VS2008 SP1&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://silverlight.net/getstarted/silverlight3/default.aspx"&gt;Silverlight 3 RTM&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://code.msdn.microsoft.com/RiaServices"&gt;.NET RIA Services July '09 Preview&lt;/a&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://brad_abrams.members.winisp.net/Projects/Silverlight3RTM/MyApp.Auth.zip"&gt;download the full demo files&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;/h3&gt;  &lt;h3&gt;Basic Authentication &lt;/h3&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Let’s start by looking at how we ensure that only authenticated users can access access the data and keep a very simple log of who access the data.&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;Starting with the &lt;a href="http://blogs.msdn.com/brada/archive/2009/07/11/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-part-1-rich-data-query.aspx"&gt;original example&lt;/a&gt;,&amp;#160; let’s look at adding authentication to the GetSuperEmployees() method on the DomainService in the server project. &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:a085a725-0d0c-415e-bd01-f85202480494" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #fff; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt; [&lt;span style="color:#2b91af"&gt;RequiresAuthentication&lt;/span&gt;]&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af"&gt;IQueryable&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af"&gt;SuperEmployee&lt;/span&gt;&amp;gt; GetSuperEmployees()&lt;/li&gt; &lt;li&gt;{&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Once we use the RequiresAuthentication attribute, the system will ensure that only calls from authenticated users make it through.&amp;#160; That means we can do some very simple such as logging who is accessing the data and when:&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:68d06743-acea-417e-8c2c-6b7952c08c9a" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #fff; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt; [&lt;span style="color:#2b91af"&gt;RequiresAuthentication&lt;/span&gt;]&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af"&gt;IQueryable&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af"&gt;SuperEmployee&lt;/span&gt;&amp;gt; GetSuperEmployees()&lt;/li&gt; &lt;li&gt;{&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2b91af"&gt;File&lt;/span&gt;.AppendAllText(&lt;span style="color:#a31515"&gt;@"C:&amp;#92;users&amp;#92;brada&amp;#92;desktop&amp;#92;userslog.txt"&lt;/span&gt;,&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2b91af"&gt;String&lt;/span&gt;.Format(&lt;span style="color:#a31515"&gt;"{0}: {1} {2}"&lt;/span&gt;, &lt;span style="color:#2b91af"&gt;DateTime&lt;/span&gt;.Now,&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ServiceContext.User.Identity.Name, &lt;span style="color:#2b91af"&gt;Environment&lt;/span&gt;.NewLine));&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt; (check out a package such as &lt;a href="http://logging.apache.org/log4net/"&gt;Log4net&lt;/a&gt; for a complete solution for logging).&lt;/p&gt;  &lt;p&gt;Now when we run the application, no results are returned.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_thumb.png" width="240" height="194" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;We need to log in to see some results… Luckily the Business Application Template that ships with .NET RIA Services includes great support for this.&amp;#160; &lt;/p&gt;  &lt;p&gt;Click on login&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_4.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_thumb_1.png" width="240" height="52" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Notice here, we could change to use window auth to get integrated NTLM security, either way works fine. &lt;/p&gt;  &lt;p&gt;Then register now&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_6.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_thumb_2.png" width="240" height="90" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;and we can create a new user directly from the Silverlight client.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_8.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_thumb_3.png" width="240" height="174" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Notice if you want to customize the look and feel of any of these dialogs, it is easy to do by looking in the Views\LoginControl.xaml, Views\LoginWindow.xaml.&lt;/p&gt;  &lt;p&gt;And if you want to control the backend on how these are implemented, you can by looking in server project under Services\AuthenticationService.cs and UserRegistrationService.cs.&amp;#160; By default these go against the ASP.NET Membership and roles system, but you can customize them to do whatever you’d like by simply overriding the methods there.&amp;#160; &lt;/p&gt;  &lt;p&gt;Now, we just need to react to the logged in event.&amp;#160; In this case, I am going to simply reload the data when the user logs in.&amp;#160; Lines 10-13 signs up for the logged in event and sets reloads the data, this time, as an authenticated user.&amp;#160; &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:cdc223ac-06c9-4da2-bb4a-640cfb6be12c" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #ddd; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt; &lt;li&gt; &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; Home()&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;{&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;InitializeComponent();&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;var&lt;/span&gt; context = dds.DomainContext &lt;span style="color:#0000ff"&gt;as&lt;/span&gt; &lt;span style="color:#2b91af"&gt;SuperEmployeeDomainContext&lt;/span&gt;;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;originFilterBox.ItemsSource = context.Origins;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;context.Load(context.GetOriginsQuery());&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2b91af"&gt;RiaContext&lt;/span&gt;.Current.Authentication.LoggedIn += (s, e) =&amp;gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (dds != &lt;span style="color:#0000ff"&gt;null&lt;/span&gt;) dds.Load();&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_10.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_thumb_4.png" width="240" height="187" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;And notice, the client knows who I am:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_12.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_thumb_5.png" width="240" height="47" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;And the server knows as well..&amp;#160; If you go look at the log file we create in the DomainService we will see:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_14.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_thumb_6.png" width="240" height="96" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;So, that is cool, but I think we can do a bit better on the client user experience.&amp;#160;&amp;#160; After all, I get no error whatsoever to tell me I need to log in to see the data.&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;First, let’s follow best practice and handle the DDS.LoadedData event and simply show any errors that are returned.&amp;#160; &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:836f94fa-2ecc-4f33-aab6-7f613ffd4eb6" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #fff; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt; &lt;span style="color:#a31515"&gt;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;riaControls&lt;/span&gt;&lt;span style="color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;DomainDataSource&lt;/span&gt;&lt;span style="color:#ff0000"&gt; x&lt;/span&gt;&lt;span style="color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="dds"&lt;/span&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000"&gt; AutoLoad&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="True"&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000"&gt; QueryName&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="GetSuperEmployeesQuery"&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000"&gt; LoadedData&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="dds_LoadedData"&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000"&gt; LoadSize&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="20"&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Then the implementation is very simple:&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:a770351e-64ab-4f1f-880d-fad3ea0562d9" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #fff; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt; &lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; dds_LoadedData(&lt;span style="color:#0000ff"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af"&gt;LoadedDataEventArgs&lt;/span&gt; e)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;{&amp;nbsp;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (e.Error != &lt;span style="color:#0000ff"&gt;null&lt;/span&gt;)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;var&lt;/span&gt; win = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;ErrorWindow&lt;/span&gt;(e.Error);&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;win.Show();&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Now, when we run this app, we get this error:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_16.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_thumb_7.png" width="354" height="202" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;That is helpful, maybe for a developer, but for an end user, maybe we want something more explicit.&amp;#160; &lt;/p&gt;  &lt;p&gt;The first step is to not even make the request if the user is not authenticated.&amp;#160; We know that on the client, so this is very easy to do.&lt;/p&gt;  &lt;p&gt;First, let’s sign up for the DDS.DataLoading event to capture the load before it happens.&amp;#160; &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:726fcaca-bc1c-4f11-bf1e-4b5db0ce2b7a" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #fff; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt; &lt;span style="color:#a31515"&gt;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;riaControls&lt;/span&gt;&lt;span style="color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;DomainDataSource&lt;/span&gt;&lt;span style="color:#ff0000"&gt; x&lt;/span&gt;&lt;span style="color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="dds"&lt;/span&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000"&gt; AutoLoad&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="True"&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000"&gt; QueryName&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="GetSuperEmployeesQuery"&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000"&gt; LoadedData&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="dds_LoadedData"&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000"&gt; LoadingData&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="dds_LoadingData"&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000"&gt; LoadSize&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="20"&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;then we will simple cancel the load if the user is not authenticated.&amp;#160; &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:eeb64f5f-6f4f-4973-a1d6-64161b6dad19" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #fff; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt; &lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; dds_LoadingData(&lt;span style="color:#0000ff"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af"&gt;LoadingDataEventArgs&lt;/span&gt; e)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;{&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;e.Cancel = !&lt;span style="color:#2b91af"&gt;RiaContext&lt;/span&gt;.Current.User.IsAuthenticated;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now, let’s provide an alternate way to tell the user they need to log on.&amp;#160;&amp;#160;&amp;#160;&amp;#160; We simply add some text and make it visible only when the user is not authenticated.&amp;#160; &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:e776c179-dd4b-4551-8521-450ab8b0ca5c" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #fff; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt; &lt;span style="color:#a31515"&gt;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;TextBlock&lt;/span&gt;&lt;span style="color:#ff0000"&gt; Text&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="Data is only available to authenticated users"&lt;/span&gt;&lt;span style="color:#ff0000"&gt; Foreground&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="Red"&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000"&gt; DataContext&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="{&lt;/span&gt;&lt;span style="color:#a31515"&gt;StaticResource&lt;/span&gt;&lt;span style="color:#ff0000"&gt; RiaContext&lt;/span&gt;&lt;span style="color:#0000ff"&gt;}"&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000"&gt; Visibility&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="{&lt;/span&gt;&lt;span style="color:#a31515"&gt;Binding&lt;/span&gt;&lt;span style="color:#ff0000"&gt; Path&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=User.IsAuthenticated,&lt;/span&gt;&lt;span style="color:#ff0000"&gt; Converter&lt;/span&gt;&lt;span style="color:#0000ff"&gt;={&lt;/span&gt;&lt;span style="color:#a31515"&gt;StaticResource&lt;/span&gt;&lt;span style="color:#ff0000"&gt; VisibilityConverter&lt;/span&gt;&lt;span style="color:#0000ff"&gt;}}"&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#a31515"&gt;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;TextBlock&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;The implementation of the value convert is pretty simple.&amp;#160; &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:87a5f45c-cf07-4b0c-8062-b8a66230df3a" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #fff; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt; &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af"&gt;VisibilityConverter&lt;/span&gt; : &lt;span style="color:#2b91af"&gt;IValueConverter&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;{&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;object&lt;/span&gt; Convert(&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;object&lt;/span&gt; value,&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2b91af"&gt;Type&lt;/span&gt; targetType,&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;object&lt;/span&gt; parameter,&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2b91af"&gt;CultureInfo&lt;/span&gt; culture)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;bool&lt;/span&gt; visibility = (&lt;span style="color:#0000ff"&gt;bool&lt;/span&gt;)value;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;return&lt;/span&gt; visibility ? &lt;span style="color:#2b91af"&gt;Visibility&lt;/span&gt;.Collapsed : &lt;span style="color:#2b91af"&gt;Visibility&lt;/span&gt;.Visible;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;object&lt;/span&gt; ConvertBack(&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;object&lt;/span&gt; value,&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2b91af"&gt;Type&lt;/span&gt; targetType,&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;object&lt;/span&gt; parameter,&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2b91af"&gt;CultureInfo&lt;/span&gt; culture)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2b91af"&gt;Visibility&lt;/span&gt; visibility = (&lt;span style="color:#2b91af"&gt;Visibility&lt;/span&gt;)value;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;return&lt;/span&gt; (visibility != &lt;span style="color:#2b91af"&gt;Visibility&lt;/span&gt;.Visible);&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now, when we run this, we get a nice UX:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_18.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_thumb_8.png" width="240" height="136" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Then when we log in, it looks nice.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_20.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_thumb_9.png" width="240" height="142" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;We can even make it a bit better by giving users an easy to to log in from here:&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:e954c167-a1b5-4959-abda-e21f3e19d701" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #fff; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt; &lt;span style="color:#a31515"&gt;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;TextBlock&lt;/span&gt;&lt;span style="color:#ff0000"&gt; Text&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="Data is only available to authenticated users.&amp;nbsp;&amp;nbsp;Please click here to log in."&lt;/span&gt;&lt;span style="color:#ff0000"&gt; Foreground&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="Red"&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000"&gt; DataContext&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="{&lt;/span&gt;&lt;span style="color:#a31515"&gt;StaticResource&lt;/span&gt;&lt;span style="color:#ff0000"&gt; RiaContext&lt;/span&gt;&lt;span style="color:#0000ff"&gt;}"&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000"&gt; Visibility&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="{&lt;/span&gt;&lt;span style="color:#a31515"&gt;Binding&lt;/span&gt;&lt;span style="color:#ff0000"&gt; Path&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=User.IsAuthenticated,&lt;/span&gt;&lt;span style="color:#ff0000"&gt; Converter&lt;/span&gt;&lt;span style="color:#0000ff"&gt;={&lt;/span&gt;&lt;span style="color:#a31515"&gt;StaticResource&lt;/span&gt;&lt;span style="color:#ff0000"&gt; VisibilityConverter&lt;/span&gt;&lt;span style="color:#0000ff"&gt;}}"&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000"&gt; MouseLeftButtonUp&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="TextBlock_MouseLeftButtonUp"&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#a31515"&gt;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;TextBlock&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:e7f52d42-2441-4c2e-9deb-1297a2a4f947" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #fff; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt; &lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; TextBlock_MouseLeftButtonUp(&lt;span style="color:#0000ff"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af"&gt;MouseButtonEventArgs&lt;/span&gt; e)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;{&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;LoginWindow&lt;/span&gt;().Show();&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_22.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_thumb_10.png" width="285" height="151" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;What we showed in this section is how easy it is to require authentication for data and how to create a great user experience for this on the client.&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Personalization &lt;/h3&gt;  &lt;p&gt;Now that we have the basics of authentication down, let’s see how we can provide a bit more of a personalized experience.&amp;#160; For many applications, uses spend a huge amount of time in the application, we want them to feel comfortable and in control of their experience.&amp;#160;&amp;#160;&amp;#160; For the first part of this, let’s create a user setting for the background color of the application.&amp;#160; Each user can have a different value and it should follow them no mater what machine they run the application on.&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;Let’s start be defining a profile property in the web.config file.&amp;#160; &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:3be7be3c-1a11-481d-8f74-707c71568b69" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #fff; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt; &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;profile&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;enabled&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;"&lt;span style="color:#0000ff"&gt;true&lt;/span&gt;"&lt;span style="color:#0000ff"&gt; &amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;properties&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;add&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;"&lt;span style="color:#0000ff"&gt;PageBackgroundColor&lt;/span&gt;"&lt;span style="color:#0000ff"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#ff0000"&gt;defaultValue&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;"&lt;span style="color:#0000ff"&gt;White&lt;/span&gt;"&lt;span style="color:#0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;properties&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;profile&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Then we can make this strongly typed by adding it to the AuthenticationService.cs file on the server.&amp;#160;&amp;#160; &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:8088db2d-9893-4a1a-a3fc-055962139241" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #fff; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt; &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af"&gt;User&lt;/span&gt; : &lt;span style="color:#2b91af"&gt;UserBase&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;{&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; PageBackgroundColor { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now we can simply access this on the client.&amp;#160; First let’s define a page to set this value.&amp;#160; in MyFirstPage.xaml… let’s add some UI:&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:93b48f26-34b0-49b7-85bd-99effd3b5bbf" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #fff; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt; &lt;span style="color:#a31515"&gt;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color:#ff0000"&gt; Orientation&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="Horizontal" &amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#a31515"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;TextBlock&lt;/span&gt;&lt;span style="color:#ff0000"&gt; Text&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="Enter background color: "/&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#a31515"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;TextBox&lt;/span&gt;&lt;span style="color:#ff0000"&gt; x&lt;/span&gt;&lt;span style="color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="colorTextBox"&lt;/span&gt;&lt;span style="color:#ff0000"&gt; KeyDown&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="colorTextBox_KeyDown"&lt;/span&gt;&lt;span style="color:#ff0000"&gt; Width&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="100" /&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#a31515"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Button&lt;/span&gt;&lt;span style="color:#ff0000"&gt; Content&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="Save"&lt;/span&gt;&lt;span style="color:#ff0000"&gt; Click&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="Button_Click" /&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#a31515"&gt;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#a31515"&gt;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;TextBlock&lt;/span&gt;&lt;span style="color:#ff0000"&gt; x&lt;/span&gt;&lt;span style="color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="saveStatus"/&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;We can handle the save button click as follows.. &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:2381edab-2a86-4a2f-80d9-22856003580d" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #ddd; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt; &lt;li&gt; &lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; Button_Click(&lt;span style="color:#0000ff"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af"&gt;RoutedEventArgs&lt;/span&gt; e)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;{&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;string&lt;/span&gt; colorString = &lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.colorTextBox.Text.Trim().ToLower();&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;colorString = colorString.Substring(0, 1).ToUpper() + colorString.Substring(1, colorString.Length - 1);&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2b91af"&gt;RiaContext&lt;/span&gt;.Current.User.PageBackgroundColor = colorString;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.saveStatus.Text = &lt;span style="color:#a31515"&gt;"setting saving.."&lt;/span&gt;;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2b91af"&gt;RiaContext&lt;/span&gt;.Current.Authentication.SaveUser((o) =&amp;gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.saveStatus.Text = &lt;span style="color:#a31515"&gt;"setting saved"&lt;/span&gt;; },&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;null&lt;/span&gt;);&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;}&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; colorTextBox_KeyDown(&lt;span style="color:#0000ff"&gt;object&lt;/span&gt; sender, &lt;span style="color:#2b91af"&gt;KeyEventArgs&lt;/span&gt; e)&lt;/li&gt; &lt;li&gt;{&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.saveStatus.Text = &lt;span style="color:#a31515"&gt;""&lt;/span&gt;;&lt;/li&gt; &lt;li&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;Notice in lines 3-4 we are normalizing the string name of the color so that it is “xaml compliant”..    &lt;br /&gt;Then in line 5 we are setting the strongly typed User.PageBackgroundColor property.&amp;#160; &lt;br /&gt;Then in lines 6-9 we are simply giving some UI hints as we save this value back to the server.&amp;#160; &lt;/p&gt;  &lt;p&gt;Of course this will only work if the user is logged in first, so this time, let’s be proactice and encourage the user to log in when they hit the page for the first time.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:b32807a4-f4db-4ba8-a63d-6e90402d85d2" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #fff; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt; &lt;span style="color:#0000ff"&gt;protected&lt;/span&gt; &lt;span style="color:#0000ff"&gt;override&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; OnNavigatedTo(&lt;span style="color:#2b91af"&gt;NavigationEventArgs&lt;/span&gt; e)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;{&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (!&lt;span style="color:#2b91af"&gt;RiaContext&lt;/span&gt;.Current.User.IsAuthenticated)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;LoginWindow&lt;/span&gt;().Show();&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt; &lt;li&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;The last step here is the honor this value when it is set.&amp;#160; That turns out to be pretty easy in this case.&amp;#160; Just go to MainPage.Xaml and databind the LayoutRoot’s backgroun color to this value.&amp;#160;&amp;#160; &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:f26e2b97-aab3-4b0f-b5e8-f216ebbda1c1" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #fff; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt; &lt;span style="color:#a31515"&gt;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Grid&lt;/span&gt;&lt;span style="color:#ff0000"&gt; x&lt;/span&gt;&lt;span style="color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="LayoutRoot"&lt;/span&gt;&lt;span style="color:#ff0000"&gt; Style&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="{&lt;/span&gt;&lt;span style="color:#a31515"&gt;StaticResource&lt;/span&gt;&lt;span style="color:#ff0000"&gt; LayoutRootGridStyle&lt;/span&gt;&lt;span style="color:#0000ff"&gt;}"&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000"&gt; DataContext&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="{&lt;/span&gt;&lt;span style="color:#a31515"&gt;StaticResource&lt;/span&gt;&lt;span style="color:#ff0000"&gt; RiaContext&lt;/span&gt;&lt;span style="color:#0000ff"&gt;}"&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000"&gt; Background&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="{&lt;/span&gt;&lt;span style="color:#a31515"&gt;Binding&lt;/span&gt;&lt;span style="color:#ff0000"&gt; Path&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=User.PageBackgroundColor}"&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_24.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_thumb_11.png" width="240" height="187" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;then when we log in…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_26.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_thumb_12.png" width="240" height="184" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;And if we change the color to blue…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_28.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_thumb_13.png" width="240" height="182" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;And notice the color change effects the whole app.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_30.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_thumb_14.png" width="240" height="189" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;And if I hit the app from a different machine, on a different browser, my setting still carries forward… We start off not logged in we get the default:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_32.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_thumb_15.png" width="240" height="196" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;but when we log in… our settings show up. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_34.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_thumb_16.png" width="240" height="196" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now this is a user specific setting, so if I create a new user “Glenn” and set his background color to pink&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_36.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_thumb_17.png" width="240" height="67" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;that doesn’t effect the background color for Darb…&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_38.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_thumb_18.png" width="240" height="189" /&gt;&lt;/a&gt; &lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_40.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_thumb_19.png" width="240" height="189" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;OK, background color is fun and all, but what might be even more useful is to store some state on how I last left the application.&amp;#160;&amp;#160; This ensures that as I access the application from over time, the context of my work is preserved.&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;So, let’s add a few more fields to our profile..&amp;#160; &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:df6640be-a723-4974-a883-aba27015a733" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #fff; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt; &lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;profile&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;enabled&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;"&lt;span style="color:#0000ff"&gt;true&lt;/span&gt;"&lt;span style="color:#0000ff"&gt; &amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;properties&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;add&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;"&lt;span style="color:#0000ff"&gt;PageBackgroundColor&lt;/span&gt;"&lt;span style="color:#0000ff"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#ff0000"&gt;defaultValue&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;"&lt;span style="color:#0000ff"&gt;White&lt;/span&gt;"&lt;span style="color:#0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;add&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;"&lt;span style="color:#0000ff"&gt;SortOrder&lt;/span&gt;"&lt;span style="color:#0000ff"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#ff0000"&gt;type&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;"&lt;span style="color:#0000ff"&gt;Int32&lt;/span&gt;"&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;defaultValue&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;"&lt;span style="color:#0000ff"&gt;0&lt;/span&gt;"&lt;span style="color:#0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;add&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;"&lt;span style="color:#0000ff"&gt;SortProperty&lt;/span&gt;"&lt;span style="color:#0000ff"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#ff0000"&gt;defaultValue&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;"&lt;span style="color:#0000ff"&gt;Name&lt;/span&gt;"&lt;span style="color:#0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;add&lt;/span&gt;&lt;span style="color:#0000ff"&gt; &lt;/span&gt;&lt;span style="color:#ff0000"&gt;name&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;"&lt;span style="color:#0000ff"&gt;OriginFilter&lt;/span&gt;"&lt;span style="color:#0000ff"&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#ff0000"&gt;defaultValue&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=&lt;/span&gt;""&lt;span style="color:#0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;properties&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;profile&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;then update the User class to make this strongly typed.&lt;/p&gt;  &lt;p&gt;   &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:e1ea3356-d097-44b7-821c-743d10c4d700" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #fff; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt; &lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af"&gt;User&lt;/span&gt; : &lt;span style="color:#2b91af"&gt;UserBase&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;{&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; PageBackgroundColor { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;int&lt;/span&gt; SortOrder { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; SortProperty { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; OriginFilter { &lt;span style="color:#0000ff"&gt;get&lt;/span&gt;; &lt;span style="color:#0000ff"&gt;set&lt;/span&gt;; }&lt;/li&gt; &lt;li&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;We need to set the UI based on the user’s settings. &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:a4a73c53-9a85-42d1-b1eb-5ff04b8ad52c" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #fff; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; LoadUserState()&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;{&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;var&lt;/span&gt; user = &lt;span style="color:#2b91af"&gt;RiaContext&lt;/span&gt;.Current.User;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (user.OriginFilter != &lt;span style="color:#0000ff"&gt;null&lt;/span&gt;)&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;originFilterBox.Text = user.OriginFilter;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;else&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;originFilterBox.Text = &lt;span style="color:#0000ff"&gt;string&lt;/span&gt;.Empty;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (user.SortProperty != &lt;span style="color:#0000ff"&gt;null&lt;/span&gt;)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dds.SortDescriptors.Add(&lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;SortDescriptor&lt;/span&gt;(user.SortProperty,&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;span style="color:#2b91af"&gt;SortDirection&lt;/span&gt;)user.SortOrder));&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt; And we need to call that when the page is navigated to…&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:226d2850-13fa-4bff-bd9c-eaddc7c5e64b" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #fff; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt; &lt;span style="color:#0000ff"&gt;protected&lt;/span&gt; &lt;span style="color:#0000ff"&gt;override&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; OnNavigatedTo(&lt;span style="color:#2b91af"&gt;NavigationEventArgs&lt;/span&gt; e)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;{&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LoadUserState();&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;and when the user logs on.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:51022461-009c-4208-a9bd-1d8eac5d2d76" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #fff; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt; &lt;span style="color:#2b91af"&gt;RiaContext&lt;/span&gt;.Current.Authentication.LoggedIn += (s, e) =&amp;gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;{&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2b91af"&gt;User&lt;/span&gt; user = &lt;span style="color:#2b91af"&gt;RiaContext&lt;/span&gt;.Current.User;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (dds != &lt;span style="color:#0000ff"&gt;null&lt;/span&gt;)&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dds.Load();&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LoadUserState();&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt; &lt;li&gt;};&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Next we need to store the values back to the server at the right time.&amp;#160; This SaveUserState method plucks the right values out of the UI, and saves them the server if the values have changed.&amp;#160; &lt;/p&gt;  &lt;p&gt;   &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:b6e7f8bb-721d-4287-8119-04ae1308b19e" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #fff; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt; lastSave;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;void&lt;/span&gt; SaveUserState()&lt;/li&gt; &lt;li&gt;{&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2b91af"&gt;User&lt;/span&gt; user = &lt;span style="color:#2b91af"&gt;RiaContext&lt;/span&gt;.Current.User;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (!user.IsAuthenticated) &lt;span style="color:#0000ff"&gt;return&lt;/span&gt;;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;var&lt;/span&gt; order = dds.SortDescriptors.LastOrDefault();&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (order != &lt;span style="color:#0000ff"&gt;null&lt;/span&gt;)&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;user.SortProperty = order.PropertyPath.Value.ToString();&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;user.SortOrder = (&lt;span style="color:#0000ff"&gt;int&lt;/span&gt;)order.Direction;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;user.OriginFilter = &lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.originFilterBox.Text;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (lastSave != user.SortProperty + user.SortOrder + user.OriginFilter)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2b91af"&gt;RiaContext&lt;/span&gt;.Current.Authentication.SaveUser();&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lastSave = user.SortProperty + user.SortOrder + user.OriginFilter;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;We need to call this method when the user navigates away.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:d7e4554e-d097-4eae-b67d-843aa52b9f33" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #fff; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt; &lt;span style="color:#0000ff"&gt;protected&lt;/span&gt; &lt;span style="color:#0000ff"&gt;override&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; OnNavigatedFrom(&lt;span style="color:#2b91af"&gt;NavigationEventArgs&lt;/span&gt; e)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;{&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SaveUserState();&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;and, periodically we check to see if we need to save the changes back to the server.&amp;#160; So we set this up in the forms constructor..&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:bd9db1d4-37f8-4fe9-9226-0b49b6a9ee04" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #fff; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt; Timer = &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;DispatcherTimer&lt;/span&gt;();&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;Timer.Interval = &lt;span style="color:#2b91af"&gt;TimeSpan&lt;/span&gt;.FromSeconds(10);&lt;/li&gt; &lt;li&gt;Timer.Tick += (o, e) =&amp;gt; SaveUserState();&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;Timer.Start();&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now, when we run it..&amp;#160;&amp;#160; setup some sort order and a filter&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_46.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_thumb_22.png" width="240" height="196" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;then log out&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_44.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_thumb_21.png" width="240" height="196" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;log back in (from a different machine) and we see it is back just where we left off.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_48.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_thumb_23.png" width="240" height="196" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;What we saw in this section what how to personalize the user experience based on the user preferences.&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;h3&gt;Admin UI&lt;/h3&gt;  &lt;p&gt;In this last section, let’s look at how to build out an admin UI.. What we want to do is provide a page that allows Admins to see all the users and edit their profile settings. &lt;/p&gt;  &lt;p&gt;First, let’s go into the AuthenticationService and add some custom methods to return all the users.&amp;#160; We should be sure that only users in the Admin role can access this service.&amp;#160; &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:23c0fd2d-6bf2-4abf-bd6c-02adf164c6c3" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #fff; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;span style="color:#2b91af"&gt;EnableClientAccess&lt;/span&gt;]&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;class&lt;/span&gt; &lt;span style="color:#2b91af"&gt;AuthenticationService&lt;/span&gt; : &lt;span style="color:#2b91af"&gt;AuthenticationBase&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af"&gt;User&lt;/span&gt;&amp;gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt; &lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[&lt;span style="color:#2b91af"&gt;RequiresRoles&lt;/span&gt;(&lt;span style="color:#a31515"&gt;"Admin"&lt;/span&gt;)]&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;public&lt;/span&gt; &lt;span style="color:#2b91af"&gt;IEnumerable&lt;/span&gt;&amp;lt;&lt;span style="color:#2b91af"&gt;User&lt;/span&gt;&amp;gt; GetAllUsers()&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;return&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Membership&lt;/span&gt;.GetAllUsers().Cast&amp;lt;&lt;span style="color:#2b91af"&gt;MembershipUser&lt;/span&gt;&amp;gt;().Select(mu =&amp;gt; &lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.GetUserForMembershipUser(mu));&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;private&lt;/span&gt; &lt;span style="color:#2b91af"&gt;User&lt;/span&gt; GetUserForMembershipUser(&lt;span style="color:#2b91af"&gt;MembershipUser&lt;/span&gt; membershipUser)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;return&lt;/span&gt; &lt;span style="color:#0000ff"&gt;this&lt;/span&gt;.GetAuthenticatedUser(&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;GenericPrincipal&lt;/span&gt;(&lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;GenericIdentity&lt;/span&gt;(membershipUser.UserName), &lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#0000ff"&gt;string&lt;/span&gt;[0]));&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now, lets add some Silverlight UI to consume this.&amp;#160; We will create a new page called “Admin”.&amp;#160;&amp;#160; The first thing we want to do is to prompt the user to log in if they are not already logged in as a user in the admin role.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:74f095d9-df46-4058-aec8-0d6e840ea5a5" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #fff; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt; &lt;span style="color:#0000ff"&gt;protected&lt;/span&gt; &lt;span style="color:#0000ff"&gt;override&lt;/span&gt; &lt;span style="color:#0000ff"&gt;void&lt;/span&gt; OnNavigatedTo(&lt;span style="color:#2b91af"&gt;NavigationEventArgs&lt;/span&gt; e)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;{&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (!&lt;span style="color:#2b91af"&gt;RiaContext&lt;/span&gt;.Current.User.Roles.Contains(&lt;span style="color:#a31515"&gt;"Admin"&lt;/span&gt;))&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;new&lt;/span&gt; &lt;span style="color:#2b91af"&gt;LoginWindow&lt;/span&gt;().Show();&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#2b91af"&gt;RiaContext&lt;/span&gt;.Current.Authentication.LoggedIn += (s, ev) =&amp;gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000ff"&gt;if&lt;/span&gt; (dds != &lt;span style="color:#0000ff"&gt;null&lt;/span&gt;) dds.Load();&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/li&gt; &lt;li&gt;}&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Next, we define a DomainDataSource for accessing&amp;#160; the AuthenticationService &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:91522ebb-a330-4f03-b6f7-5e68b6bf13d3" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #fff; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt; &lt;span style="color:#a31515"&gt;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;riaControls&lt;/span&gt;&lt;span style="color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;DomainDataSource&lt;/span&gt;&lt;span style="color:#ff0000"&gt; x&lt;/span&gt;&lt;span style="color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="dds"&lt;/span&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000"&gt; AutoLoad&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="True"&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000"&gt; QueryName&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="GetAllUsersQuery"&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000"&gt; LoadSize&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="20"&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#a31515"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;riaControls&lt;/span&gt;&lt;span style="color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;DomainDataSource.DomainContext&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#a31515"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;App&lt;/span&gt;&lt;span style="color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;AuthenticationContext&lt;/span&gt;&lt;span style="color:#0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#a31515"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;riaControls&lt;/span&gt;&lt;span style="color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;DomainDataSource.DomainContext&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#a31515"&gt;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;riaControls&lt;/span&gt;&lt;span style="color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;DomainDataSource&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;then we define some simple UI for working with the data..&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:e343da57-6427-4854-bd2b-3e0cdc243089" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #fff; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt; &lt;span style="color:#a31515"&gt;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;activity&lt;/span&gt;&lt;span style="color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;Activity&lt;/span&gt;&lt;span style="color:#ff0000"&gt; IsActive&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="{&lt;/span&gt;&lt;span style="color:#a31515"&gt;Binding&lt;/span&gt;&lt;span style="color:#ff0000"&gt; IsBusy&lt;/span&gt;&lt;span style="color:#0000ff"&gt;,&lt;/span&gt;&lt;span style="color:#ff0000"&gt; ElementName&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=dds}"&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#a31515"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#a31515"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;dataControls&lt;/span&gt;&lt;span style="color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;DataForm&lt;/span&gt;&lt;span style="color:#ff0000"&gt; x&lt;/span&gt;&lt;span style="color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="color:#ff0000"&gt;Name&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="dataForm1"&lt;/span&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000"&gt; Height&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="393"&lt;/span&gt;&lt;span style="color:#ff0000"&gt; Width&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="331"&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000"&gt; VerticalAlignment&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="Top"&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000"&gt; Header&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="User Data"&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000"&gt; ItemsSource&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="{&lt;/span&gt;&lt;span style="color:#a31515"&gt;Binding&lt;/span&gt;&lt;span style="color:#ff0000"&gt; Data&lt;/span&gt;&lt;span style="color:#0000ff"&gt;,&lt;/span&gt;&lt;span style="color:#ff0000"&gt; ElementName&lt;/span&gt;&lt;span style="color:#0000ff"&gt;=dds}"&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000"&gt; HorizontalAlignment&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="Left" &amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#a31515"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;dataControls&lt;/span&gt;&lt;span style="color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;DataForm&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#a31515"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color:#ff0000"&gt; Orientation&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="Horizontal"&lt;/span&gt;&lt;span style="color:#ff0000"&gt; Margin&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="0,5,0,0"&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#a31515"&gt;&amp;nbsp;&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;&lt;span style="color:#0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515"&gt;Button&lt;/span&gt;&lt;span style="color:#ff0000"&gt; Content&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="Submit"&lt;/span&gt;&lt;span style="color:#ff0000"&gt; Width&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="105"&lt;/span&gt;&lt;span style="color:#ff0000"&gt; Height&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="28"&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#ff0000"&gt; Click&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="SubmitButton_Click"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#a31515"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&amp;nbsp;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#a31515"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#a31515"&gt;&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515"&gt;activity&lt;/span&gt;&lt;span style="color:#0000ff"&gt;:&lt;/span&gt;&lt;span style="color:#a31515"&gt;Activity&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Now, we run it..&amp;#160; log in but it doesn’t give us any data… why?&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_50.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_thumb_24.png" width="240" height="196" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Well, the user we created is not an Admin.&amp;#160; To make them a Admin, go to the Web Admin tool and add them to the “Admin” role.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_52.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_thumb_25.png" width="171" height="240" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Select “Security”&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_54.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_thumb_26.png" width="240" height="196" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Then under Roles, Add a new role for “Admin”&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_56.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_thumb_27.png" width="240" height="61" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;and under Users, “Manager User”… here you can easily add your user to the role.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_58.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_thumb_28.png" width="240" height="99" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Now when I log on and go to the Admin page, I can access the all the user’s settings.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_60.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/Bus.NETRIAServicesJulyUpdatePart26Authen_F021/image_thumb_29.png" width="178" height="240" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;What we saw in this section was how to build an admin UI for your applications.&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I hope you found this to be a helpful walkthrough of the authentication and personalization support in RIA Services.&amp;#160;&amp;#160; Again, you can &lt;a href="http://brad_abrams.members.winisp.net/Projects/Silverlight3RTM/MyApp.Auth.zip"&gt;download the full demo files&lt;/a&gt; or check out the &lt;a href="http://blogs.msdn.com/brada/archive/2009/08/02/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-summary.aspx"&gt;full series here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Enjoy.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9903482" width="1" height="1"&gt;</content><author><name>BradA</name><uri>http://blogs.msdn.com/members/BradA.aspx</uri></author><category term="Silverlight" scheme="http://blogs.msdn.com/brada/archive/tags/Silverlight/default.aspx" /><category term="RIAServices" scheme="http://blogs.msdn.com/brada/archive/tags/RIAServices/default.aspx" /></entry><entry><title>Portugal ReMix Silverlight 3 and .NET RIA Services</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/brada/archive/2009/10/02/portugal-remix-silverlight-3-and-net-ria-services.aspx" /><id>http://blogs.msdn.com/brada/archive/2009/10/02/portugal-remix-silverlight-3-and-net-ria-services.aspx</id><published>2009-10-02T17:51:00Z</published><updated>2009-10-02T17:51:00Z</updated><content type="html">&lt;P&gt;&amp;nbsp;&lt;A href="http://www.microsoft.com/portugal/remix/index.aspx" mce_href="http://www.microsoft.com/portugal/remix/index.aspx"&gt;ReMix in Lisbon, Portugal&lt;/A&gt; was a fabulous was to end my ReMix tour.&amp;nbsp; They keynote (as much as I could understand of it) was a lot of fun.&amp;nbsp; They did the &lt;A href="http://en.wikipedia.org/wiki/Shtick" mce_href="http://en.wikipedia.org/wiki/Shtick"&gt;Developer\designer egg shtick&lt;/A&gt;, but with a real egg!&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.microsoft.com/belux/interactive/newsletter/img/egg.jpg" width=378 height=102 mce_src="http://www.microsoft.com/belux/interactive/newsletter/img/egg.jpg"&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/PortugalReMixSilverlight3.NETRIAServices_6E59/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/PortugalReMixSilverlight3.NETRIAServices_6E59/image_4.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; MARGIN-LEFT: 0px; BORDER-TOP: 0px; MARGIN-RIGHT: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image align=right src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/PortugalReMixSilverlight3.NETRIAServices_6E59/image_thumb_1.png" width=240 height=172 mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/PortugalReMixSilverlight3.NETRIAServices_6E59/image_thumb_1.png"&gt;&lt;/A&gt;My this point, I have really hit my stride with the the &lt;A href="http://silverlight.net/" mce_href="http://silverlight.net/"&gt;Silverlight 3&lt;/A&gt; overview I used a this &lt;A href="http://www.slideshare.net/brada/silverlight-3-overview-for-remix" mce_href="http://www.slideshare.net/brada/silverlight-3-overview-for-remix"&gt;Silverlight 3 deck&lt;/A&gt; and did some fun demos:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://www.iis.net/media/experiencesmoothstreaming" mce_href="http://www.iis.net/media/experiencesmoothstreaming"&gt;IIS Smooth streaming&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.xbox.com/en-US/games/splash/b/beatlesrockband/default.htm" mce_href="http://www.xbox.com/en-US/games/splash/b/beatlesrockband/default.htm"&gt;The Beatles Rockband&lt;/A&gt; site&amp;nbsp; (recently site of the day on &lt;A href="http://www.thefwa.com/" mce_href="http://www.thefwa.com/"&gt;FWA site of the day&lt;/A&gt;) &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://silverlight.net/content/samples/sl3/toolkitcontrolsamples/run/default.html" mce_href="http://silverlight.net/content/samples/sl3/toolkitcontrolsamples/run/default.html"&gt;Silverlight 3 Control Toolkit Samples&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.google.com/search?hl=en&amp;amp;q=Super+Employee+Placement+Alfred" mce_href="http://www.google.com/search?hl=en&amp;amp;q=Super+Employee+Placement+Alfred"&gt;Silverlight SEO&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/corrinab/archive/2009/08/30/9889051.aspx" mce_href="http://blogs.msdn.com/corrinab/archive/2009/08/30/9889051.aspx"&gt;Silverlight 3 Navigation Application Themes&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://smjenkins.members.winisp.net/slidentity/default.html?SlideShow=http://smjenkins.members.winisp.net/slidentity/slidentity.xaml" mce_href="http://smjenkins.members.winisp.net/slidentity/default.html?SlideShow=http://smjenkins.members.winisp.net/slidentity/slidentity.xaml"&gt;Slidentity&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;In the next session, I did was on .NET RIA Services..&amp;nbsp; You can find the demo I did &lt;A href="http://bit.ly/4tmJA3" mce_href="http://bit.ly/4tmJA3"&gt;http://bit.ly/4tmJA3&lt;/A&gt; and the &lt;A href="http://blogs.msdn.com/brada/archive/2009/08/02/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-summary.aspx" mce_href="http://blogs.msdn.com/brada/archive/2009/08/02/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-summary.aspx"&gt;full series&lt;/A&gt;.&amp;nbsp; Here is the diagram we used to walk through the options.. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/PortugalReMixSilverlight3.NETRIAServices_6E59/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/PortugalReMixSilverlight3.NETRIAServices_6E59/image_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/PortugalReMixSilverlight3.NETRIAServices_6E59/image_thumb.png" width=240 height=152 mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/PortugalReMixSilverlight3.NETRIAServices_6E59/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Well.. it is a bit sad to be ending my European Tour, but I have had&amp;nbsp; a great time and learned a lot from the great people I meet along the way.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9902383" width="1" height="1"&gt;</content><author><name>BradA</name><uri>http://blogs.msdn.com/members/BradA.aspx</uri></author><category term="Silverlight" scheme="http://blogs.msdn.com/brada/archive/tags/Silverlight/default.aspx" /><category term="RIAServices" scheme="http://blogs.msdn.com/brada/archive/tags/RIAServices/default.aspx" /></entry><entry><title>Austria ReMix Silverlight 3 and .NET RIA Services</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/brada/archive/2009/10/01/austria-remix-silverlight-3-and-net-ria-services.aspx" /><id>http://blogs.msdn.com/brada/archive/2009/10/01/austria-remix-silverlight-3-and-net-ria-services.aspx</id><published>2009-10-01T17:10:03Z</published><updated>2009-10-01T17:10:03Z</updated><content type="html">&lt;p&gt;&lt;a href="http://www.microsoft.com/austria/remix/development.aspx"&gt;ReMix in Vienna, Austria&lt;/a&gt; was really great.&amp;#160; The attendees were very engaged and the venue was quite nice.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://simonguest.com/"&gt;Simon Guest&lt;/a&gt; gave the keynote and did a very nice job of bring together &lt;a href="http://expression.microsoft.com/en-us/ee215229.aspx"&gt;SketchFlow&lt;/a&gt;, &lt;a href="http://code.msdn.microsoft.com/RiaServices"&gt;.NET RIA Services&lt;/a&gt; and &lt;a href="http://www.microsoft.com/azure/sql.mspx"&gt;Sql Azure&lt;/a&gt;.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;img style="display: inline; margin-left: 0px; margin-right: 0px" align="right" src="http://www.totalfootball.ru/wiki/images/8/81/Austria-flag.jpg" /&gt;&lt;/p&gt;  &lt;p&gt; I had the opportunity give the &lt;a href="http://silverlight.net/"&gt;Silverlight 3&lt;/a&gt; overview today and again I had fun doing it.&amp;#160;&amp;#160; I used a this &lt;a href="http://www.slideshare.net/brada/silverlight-3-overview-for-remix"&gt;Silverlight 3 deck&lt;/a&gt; and did some fun demos:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.iis.net/media/experiencesmoothstreaming"&gt;IIS Smooth streaming&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.xbox.com/en-US/games/splash/b/beatlesrockband/default.htm"&gt;The Beatles Rockband&lt;/a&gt; site&amp;#160; (recently site of the day on &lt;a href="http://www.thefwa.com/"&gt;FWA site of the day&lt;/a&gt;) &lt;/li&gt;    &lt;li&gt;&lt;a href="http://silverlight.net/content/samples/sl3/toolkitcontrolsamples/run/default.html"&gt;Silverlight 3 Control Toolkit Samples&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.google.com/search?hl=en&amp;amp;q=Super+Employee+Placement+Alfred"&gt;Silverlight SEO&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/corrinab/archive/2009/08/30/9889051.aspx"&gt;Silverlight 3 Navigation Application Themes&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://smjenkins.members.winisp.net/slidentity/default.html?SlideShow=http://smjenkins.members.winisp.net/slidentity/slidentity.xaml"&gt;Slidentity&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;After lunch,&amp;#160; I did was on .NET RIA Services..&amp;#160; You can find the demo i did &lt;a href="http://bit.ly/4tmJA3"&gt;http://bit.ly/4tmJA3&lt;/a&gt; and the &lt;a href="http://blogs.msdn.com/brada/archive/2009/08/02/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-summary.aspx"&gt;full series&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;On to Portugal!&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9901844" width="1" height="1"&gt;</content><author><name>BradA</name><uri>http://blogs.msdn.com/members/BradA.aspx</uri></author><category term="Silverlight" scheme="http://blogs.msdn.com/brada/archive/tags/Silverlight/default.aspx" /><category term="RIAServices" scheme="http://blogs.msdn.com/brada/archive/tags/RIAServices/default.aspx" /></entry><entry><title>Helsinki ReMix Silverlight 3 and .NET RIA Services</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/brada/archive/2009/09/30/helsinki-remix-silverlight-3-and-net-ria-services.aspx" /><id>http://blogs.msdn.com/brada/archive/2009/09/30/helsinki-remix-silverlight-3-and-net-ria-services.aspx</id><published>2009-09-30T14:37:10Z</published><updated>2009-09-30T14:37:10Z</updated><content type="html">&lt;p&gt;I had a great time at &lt;a href="http://www.microsoft.com/finland/remix/"&gt;ReMix in Helsinki&lt;/a&gt;.&amp;#160; &lt;img style="display: inline; margin-left: 0px; margin-right: 0px" title="Finland Flag" alt="Finland Flag" align="right" src="http://ts3.mm.bing.net/images/thumbnail.aspx?q=966121497402&amp;amp;id=4835c22508184069da489ce3a03319d1&amp;amp;url=http%3a%2f%2fi257.photobucket.com%2falbums%2fhh204%2fminkku72%2fFinlandFlaggif.png" /&gt;&lt;/p&gt;  &lt;p&gt;I had a chance to give the Silverlight 3 overview today and it was a lot of fun.&amp;#160;&amp;#160; I used a this &lt;a href="http://www.slideshare.net/brada/silverlight-3-overview-for-remix"&gt;Silverlight 3 deck&lt;/a&gt; and did some fun demos:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.iis.net/media/experiencesmoothstreaming"&gt;IIS Smooth streaming&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.xbox.com/en-US/games/splash/b/beatlesrockband/default.htm"&gt;The Beatles Rockband&lt;/a&gt; site&amp;#160; (recently site of the day on &lt;a href="http://www.thefwa.com/"&gt;FWA site of the day&lt;/a&gt;)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://silverlight.net/content/samples/sl3/toolkitcontrolsamples/run/default.html"&gt;Silverlight 3 Control Toolkit Samples&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.google.com/search?hl=en&amp;amp;q=Super+Employee+Placement+Alfred"&gt;Silverlight SEO&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/corrinab/archive/2009/08/30/9889051.aspx"&gt;Silverlight 3 Navigation Application Themes&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://smjenkins.members.winisp.net/slidentity/default.html?SlideShow=http://smjenkins.members.winisp.net/slidentity/slidentity.xaml"&gt;Slidentity&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The next session I did was on .NET RIA Services..&amp;#160; You can find the demo i did &lt;a href="http://bit.ly/4tmJA3"&gt;http://bit.ly/4tmJA3&lt;/a&gt; and the &lt;a href="http://blogs.msdn.com/brada/archive/2009/08/02/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-summary.aspx"&gt;full series&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9901271" width="1" height="1"&gt;</content><author><name>BradA</name><uri>http://blogs.msdn.com/members/BradA.aspx</uri></author><category term="Silverlight" scheme="http://blogs.msdn.com/brada/archive/tags/Silverlight/default.aspx" /><category term="RIAServices" scheme="http://blogs.msdn.com/brada/archive/tags/RIAServices/default.aspx" /></entry><entry><title>Belgium ReMix and Architect Forum</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/brada/archive/2009/09/29/belgium-remix-and-architect-forum-10-years-of-framework-design-guidelines.aspx" /><id>http://blogs.msdn.com/brada/archive/2009/09/29/belgium-remix-and-architect-forum-10-years-of-framework-design-guidelines.aspx</id><published>2009-09-30T01:07:00Z</published><updated>2009-09-30T01:07:00Z</updated><content type="html">&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BelgiumReMixandArchitectForum10YearsofFr_D480/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BelgiumReMixandArchitectForum10YearsofFr_D480/image_4.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN-LEFT: 0px; BORDER-LEFT-WIDTH: 0px; MARGIN-RIGHT: 0px" title=image border=0 alt=image align=right src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BelgiumReMixandArchitectForum10YearsofFr_D480/image_thumb_1.png" width=138 height=161 mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BelgiumReMixandArchitectForum10YearsofFr_D480/image_thumb_1.png"&gt;&lt;/A&gt; I had a great time at &lt;A href="http://www.microsoft.com/belux/remix09/#agenda" mce_href="http://www.microsoft.com/belux/remix09/#agenda"&gt;ReMix&lt;/A&gt; and the &lt;A href="http://www.microsoft.com/belux/msdn/terra_lite/events/2009-09-29_ArchitectForum/ArchitectForum.html"&gt;Architect Forum&lt;/A&gt; in Belgium.&amp;nbsp;&amp;nbsp;&amp;nbsp; I had a chance to cover build an application end-to-end with Silverlight 3 and RIA Services which was &lt;A href="http://blogs.msdn.com/brada/archive/2009/08/02/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-summary.aspx" mce_href="http://blogs.msdn.com/brada/archive/2009/08/02/business-apps-example-for-silverlight-3-rtm-and-net-ria-services-july-update-summary.aspx"&gt;basically the this application&lt;/A&gt; .&amp;nbsp;&amp;nbsp;&amp;nbsp; At the Architect Forum I had a chance to talk in more depth about the general application pattern we are thinking about for RIA applications.&amp;nbsp; I shameless stole some slides from &lt;A href="http://www.nikhilk.net/" mce_href="http://www.nikhilk.net/"&gt;Nikhil Kothari&lt;/A&gt; for this one.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Check out &lt;A href="http://www.slideshare.net/brada/foo-2092703" mce_href="http://www.slideshare.net/brada/foo-2092703"&gt;out the slides&lt;/A&gt; (&lt;A href="htp://brad_abrams.members.winisp.net/Projects/ReMix09/RIAServicesArchForum.pptx" mce_href="htp://brad_abrams.members.winisp.net/Projects/ReMix09/RIAServicesArchForum.pptx"&gt;direct link to slides&lt;/A&gt;)&lt;/LI&gt;
&lt;LI&gt;Check out the &lt;A href="http://brad_abrams.members.winisp.net/Projects/ReMix09/SilverlightBusinessApp.zip" mce_href="http://brad_abrams.members.winisp.net/Projects/ReMix09/SilverlightBusinessApp.zip"&gt;completed demo&lt;/A&gt;.&amp;nbsp; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BelgiumReMixandArchitectForum10YearsofFr_D480/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BelgiumReMixandArchitectForum10YearsofFr_D480/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BelgiumReMixandArchitectForum10YearsofFr_D480/image_thumb.png" width=335 height=143 mce_src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BelgiumReMixandArchitectForum10YearsofFr_D480/image_thumb.png"&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9901028" width="1" height="1"&gt;</content><author><name>BradA</name><uri>http://blogs.msdn.com/members/BradA.aspx</uri></author></entry><entry><title>Belgium Visual Studio User’s Group: 10 Years of Framework Design Guidelines</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/brada/archive/2009/09/28/belgium-visual-studio-user-s-group-10-years-of-framework-design-guidelines.aspx" /><id>http://blogs.msdn.com/brada/archive/2009/09/28/belgium-visual-studio-user-s-group-10-years-of-framework-design-guidelines.aspx</id><published>2009-09-28T23:15:03Z</published><updated>2009-09-28T23:15:03Z</updated><content type="html">&lt;p&gt;I had a great time at the the Belgium &lt;a href="http://visug.be/Eventdetails/tabid/95/EventId/16/Default.aspx"&gt;Visual Studio User’s Group&lt;/a&gt; meeting.&amp;#160; The turn out was excellent.&amp;#160; Thanks especially to &lt;a href="http://www.snowball.be/"&gt;Gill Cleeren&lt;/a&gt;&amp;#160; and &lt;a href="http://kinnie.blogspot.com/"&gt;Pieter Gheysens&lt;/a&gt; for hosting it.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://visug.be/"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BelgiumVisualStudioUsersGroup10YearsofFr_BA50/image_3.png" width="244" height="78" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Gill asked me to talk about &lt;a href="http://www.amazon.com/gp/product/0321545613?ie=UTF8&amp;amp;tag=bradabramsblo-20&amp;amp;link_code=wql&amp;amp;camp=212361&amp;amp;creative=380601"&gt;Framework Design Guidelines&lt;/a&gt; – I subject near and dear to my heart.&amp;#160;&amp;#160; I decided to do a bit of a look back over the last 10 years of framework design (we started&amp;#160; what would later become the CLR about 10 years ago)..&amp;#160;&amp;#160;&amp;#160; It is really fun to look at what has changed and what has not.&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.amazon.com/gp/product/0321545613?ie=UTF8&amp;amp;tag=bradabramsblo-20&amp;amp;link_code=wql&amp;amp;camp=212361&amp;amp;creative=380601"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="image" border="0" alt="image" align="left" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/BelgiumVisualStudioUsersGroup10YearsofFr_BA50/image_6.png" width="169" height="240" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Thanks to the great folks at Addison-Wesley i was able to give away a few copies of the &lt;a href="http://www.amazon.com/gp/product/0321545613?ie=UTF8&amp;amp;tag=bradabramsblo-20&amp;amp;link_code=wql&amp;amp;camp=212361&amp;amp;creative=380601"&gt;book&lt;/a&gt; as well. &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Afterwards, we got to talking about how this stuff is actually the easy part of framework design.&amp;#160; What is really hard is the social aspects.&amp;#160; How do you get management bought into spending time on building shared components?&amp;#160; how do you measure ROI in this space?&amp;#160;&amp;#160;&amp;#160; Do investments in well designed, common frameworks pay off?&amp;#160;&amp;#160; What do you think?&amp;#160; any positive or negative experiences?&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.slideshare.net/brada/framework-design-guidelines-for-brussels-users-group"&gt;Download the slide deck&lt;/a&gt;.&amp;#160; I am told there is a video as well… I will post a link when I get it.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Anyway, here is the deck, enjoy.&amp;#160; As I told someone at the event, plagiarism is the highest form of flattery.&amp;#160; &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9900435" width="1" height="1"&gt;</content><author><name>BradA</name><uri>http://blogs.msdn.com/members/BradA.aspx</uri></author><category term="Framework Design Guidelines" scheme="http://blogs.msdn.com/brada/archive/tags/Framework+Design+Guidelines/default.aspx" /></entry><entry><title>HanselMinutes Interview on RIA Services</title><link rel="alternate" type="text/html" href="http://blogs.msdn.com/brada/archive/2009/09/20/hanselminutes-interview-on-ria-services.aspx" /><id>http://blogs.msdn.com/brada/archive/2009/09/20/hanselminutes-interview-on-ria-services.aspx</id><published>2009-09-20T19:18:32Z</published><updated>2009-09-20T19:18:32Z</updated><content type="html">&lt;p&gt;I had a great opportunity to chat with the famous &lt;a href="http://www.hanselman.com/blog/"&gt;Scott Hanselman&lt;/a&gt; recently on &lt;a href="http://code.msdn.microsoft.com/RiaServices"&gt;.NET RIA Services&lt;/a&gt;.&amp;#160;&amp;#160;&amp;#160; We drilled a lot into the background for RIA Services and what the high level patterns we are addressing with RIA Services.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.hanselminutes.com/"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/HanselMinutesInterviewonRIAServices_82D8/image_3.png" width="244" height="67" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;lt;&lt;a href="http://www.hanselminutes.com/default.aspx?showID=198"&gt;&amp;lt;The Return of 3-Tier Architecture - RIA Services with Brad Abrams/&amp;gt;&lt;/a&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Brad Abrams runs a number of teams at Microsoft, most recently working on &amp;quot;Rich Internet Application Services&amp;quot; (RIA). Scott grills Brad on the rebirth of 3-tier architect, XML, REST and JSON. What's this thing about and is it the best way to write data-centric apps with Silverlight?&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160; Enjoy! &lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9897287" width="1" height="1"&gt;</content><author><name>BradA</name><uri>http://blogs.msdn.com/members/BradA.aspx</uri></author><category term="Silverlight" scheme="http://blogs.msdn.com/brada/archive/tags/Silverlight/default.aspx" /><category term="RIAServices" scheme="http://blogs.msdn.com/brada/archive/tags/RIAServices/default.aspx" /></entry></feed>