<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Training</title>
        <link>http://geekswithblogs.net/Shadowin/category/7991.aspx</link>
        <description>Learning and training kits.</description>
        <language>en-US</language>
        <copyright>Chris Eargle</copyright>
        <managingEditor>shadowin@gmail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>LearnVSXNow!</title>
            <link>http://geekswithblogs.net/Shadowin/archive/2009/05/21/learnvsxnow.aspx</link>
            <description>&lt;p&gt;I can't believe I've been writing packages for Visual Studio and didn't know about the series of blog articles on Visual Studio Exensibility by &lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/01/06/LearnVSXNowPart3.aspx"&gt;DiveDeeper&lt;/a&gt; or about the &lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/01/06/LearnVSXNowPart3.aspx"&gt;VSXtra&lt;/a&gt; project. Since I want a quick index of the LearnVSXNow! series, I'm posting links to every article. This is a series every managed package framework developer should read. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;LearnVSXNow!&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/01/02/LearnVSXNowPart1.aspx"&gt;How to start VSX programming?&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/01/03/LernVSXNowPart2.aspx"&gt;Creating an empty package&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/01/06/LearnVSXNowPart3.aspx"&gt;Creating a package with a simple command&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/01/08/LearnVSXNowPart4.aspx"&gt;Creating a package with a tool window&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/01/11/LearnVSXNowPart5.aspx"&gt;Basic VSX ideas&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/01/14/LearnVSXNowPart6.aspx"&gt;Creating our first toolset — Prolog&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/01/18/LearnVSXNowPart7.aspx"&gt;Creating our first toolset — Finishing the sample&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/01/22/LearnVSXNowPart8.aspx"&gt;Intermezzo — The regpkg.exe utility&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/01/31/LearnVSXNow9.aspx"&gt;Creating our first toolset — Refactoring to a service&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/02/04/LearnVSXNowPart10.aspx"&gt;Creating our first toolset — Reusing code&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/02/07/LearnVSXNowPart11.aspx"&gt;Testing a package&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/02/12/LearnVSXNowPart12.aspx"&gt;Stepping forward: “VsxLibrary” and “HowToPackage”&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/02/22/LearnVSXNowPart13.aspx"&gt;Menus and comands in VS IDE&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/03/02/LearnVSXNowPart14.aspx"&gt;Basics of the .vsct file&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/03/12/LearnVSXNowPart15.aspx"&gt;Creating a simple custom editor — the basics&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/03/14/LearnVSXNowPart16.aspx"&gt;Creating a simple custom editor — the first ten meter&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/03/17/LearnVSXNowPart17.aspx"&gt;Creating a simple custom editor — under pressure&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/04/17/LearnVSXNowPart18.aspx"&gt;Advanced VSCT concepts&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/04/17/LearnVSXNowPart19.aspx"&gt;PowerCommands Deep Dive — Command Architecture&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/04/20/LearnVSXNowPart20.aspx"&gt;PowerCommands Deep Dive — Commands and UI&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/05/20/LearnVSXNowPart21.aspx"&gt;PowerCommands Deep Dive — Analyzing Commands&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/06/14/LearnVSXNowPart22A.aspx"&gt;Thinking about a new MPF&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/06/24/LearnVSXNowPart23.aspx"&gt;Coping with GUIDs&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/07/08/LearnVSXNowPart24.aspx"&gt;Introducing VSXtra&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/07/14/LearnVSXNowPart25.aspx"&gt;Advanced VSCT Concepts: Behind Combos&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/07/23/LearnVSXNowPart26.aspx"&gt;Services — with no-code service initialization&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/07/25/LearnVSXNowPart27.aspx"&gt;Multiple Tool Windows&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/08/01/LearnVSXNowPart28.aspx"&gt;VSXtraCommands Part 1 — Command handling patterns&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/08/06/LearnVSXNowPart29.aspx"&gt;VSXtraCommands Part 2 — Commands removing recent items&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/09/01/LearnVSXNowPart30.aspx"&gt;Custom Editors in VSXtra&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/09/06/LearnVSXNowPart31.aspx"&gt;Merging Package Menus with VSCT&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/09/18/LearnVSXNowPart32.aspx"&gt;VSXtra at DevCon - Part 1&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/09/23/LearnVSXNowPart33.aspx"&gt;VSXtra at DevCon - Part 2&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/10/07/LearnVSXNowPart34.aspx"&gt;Working with Hierarchies Part 1 - Hierarchy Basics&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/10/09/LearnVSXNowPart35.aspx"&gt;Working with Hierarchies Part 2 - Internal Structure of Hierarchies&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/10/16/LearnVSXNowPart36.aspx"&gt;Working with Hierarchies Part 3 - Properties and Hierarchy Traversal&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/11/03/LearnVSXNowPart37.aspx"&gt;Meet Visual Studio 2010 and the New VS SDK 2010 CTP&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/11/04/LearnVSXNowPart38.aspx"&gt;VS 2010 Editor - Text Coloring Sample Deep Dive&lt;br /&gt;
&lt;/a&gt;&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/12/03/LearnVSXNowPart39.aspx"&gt;Working with Hierarchies Part 4 - Hierarchy Windows&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/12/05/LearnVSXNowPart40.aspx"&gt;Working with Hierarchies Part 5 - Managed Classes for Custom Hierarchies&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2009/02/02/LearnVSXNowPart41.aspx"&gt;Toolbar Layout and Persistence&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sidebar&lt;/strong&gt; &lt;/p&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/03/23/LVNSideBar1.aspx"&gt;Automatically loading packages&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/03/24/LVNSidebar2A.aspx"&gt;Resolving string resources&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/03/26/LVNSidebar3.aspx"&gt;Simplifying tool window declaration&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/04/06/LVNSidebar4.aspx"&gt;Command handlers&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/06/29/LVNSidebar5.aspx"&gt;Deep Dives on MSDN Code Gallery&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2008/08/30/LVNSidebar6.aspx"&gt;Longer version of Package Reference Sample Deep Dive&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://dotneteers.net/blogs/divedeeper/archive/2009/02/03/LVNSideBar7.aspx"&gt;Showing a toolbar at Visual Studio startup&lt;/a&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132350"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132350" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/Shadowin/aggbug/132350.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Eargle</dc:creator>
            <guid>http://geekswithblogs.net/Shadowin/archive/2009/05/21/learnvsxnow.aspx</guid>
            <pubDate>Thu, 21 May 2009 16:47:20 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/Shadowin/comments/132350.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/Shadowin/archive/2009/05/21/learnvsxnow.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/Shadowin/comments/commentRss/132350.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/Shadowin/services/trackbacks/132350.aspx</trackback:ping>
        </item>
        <item>
            <title>Zune Game Development Book</title>
            <link>http://geekswithblogs.net/Shadowin/archive/2009/03/16/zune-game-development-book.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&amp;amp;location=http%3A%2F%2Fwww.amazon.com%2FZune-Game-Development-using-XNA%2Fdp%2F1430218614%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1237240657%26sr%3D8-1&amp;amp;tag=kodef-20&amp;amp;linkCode=ur2&amp;amp;camp=1789&amp;amp;creative=9325"&gt;Zune Game Development Using XNA 3.0&lt;/a&gt;&lt;img style="BORDER-BOTTOM: medium none; BORDER-LEFT: medium none; MARGIN: 0px; BORDER-TOP: medium none; BORDER-RIGHT: medium none" border="0" alt="" width="1" height="1" src="http://www.assoc-amazon.com/e/ir?t=kodef-20&amp;amp;l=ur2&amp;amp;o=1" /&gt; by Dan Waters will be &lt;a href="http://blogs.msdn.com/dawate/archive/2009/03/16/zune-game-development-using-xna-3-0-is-published.aspx"&gt;released&lt;/a&gt; on March 23rd. &lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://www.chriseargle.com/image.axd?picture=lebook_2.jpg" /&gt; &lt;/p&gt;
&lt;p&gt;Here's the product description: &lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;XNA 3.0 brings you the ability to create games that will run not just on the PC and Xbox 360, but also on the Zune mobile device. While creating games for Zune is, in many ways, similar to working on the other platforms, it also presents its own unique set of challenges and opportunities. Smaller screens, limited storage, and less processing power all affect the way you need to think about designing and implementing your games. &lt;/p&gt;
&lt;p&gt;&lt;em&gt;Zune Game Development Using XNA 3.0&lt;/em&gt; is a comprehensive book that will guide you through the many aspects of XNA game development and their specific implementations on the Zune platform. The book addresses Zune game development concepts in detail and shows you how to apply them in practical, step–by–step examples, building complete, working XNA 3.0 examples along the way that you can download and play. &lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I primarily do business development, but the idea of making games for my Zune is just too good to pass up. I think I'll pick this book up next week. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=130130"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=130130" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/Shadowin/aggbug/130130.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Eargle</dc:creator>
            <guid>http://geekswithblogs.net/Shadowin/archive/2009/03/16/zune-game-development-book.aspx</guid>
            <pubDate>Mon, 16 Mar 2009 23:11:52 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/Shadowin/comments/130130.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/Shadowin/archive/2009/03/16/zune-game-development-book.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/Shadowin/comments/commentRss/130130.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/Shadowin/services/trackbacks/130130.aspx</trackback:ping>
        </item>
        <item>
            <title>WCF 3.5 Security Guidelines</title>
            <link>http://geekswithblogs.net/Shadowin/archive/2008/04/17/121317.aspx</link>
            <description>&lt;p&gt;The &lt;a target="_blank" mce_href="http://www.codeplex.com/WCFSecurity" href="http://www.codeplex.com/WCFSecurity"&gt;patterns &amp;amp; practices WCF Security Guidance project&lt;/a&gt; has released the the &lt;a target="_blank" mce_href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=Guidelines" href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=Guidelines"&gt;WCF 3.5 Security Guidelines&lt;/a&gt;. This is useful if you're trying to follow the best practices for securing your services. &lt;/p&gt;
&lt;p&gt;Here are the categories and topics for the initial release of the guidelines. For more in depth information, go to the &lt;a mce_href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=Guidelines" href="http://www.codeplex.com/WCFSecurity/Wiki/View.aspx?title=Guidelines"&gt;site&lt;/a&gt;.   &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Categories&lt;/strong&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Auditing and Logging &lt;/li&gt;
    &lt;li&gt;Authentication &lt;/li&gt;
    &lt;li&gt;Authorization &lt;/li&gt;
    &lt;li&gt;Binding &lt;/li&gt;
    &lt;li&gt;Configuration Management &lt;/li&gt;
    &lt;li&gt;Exception Management &lt;/li&gt;
    &lt;li&gt;Hosting &lt;/li&gt;
    &lt;li&gt;Impersonation and Delegation &lt;/li&gt;
    &lt;li&gt;Input/Data Validation &lt;/li&gt;
    &lt;li&gt;Proxy Considerations &lt;/li&gt;
    &lt;li&gt;Deployment considerations  &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Auditing and Logging&lt;/strong&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Use WCF auditing to audit your service &lt;/li&gt;
    &lt;li&gt;If non-repudiation is important, consider setting SuppressAuditFailure property to false &lt;/li&gt;
    &lt;li&gt;Use message logging to log operations on your service &lt;/li&gt;
    &lt;li&gt;Instrument for user management events &lt;/li&gt;
    &lt;li&gt;Instrument for significant business operations &lt;/li&gt;
    &lt;li&gt;Protect log files from unauthorized access &lt;/li&gt;
    &lt;li&gt;Do not log sensitive information &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Authentication &lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Know your authentication options &lt;/li&gt;
    &lt;li&gt;Use Windows Authentication when you can &lt;/li&gt;
    &lt;li&gt;If you support non-WCF clients using windows authentication and message security, consider using the Kerberos direct option &lt;/li&gt;
    &lt;li&gt;If your users are in AD, but you can’t use windows authentication, consider using username authentication &lt;/li&gt;
    &lt;li&gt;If your clients have certificates, consider using client certificate authentication &lt;/li&gt;
    &lt;li&gt;If you need to streamline certificate distribution to your clients for message encryption, consider using the negotiate credentials option &lt;/li&gt;
    &lt;li&gt;If your users are in a custom store, consider using username authentication with a custom validator &lt;/li&gt;
    &lt;li&gt;If your users are in a SQL membership store, use the SQL Membership Provider &lt;/li&gt;
    &lt;li&gt;If your partner applications need to be authenticated when calling WCF services, use client certificate authentication. &lt;/li&gt;
    &lt;li&gt;If you are using username authentication, use SQL Server Membership Provider instead of custom authentication &lt;/li&gt;
    &lt;li&gt;If you need to support intermediaries and a variety of transports between client and service, use message security to protect credentials &lt;/li&gt;
    &lt;li&gt;If you are using username authentication, validate user login information &lt;/li&gt;
    &lt;li&gt;Do not store passwords directly in the user store &lt;/li&gt;
    &lt;li&gt;Enforce strong passwords &lt;/li&gt;
    &lt;li&gt;Protect access to your credential store &lt;/li&gt;
    &lt;li&gt;If you are using Windows Forms to connect to WCF, do not cache credentials &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Authorization &lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;If you use ASP.NET roles, use the ASP.NET Role Provider &lt;/li&gt;
    &lt;li&gt;If you use windows groups for authorization, use ASP.NET Role Provider with AspNetWindowsTokenRoleProvider &lt;/li&gt;
    &lt;li&gt;If you store role information in SQL, consider using the SQL Server Role Provider for roles authorization &lt;/li&gt;
    &lt;li&gt;If you store role information in Windows Groups, consider using the WCF PrincipalPermissionAttribute class for roles authorization &lt;/li&gt;
    &lt;li&gt;If you need to authorize access to WCF operations, use declarative authorization &lt;/li&gt;
    &lt;li&gt;If you need to perform fine-grained authorization based on business logic, use imperative authorization &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Binding &lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;If you need to support clients over the internet, consider using wsHttpBinding. &lt;/li&gt;
    &lt;li&gt;If you need to expose your WCF service to legacy clients as an ASMX web service, use basicHttpBinding &lt;/li&gt;
    &lt;li&gt;If you need to support remote WCF clients within an intranet, consider using netTcpBinding. &lt;/li&gt;
    &lt;li&gt;If you need to support local WCF clients, consider using netNamedPipeBinding. &lt;/li&gt;
    &lt;li&gt;If you need to support disconnected queued calls, use netMsmqBinding. &lt;/li&gt;
    &lt;li&gt;If you need to support bidirectional communication between WCF Client and WCF service, use wsDualHttpBinding. &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Configuration Management&lt;/strong&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Use Replay detection to protect against message replay attacks &lt;/li&gt;
    &lt;li&gt;If you host your service in a Windows service, expose a metadata exchange (mex) binding &lt;/li&gt;
    &lt;li&gt;If you don’t want to expose your WSDL, turn off HttpGetEnabled and metadata exchange (mex) &lt;/li&gt;
    &lt;li&gt;Manage bindings and endpoints in config not code &lt;/li&gt;
    &lt;li&gt;Associate names with the service configuration when you create service behavior, endpoint behavior, and binding configuration &lt;/li&gt;
    &lt;li&gt;Encrypt configuration sections that contain sensitive data &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Exception Management&lt;/strong&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Use structured exception handling &lt;/li&gt;
    &lt;li&gt;Do not divulge exception details to clients in production &lt;/li&gt;
    &lt;li&gt;Use a fault contract to return error information to clients &lt;/li&gt;
    &lt;li&gt;Use a global exception handler to catch unhandled exceptions &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Hosting &lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;If you are hosting your service in a Windows Service, use a least privileged custom domain account &lt;/li&gt;
    &lt;li&gt;If you are hosting your service in IIS, use a least privileged service account &lt;/li&gt;
    &lt;li&gt;Use IIS to host your service unless you need to use a transport that IIS does not support &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Impersonation and Delegation&lt;/strong&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Know the impersonation options &lt;/li&gt;
    &lt;li&gt;If you have to flow the original caller, use constrained delegation &lt;/li&gt;
    &lt;li&gt;Consider LogonUser when you need to impersonate but you don’t have trusted delegation &lt;/li&gt;
    &lt;li&gt;Consider S4U when you need a Windows token and you don’t have the original caller’s credentials &lt;/li&gt;
    &lt;li&gt;Use programmatic impersonation to impersonate based on business logic &lt;/li&gt;
    &lt;li&gt;When impersonating programmatically be sure to revert to original context &lt;/li&gt;
    &lt;li&gt;Only impersonate on operations that require it &lt;/li&gt;
    &lt;li&gt;Use OperationBehavior to impersonate declaratively &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Input/Data Validation&lt;/strong&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;If you need to validate parameters, use parameter inspectors &lt;/li&gt;
    &lt;li&gt;If your service has operations that accept message or data contracts, use schemas to validate your messages &lt;/li&gt;
    &lt;li&gt;If you need to do schema validation, use message inspectors &lt;/li&gt;
    &lt;li&gt;Validate operation parameters for length, range, format and type &lt;/li&gt;
    &lt;li&gt;Validate parameter input on the server &lt;/li&gt;
    &lt;li&gt;Validate service responses on the client &lt;/li&gt;
    &lt;li&gt;Do not rely on client-side validation &lt;/li&gt;
    &lt;li&gt;Avoid user-supplied file name and path input &lt;/li&gt;
    &lt;li&gt;Do not echo untrusted input &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Proxy Considerations&lt;/strong&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Publish your metadata over HTTPS to protect your clients from proxy spoofing &lt;/li&gt;
    &lt;li&gt;If you turn off mutual authentication, be aware of service spoofing &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Deployment considerations&lt;/strong&gt; &lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Do not use temporary certificates in production &lt;/li&gt;
    &lt;li&gt;If you are using a custom domain account in the identity pool for your WCF application, create an SPN for Kerberos to authenticate the client. &lt;/li&gt;
    &lt;li&gt;If you are using a custom service account and need to use trusted for delegation, create an SPN &lt;/li&gt;
    &lt;li&gt;If you are hosting your service in a Windows Service, using a custom domain identity, and ASP.NET needs to use constrained trusted for delegation when calling the service, create an SPN &lt;/li&gt;
    &lt;li&gt;Use IIS to host your service unless you need to use a transport that IIS does not support &lt;/li&gt;
    &lt;li&gt;Use a least privileged account to run your WCF service &lt;/li&gt;
    &lt;li&gt;Protect sensitive data in your configuration files &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;My Related Posts&lt;/strong&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121317"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121317" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/Shadowin/aggbug/121317.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Eargle</dc:creator>
            <guid>http://geekswithblogs.net/Shadowin/archive/2008/04/17/121317.aspx</guid>
            <pubDate>Thu, 17 Apr 2008 18:22:03 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/Shadowin/comments/121317.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/Shadowin/archive/2008/04/17/121317.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/Shadowin/comments/commentRss/121317.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/Shadowin/services/trackbacks/121317.aspx</trackback:ping>
        </item>
        <item>
            <title>.NET 3.5 Enhancements Training Kit</title>
            <link>http://geekswithblogs.net/Shadowin/archive/2008/04/16/121290.aspx</link>
            <description>&lt;p&gt;Microsoft has released a &lt;a class="" title="Training Kit Download" mce_href="https://www.microsoft.com/downloads/details.aspx?FamilyID=355c80e9-fde0-4812-98b5-8a03f5874e96&amp;amp;displaylang=en" href="https://www.microsoft.com/downloads/details.aspx?FamilyID=355c80e9-fde0-4812-98b5-8a03f5874e96&amp;amp;displaylang=en"&gt;training kit&lt;/a&gt; for .NET Framework 3.5 Enhancements. It includes labs, demos, and Power Point files for the following technologies:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;ASP.NET MVC &lt;/li&gt;
    &lt;li&gt;ASP.NET Dynamic Data &lt;/li&gt;
    &lt;li&gt;ASP.NET AJAX History &lt;/li&gt;
    &lt;li&gt;ASP.NET Silverlight controls &lt;/li&gt;
    &lt;li&gt;ADO.NET Data Services &lt;/li&gt;
    &lt;li&gt;ADO.NET Entity Framework &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121290"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=121290" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/Shadowin/aggbug/121290.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Chris Eargle</dc:creator>
            <guid>http://geekswithblogs.net/Shadowin/archive/2008/04/16/121290.aspx</guid>
            <pubDate>Wed, 16 Apr 2008 19:04:19 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/Shadowin/comments/121290.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/Shadowin/archive/2008/04/16/121290.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/Shadowin/comments/commentRss/121290.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/Shadowin/services/trackbacks/121290.aspx</trackback:ping>
        </item>
    </channel>
</rss>