<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://weblogs.asp.net/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>ScottGu's Blog</title><link>http://weblogs.asp.net/scottgu/default.aspx</link><description>Scott Guthrie lives in Seattle and builds a few products for Microsoft</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Professional ASP.NET 3.5 Book (only $16 on Amazon for a short time)</title><link>http://weblogs.asp.net/scottgu/archive/2008/05/06/professional-asp-net-3-5-book-only-16-on-amazon-for-a-short-time.aspx</link><pubDate>Tue, 06 May 2008 08:38:26 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6161788</guid><dc:creator>ScottGu</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=6161788</wfw:commentRss><comments>http://weblogs.asp.net/scottgu/archive/2008/05/06/professional-asp-net-3-5-book-only-16-on-amazon-for-a-short-time.aspx#comments</comments><description>&lt;font face="arial" size="2"&gt;   &lt;p&gt;One of the things I like to track are book sales on Amazon.com, which provides a useful data point to monitor what developers are interested in on any given day.&amp;#160; I use the &lt;a href="http://www.TitleZ.com" target="_blank"&gt;www.TitleZ.com&lt;/a&gt; site (which is built using ASP.NET) to track specific titles I want to watch - it then generates a report showing real-time Amazon sales ranking data, as well as 7 day, 30 day and 90 day sales ranking averages.&lt;/p&gt;    &lt;p&gt;This morning I pulled up my report and saw the usual books near the top of my list, and was about to navigate away when I noticed the eye-popping amazon ranking of the top book -&amp;quot;&lt;a href="http://www.amazon.com/gp/product/0470187573/104-4617720-5654313?ie=UTF8&amp;amp;tag=scoblo04-20&amp;amp;linkCode=xm2&amp;amp;camp=1789&amp;amp;creativeASIN=0470187573" target="_blank"&gt;Professional ASP.NET 3.5: In C# and VB&lt;/a&gt;&amp;quot; by Bill Evjen, Scott Hanselman and Devin Rader.&amp;#160; Its Amazon sales rank was a stunning #95 (of all books on Amazon), which meant it was outselling even Harry Potter (which is pretty much unheard of for any technology book).&lt;/p&gt;    &lt;p&gt;It turns out that Amazon is holding a special price promotion for a short time on a few books - and this was one that was selected.&amp;#160; Instead of the usual $54 price, you can buy it for a short time for a ridiculous $16.49.&amp;#160; I'm not sure how long this promotion will last - but if you are looking for a great ASP.NET 3.5 book this might be something you might want to take advantage of:&lt;/p&gt;    &lt;p&gt;&lt;a href="http://www.amazon.com/gp/product/0470187573/104-4617720-5654313?ie=UTF8&amp;amp;tag=scoblo04-20&amp;amp;linkCode=xm2&amp;amp;camp=1789&amp;amp;creativeASIN=0470187573" target="_blank"&gt;&lt;img src="http://silverlight1blogpost.s3.amazonaws.com/scotthabook.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;The book is a great ASP.NET 3.5 book and an excellent end to end resource.&amp;#160; It has been on the best seller list for programming books since it came out in March (usually in the top 5 of all programming titles), and has received glowing reviews (I posted a review of it on Amazon a few weeks ago and gave it 5 stars).&lt;/p&gt;    &lt;p&gt;If you are in the market for a good ASP.NET book, you might want to consider taking Amazon up on this offer before it closes (and apologies in advance if the price changes before you read this).&lt;/p&gt;    &lt;p&gt;Hope this helps,&lt;/p&gt;    &lt;p&gt;Scott&lt;/p&gt;    &lt;p&gt;P.S. If you are looking for other good .NET 3.5 and VS 2008 books - I also recommend: &lt;a href="http://www.amazon.com/gp/product/0596527578/002-5242737-1614454?ie=UTF8&amp;amp;tag=scoblo04-20&amp;amp;linkCode=xm2&amp;amp;camp=1789&amp;amp;creativeASIN=0596527578" target="_blank"&gt;C# 3.0 In a Nutshell&lt;/a&gt;, &lt;a href="http://www.amazon.com/gp/product/1933988169?ie=UTF8&amp;amp;tag=scoblo04-20&amp;amp;linkCode=xm2&amp;amp;camp=1789&amp;amp;creativeASIN=1933988169" target="_blank"&gt;LINQ in Action&lt;/a&gt;, and &lt;a href="http://www.amazon.com/gp/product/1590597893/002-5242737-1614454?ie=UTF8&amp;amp;tag=scoblo04-20&amp;amp;linkCode=xm2&amp;amp;camp=1789&amp;amp;creativeASIN=1590597893" target="_blank"&gt;Pro LINQ: Language Integrated Query in C# 2008&lt;/a&gt; (all of which average a 5 star rating on Amazon).&lt;/p&gt; &lt;/font&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6161788" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category></item><item><title>April 28th Links: ASP.NET, ASP.NET AJAX, ASP.NET MVC, Silverlight</title><link>http://weblogs.asp.net/scottgu/archive/2008/04/28/april-28th-links-asp-net-asp-net-ajax-asp-net-mvc-silverlight.aspx</link><pubDate>Tue, 29 Apr 2008 05:35:13 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6140206</guid><dc:creator>ScottGu</dc:creator><slash:comments>30</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=6140206</wfw:commentRss><comments>http://weblogs.asp.net/scottgu/archive/2008/04/28/april-28th-links-asp-net-asp-net-ajax-asp-net-mvc-silverlight.aspx#comments</comments><description>&lt;font face="arial" size="2"&gt;   &lt;p&gt;Here is the latest in my &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/04/11/april-11th-links-asp-net-asp-net-ajax-asp-net-mvc-visual-studio-silverlight.aspx" target="_blank"&gt;link-listing series&lt;/a&gt;.&amp;#160; Also check out my &lt;a href="http://weblogs.asp.net/scottgu/pages/ASP.NET-2.0-Tips_2C00_-Tricks_2C00_-Recipes-and-Gotchas.aspx" target="_blank"&gt;ASP.NET Tips, Tricks and Tutorials page&lt;/a&gt; and &lt;a href="http://weblogs.asp.net/scottgu/pages/silverlight-posts.aspx" target="_blank"&gt;Silverlight Tutorials page&lt;/a&gt; for links to popular articles I've done myself in the past.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;ASP.NET&lt;/u&gt;&lt;/h3&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://aspnet.4guysfromrolla.com/articles/041608-1.aspx" target="_blank"&gt;Displaying the Number of Active Users on an ASP.NET Site&lt;/a&gt;: Scott Mitchell continues his excellent series on ASP.NET's membership, roles, and profile support.&amp;#160; In this article he discusses how to use ASP.NET's Membership features to estimate and display the number of active users currently visiting a site.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://geekswithblogs.net/frankw/archive/2008/04/27/new-dynamic-data-preview-0423-refresh.aspx" target="_blank"&gt;ASP.NET Dynamic Data Update&lt;/a&gt;: The ASP.NET team last week released an update of the new ASP.NET Dynamic Data feature.&amp;#160; This update adds several new features including &lt;a href="http://blogs.msdn.com/brada/archive/2008/04/23/updated-asp-net-dynamic-data-bits-posted.aspx" target="_blank"&gt;cleaner URL support&lt;/a&gt; using the same URL routing feature that ASP.NET MVC uses, as well as better confirmation, foreign-key, and template support.&amp;#160; &lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://www.paraesthesia.com/archive/2008/04/16/asp.net-testing-with-ivonna.aspx" target="_blank"&gt;ASP.NET Testing with Ivonna&lt;/a&gt;: Travis Illig blogs about a &lt;a href="http://www.sm-art.biz/Ivonna.aspx" target="_blank"&gt;new testing framework named Ivonna&lt;/a&gt; that enables unit testing of ASP.NET web forms.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;h3&gt;&lt;u&gt;ASP.NET AJAX&lt;/u&gt;&lt;/h3&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://www.nikhilk.net/Ajax-Templates.aspx" target="_blank"&gt;ASP.NET AJAX UI Templates&lt;/a&gt;: Nikhil Kothari from the ASP.NET team has a cool post that shows off a prototype he has been working on that enables clean client-side AJAX templating of UI.&amp;#160; &lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://mattberseth.com/blog/2008/04/ajaxcontroltoolkit_tabcontaine.html" target="_blank"&gt;ASP.NET AJAX Control Toolkit TabContainer Theme Gallery&lt;/a&gt;: Matt Berseth has another of his excellent posts - this one shows off a bunch of cool themes you can use to style the TabContainer control in the ASP.NET AJAX Control Toolkit.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://weblogs.asp.net/pglavich/archive/2008/04/07/reducing-page-load-times-with-updatepanels-and-timers.aspx" target="_blank"&gt;Reducing Page Load Times with UpdatePanels and Timers&lt;/a&gt;: Paul Glavich posts of a cool trick you can use with tab controls to asynchronously load their content in the background in order to improve perceived page load time.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://encosia.com/2008/04/16/why-do-aspnet-ajax-page-methods-have-to-be-static/" target="_blank"&gt;Why do ASP.NET AJAX page methods have to be static?&lt;/a&gt; Dave Ward has a useful article that talks about the page methods feature in ASP.NET AJAX, and explains why they are static methods.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://weblogs.asp.net/bradvincent/archive/2008/04/28/better-jquery-intellisense-in-vs2008.aspx" target="_blank"&gt;JQuery Intellisense in VS 2008&lt;/a&gt;: Brad Vincent posts about using the &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/02/08/vs-2008-web-development-hot-fix-roll-up-available.aspx" target="_blank"&gt;VS 2008 Web Development Hot-Fix&lt;/a&gt; we released in February to get a nice JavaScript intellisense experience in Visual Studio 2008 when using the JQuery AJAX library.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;h3&gt;&lt;u&gt;ASP.NET MVC&lt;/u&gt;&lt;/h3&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://www.iridescence.no/Posts/Inversion-of-Control-ASPNET-MVC-and-Unit-Testing.aspx" target="_blank"&gt;Inversion of Control, ASP.NET MVC and Unit Testing&lt;/a&gt;: Fredrik Kalseth has a cool article that talks about the concepts behind inversion of control (IOC) and how you can use this with ASP.NET MVC to better isolate dependencies and enable better unit testing of your code.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://weblogs.asp.net/stephenwalther/archive/2008/04/27/talks-asp-net-mvc-post-conference-workshop-at-asp-net-connections-orlando.aspx" target="_blank"&gt;Stephen Walther's ASP.NET MVC Talk:&lt;/a&gt; Stephen Walther delivered a many-hour ASP.NET MVC post conference talk at ASP.NET Connections last week.&amp;#160; You can download his slides + demos for free.&amp;#160; Also check out his previous posts on &lt;a href="http://weblogs.asp.net/stephenwalther/archive/2008/03/19/tdd-test-driven-development-with-visual-studio-2008-unit-tests.aspx" target="_blank"&gt;Unit Tests with Visual Studio 2008&lt;/a&gt; and &lt;a href="http://weblogs.asp.net/stephenwalther/archive/2008/03/22/tdd-introduction-to-rhino-mocks.aspx" target="_blank"&gt;TDD with Rhino Mocks&lt;/a&gt;.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://geekswithblogs.net/hex/archive/2008/04/19/asp.net-mvc-framework---new-version-of-the-mvc-contrib.aspx" target="_blank"&gt;MVC Contrib Project Update&lt;/a&gt;: Eric Hexter blogs about some of the latest updates to the open source MvcContrib project to work with the latest &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/04/16/asp-net-mvc-source-refresh-preview.aspx" target="_blank"&gt;ASP.NET MVC interim source release&lt;/a&gt;.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://blog.jeremyskinner.me.uk/2008/04/19/testing-action-results-with-aspnet-mvc/" target="_blank"&gt;Testing Action Results with ASP.NET MVC&lt;/a&gt;: Jeremy Skinner blogs about some cool extension method helpers he has added to MvcContrib to enable pretty sweet testing of Controller actions.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://www.squaredroot.com/post/2008/04/MVC-Membership-Starter-Kit-1-2.aspx" target="_blank"&gt;MVC Membership Starter Kit - 1.2 Release&lt;/a&gt;: Troy Goode has posted an update to his excellent MVC Membership Starter Kit.&amp;#160; This version works with the interim ASP.NET MVC source release.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;h3&gt;&lt;u&gt;Silverlight&lt;/u&gt;&lt;/h3&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://blogs.msdn.com/scmorris/archive/2008/04/14/defining-silverlight-datagrid-columns-at-runtime.aspx" target="_blank"&gt;Defining Silverlight DataGrid Columns at Runtime&lt;/a&gt;: Scott Morrison from the Silverlight team has a cool blog post that talks about how to define Silverlight DataGrid Columns via code at runtime.&amp;#160; Visit my &lt;a href="http://weblogs.asp.net/scottgu/pages/silverlight-posts.aspx" target="_blank"&gt;Silverlight links page&lt;/a&gt; for more DataGrid posts.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://scorbs.com/2008/04/05/silverlight-http-networking-stack-part-1-site-of-origin-communication" target="_blank"&gt;Silverlight HTTP Networking Stack&lt;/a&gt; (&lt;a href="http://scorbs.com/2008/04/05/silverlight-http-networking-stack-part-1-site-of-origin-communication" target="_blank"&gt;Part 1&lt;/a&gt;), (&lt;a href="http://scorbs.com/2008/04/15/silverlight-http-networking-stack-part-2-cross-domain-communication-overview/" target="_blank"&gt;Part 2&lt;/a&gt;), (&lt;a href="http://scorbs.com/2008/04/22/silverlight-http-networking-stack-part-3-configuring-a-cross-domain-policy-file/" target="_blank"&gt;Part 3&lt;/a&gt;): Karen Corby from the Silverlight team has a great three part blog series that talks about the new Silverlight 2 networking stack and how cross domain security works with it.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://weblogs.asp.net/dwahlin/archive/2008/04/10/pushing-data-to-a-silverlight-client-with-sockets-part-i.aspx" target="_blank"&gt;Pushing Data to a Silverlight Client with Sockets (Part 1)&lt;/a&gt; and &lt;a href="http://weblogs.asp.net/dwahlin/archive/2008/04/13/pushing-data-to-a-silverlight-client-with-sockets-part-ii.aspx" target="_blank"&gt;(Part 2)&lt;/a&gt;: Dan Wahlin demonstrates how to implement a &amp;quot;GameStream&amp;quot; socket server and connect to it from a Silverlight client using Silverlight 2's built-in network sockets support.&amp;#160; &lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://weblogs.asp.net/dwahlin/archive/2008/04/27/silverlight-the-song.aspx" target="_blank"&gt;Silverlight - the Song&lt;/a&gt;: Spike Xavier and Dan Wahlin have posted another of their unique and special songs. :-)&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;Hope this helps,&lt;/p&gt;    &lt;p&gt;Scott&lt;/p&gt; &lt;/font&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6140206" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Atlas/default.aspx">Atlas</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Link+Listing/default.aspx">Link Listing</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/MVC/default.aspx">MVC</category></item><item><title>Slides from my ASP.NET Connections Orlando Talks</title><link>http://weblogs.asp.net/scottgu/archive/2008/04/27/slides-from-my-asp-net-connections-orlando-talks.aspx</link><pubDate>Mon, 28 Apr 2008 04:51:55 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6137954</guid><dc:creator>ScottGu</dc:creator><slash:comments>22</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=6137954</wfw:commentRss><comments>http://weblogs.asp.net/scottgu/archive/2008/04/27/slides-from-my-asp-net-connections-orlando-talks.aspx#comments</comments><description>&lt;font face="arial" size="2"&gt;   &lt;p&gt;Last week I presented at the &lt;a href="http://www.asp-connections.com/shows/SP2008ASP/default.asp?s=112&amp;amp;refer=" target="_blank"&gt;ASP.NET Connections Conference&lt;/a&gt; in Orlando.&amp;#160; I gave a general session talk on Monday, and then two breakout talks later that day.&amp;#160; You can download my slides+samples below:&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;General Session&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;The slides for my keynote can be downloaded &lt;a href="http://www.scottgu.com/blogposts/orlando2008/keynote.zip" target="_blank"&gt;here&lt;/a&gt;.&amp;#160; &lt;/p&gt;    &lt;p&gt;In the talk I demonstrated how to debug the .NET Framework source code.&amp;#160; You can learn how to set this up with VS 2008 &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/01/16/net-framework-library-source-code-now-available.aspx" target="_blank"&gt;here&lt;/a&gt;.&amp;#160; &lt;/p&gt;    &lt;p&gt;I also demonstrated building a site using the new ASP.NET Dynamic Data support - which you can learn more about &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/04/10/asp-net-dynamic-data-preview-available.aspx" target="_blank"&gt;here&lt;/a&gt;.&amp;#160; I also demonstrated using the new ASP.NET MVC Framework - which you can learn more about &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/04/16/asp-net-mvc-source-refresh-preview.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;I also showed off the new Hard Rock Memorabilia site built with Silverlight 2.&amp;#160; You can try out the Hard Rock application yourself &lt;a href="http://memorabilia.hardrock.com/" target="_blank"&gt;here&lt;/a&gt;.&amp;#160; You can learn more about Silverlight from my links page &lt;a href="http://weblogs.asp.net/scottgu/pages/silverlight-posts.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Building .NET Applications with Silverlight &lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;The slides + demos for Silverlight breakout talk can be downloaded &lt;a href="http://www.scottgu.com/blogposts/orlando2008/silverlight.zip" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;You can learn more about Silverlight from my links page &lt;a href="http://weblogs.asp.net/scottgu/pages/silverlight-posts.aspx" target="_blank"&gt;here&lt;/a&gt;.&amp;#160; In particular, I recommend reading my tutorial posts &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/02/22/first-look-at-silverlight-2.aspx" target="_blank"&gt;here&lt;/a&gt; and &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/02/28/first-look-at-using-expression-blend-with-silverlight-2.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;ASP.NET MVC &lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;The slides + demos for my ASP.NET MVC talk can be downloaded &lt;a href="http://www.scottgu.com/blogposts/orlando2008/mvc.zip" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;You can learn more about the latest ASP.NET MVC source refresh &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/04/16/asp-net-mvc-source-refresh-preview.aspx" target="_blank"&gt;here&lt;/a&gt;.&amp;#160; Stephen Walther also just posted a really good set of slides + demos from his post conference tutorial on ASP.NET MVC &lt;a href="http://weblogs.asp.net/stephenwalther/archive/2008/04/27/talks-asp-net-mvc-post-conference-workshop-at-asp-net-connections-orlando.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;Hope this helps,&lt;/p&gt;    &lt;p&gt;Scott&lt;/p&gt; &lt;/font&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6137954" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Talks/default.aspx">Talks</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/MVC/default.aspx">MVC</category></item><item><title>ASP.NET MVC Source Refresh Preview</title><link>http://weblogs.asp.net/scottgu/archive/2008/04/16/asp-net-mvc-source-refresh-preview.aspx</link><pubDate>Thu, 17 Apr 2008 04:56:47 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6104816</guid><dc:creator>ScottGu</dc:creator><slash:comments>118</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=6104816</wfw:commentRss><comments>http://weblogs.asp.net/scottgu/archive/2008/04/16/asp-net-mvc-source-refresh-preview.aspx#comments</comments><description>&lt;font face="arial" size="2"&gt;   &lt;p&gt;We recently opened up a new &lt;a href="http://www.codeplex.com/aspnet" target="_blank"&gt;ASP.NET CodePlex Project&lt;/a&gt; that we will be using to provide previews (with buildable source code) for several upcoming ASP.NET features and releases.&lt;/p&gt;    &lt;p&gt;Last month we used it to publish the &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/03/21/asp-net-mvc-source-code-now-available.aspx" target="_blank"&gt;first drop of the ASP.NET MVC source code&lt;/a&gt;.&amp;#160; This first drop included the source for the ASP.NET MVC Preview 2 release that we shipped at MIX, along with Visual Studio project files to enable you to patch and build it yourself.&lt;/p&gt;    &lt;p&gt;A few hours ago we &lt;a href="http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=12640" target="_blank"&gt;published a refresh&lt;/a&gt; of the ASP.NET MVC source code on the site.&amp;#160; This source refresh&lt;strong&gt;&lt;em&gt; &lt;u&gt;is not&lt;/u&gt;&lt;/em&gt;&lt;/strong&gt; an official new ASP.NET MVC preview release - instead it is an interim drop that provides a look at the current state of the source tree.&amp;#160; We will ship the official &amp;quot;ASP.NET MVC Preview 3&amp;quot; release in a few weeks after we finish up some more work (more features and tweaks to existing ones, better VS tool integration, VS express edition support, documentation, etc).&amp;#160; If you are someone who wants a hassle-free installation of ASP.NET MVC to use that ships with documentation and full tool support you'll probably want to wait for this official preview release.&amp;#160; If you are someone who wants a chance to see an early &amp;quot;preview of the preview&amp;quot; and have the opportunity to start using and giving feedback on some of the features immediately, today's source refresh is probably interesting to look at.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Improvements with this ASP.NET MVC Source Refresh&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;This week's update (which you can download &lt;a href="http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=12640" target="_blank"&gt;here&lt;/a&gt;) includes a number of improvements to ASP.NET MVC.&amp;#160; Some of these include:&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;In addition to posting the source code for the ASP.NET MVC framework, we are also posting the source code for the unit tests that we use to test it.&amp;#160; These tests are implemented using MSTest and the open source &lt;a href="http://code.google.com/p/moq/" target="_blank"&gt;Moq&lt;/a&gt; mocking framework.&amp;#160; A VS 2008 project file for the unit tests is included to make it easy to build and run them locally within your VS 2008 IDE.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;Significantly easier support for testing Controller classes.&amp;#160; You can now unit test common Controller scenarios without having to mock any objects (more details on how this works below).&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;Several nice feature additions and usability improvements to the URL routing system (more details below).&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;h3&gt;&lt;u&gt;Creating a New ASP.NET MVC Project&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;You can build your own copy of the ASP.NET MVC assemblies by downloading the MVC source and compiling it locally, or alternatively you can download a VS Template package to get a pre-built version of them along with a Visual Studio project template that you can use to quickly build a new ASP.NET MVC Project that uses the latest bits.&lt;/p&gt;    &lt;p&gt;After you install the ASP.NET MVC source refresh .VSI template, a new &amp;quot;ASP.NET MVC Application&amp;quot; project template will show up under the &amp;quot;My Templates&amp;quot; section of your &amp;quot;New Project&amp;quot; dialog:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/aprilmvc/step1.png" /&gt; &lt;/p&gt;    &lt;p&gt;This new &amp;quot;My Templates&amp;quot; version of the MVC project template lives side-by-side with the previous ASP.NET MVC Preview 2 release (which you can see above it in the main project templates section of the dialog).&amp;#160; This allows you to safely create new projects and and use both the latest source version and the last official preview version on the same machine.&lt;/p&gt;    &lt;p&gt;When you create a new project using this updated ASP.NET MVC Project template you'll by default get a project that looks like below:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/aprilmvc/step23.png" /&gt; &lt;/p&gt;    &lt;p&gt;This new project solution contains one Controller (&amp;quot;HomeController&amp;quot;) under the &amp;quot;\Controllers&amp;quot; directory and two View templates (&amp;quot;About&amp;quot; and &amp;quot;Index&amp;quot;) under the &amp;quot;\Views\Home&amp;quot; sub-directory.&amp;#160; Both view templates are based on a common master page for the site (&amp;quot;Site.master&amp;quot;), all of whose styles are defined within a &amp;quot;Site.css&amp;quot; file under the &amp;quot;\Content&amp;quot; directory.&lt;/p&gt;    &lt;p&gt;When you run the application the built-in web-server will automatically start up and you'll see the site's &amp;quot;Home&amp;quot; content:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/aprilmvc/step3.png" /&gt; &lt;/p&gt;    &lt;p&gt;Clicking the &amp;quot;About us&amp;quot; tab will then display the &amp;quot;About&amp;quot; content:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/aprilmvc/step5.png" /&gt; &lt;/p&gt;    &lt;p&gt;The &amp;quot;HomeController&amp;quot; class in the project is responsible for handling both of the URLs above and has two action methods like below:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/aprilmvc/step6.png" /&gt; &lt;/p&gt;    &lt;p&gt;The default &amp;quot;Site.master&amp;quot; template looks for a &amp;quot;Title&amp;quot; value in the ViewData collection and uses it to render the &amp;lt;title&amp;gt; element of the HTML page.&amp;#160; The default &amp;quot;Index&amp;quot; view template looks for a &amp;quot;Message&amp;quot; value and uses it to render the home page's welcome message.&amp;#160; You can obviously go in and customize these files however you want.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Controller Changes with this ASP.NET MVC Drop&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;If you were reading the above code closely you might have noticed a few changes with how Controller classes are by default implemented using this new ASP.NET MVC source refresh drop.&amp;#160; &lt;/p&gt;    &lt;p&gt;With the ASP.NET MVC Preview 2 release the above HomeController action methods would have instead been implemented like below:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/aprilmvc/step8.png" /&gt; &lt;/p&gt;    &lt;p&gt;The MVC feature team is experimenting with a few ideas in this week's drop and are trying out some new ideas: &lt;/p&gt;    &lt;ol&gt;     &lt;li&gt;       &lt;p&gt;Action methods on Controllers now by default return an &amp;quot;ActionResult&amp;quot; object (instead of void).&amp;#160; This ActionResult object indicates the result from an action (a view to render, a URL to redirect to, another action/route to execute, etc).&amp;#160; &lt;/p&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;p&gt;The RenderView(), RedirectToAction(), and Redirect() helper methods on the Controller base class now return typed ActionResult objects (which you can further manipulate or return back from action methods).&lt;/p&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;p&gt;The RenderView() helper method can now be called without having to explicitly pass in the name of the view template to render.&amp;#160; When you omit the template name the RenderView() method will by default use the name of the action method as the name of the view template to render.&amp;#160; So calling &amp;quot;RenderView()&amp;quot; with no parameters inside the &amp;quot;About()&amp;quot; action method is now the same as explicitly writing &amp;quot;RenderView('About')&amp;quot;.&lt;/p&gt;     &lt;/li&gt;   &lt;/ol&gt;    &lt;p&gt;It is pretty easy to update existing Controller classes built with Preview 2 to use this new pattern (just change void to ActionResult and add a return statement in front of any RenderView or RedirectToAction helper method calls).&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Returning ActionResult Objects from Action Methods&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;So why change Controller action methods to return ActionResult objects by default instead of returning void?&amp;#160; A number of other popular Web-MVC frameworks use the return object approach (including Django, Tapestry and others), and we found for ASP.NET MVC that it brought a few nice benefits:&lt;/p&gt;    &lt;ol&gt;     &lt;li&gt;       &lt;p&gt;It enables much cleaner and easier unit testing support for Controllers.&amp;#160; You no longer have to mock out methods on the Response object or ViewEngine objects in order to unit test the response behavior of action methods.&amp;#160; Instead, you can simply assert conditions using the ActionResult object returned from calling the Action method within your unit test (see next section below).&lt;/p&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;p&gt;It can make Controller logic flow intentions a little clearer and more explicit in scenarios where there might be two different outcomes depending on some condition (for example: redirect if condition A is true, otherwise render a view template it is false).&amp;#160; This can make non-trivial controller action method code easier to read and follow.&lt;/p&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;p&gt;It enables some nice composition scenarios where a FilterActionAttribute can take the result of an action method and modify/transform it before executing it.&amp;#160; For example: a &amp;quot;Browse&amp;quot; action on a ProductCatalog controller might return an RenderActionResult that indicates it wants to render a &amp;quot;List&amp;quot; view of products.&amp;#160; A FilterActionAttribute declaratively set on the controller class could then have a chance to customize the specific &amp;quot;List&amp;quot; view template rendered to be either List-html.aspx or List-xml.aspx depending on the preferred MIME type of the client.&amp;#160; Multiple FilterActionAttributes can also optionally be chained together to flow the results from one to another.&lt;/p&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;p&gt;It provides a nice extensibility mechanism for people (including ourselves) to add additional features in the future.&amp;#160; New ActionResult types can be easily created by sub-classing the ActionResult base class and overriding the &amp;quot;ExecuteResult&amp;quot; method.&amp;#160; It would be easy to create a &amp;quot;RenderFile()&amp;quot; helper method, for example, that a developer writing an action could call to return a new &amp;quot;FileActionResult&amp;quot; object.&lt;/p&gt;     &lt;/li&gt;      &lt;li&gt;       &lt;p&gt;It will enable some nice Asynchronous execution scenarios in the future.&amp;#160; Action methods will be able to return an AsyncActionResult object which indicates that they are waiting on a network operation and want to yield back the worker thread so that ASP.NET can use it to execute another request until the network call completes.&amp;#160; This will enable developers to avoid blocking threads on a server, and support very efficient and scalable code.&lt;/p&gt;     &lt;/li&gt;   &lt;/ol&gt;    &lt;p&gt;One of the goals with this interim preview is to give people a chance to play around with this new approach and do real-world app-building and learning with it.&lt;/p&gt;    &lt;p&gt;We will also post an alternative Controller base class sample that you can use if you still prefer the previous &amp;quot;void&amp;quot; action return approach.&amp;#160; We deliberately didn't include this alternative Controller base class in this source refresh drop, though, because we want to encourage folks to give the &amp;quot;ActionResult&amp;quot; return approach a try and send us their app-building feedback on it.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;How To Unit Test Controller Action Methods&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;I mentioned above that the new ActionResult approach can make unit testing controllers much easier (and avoid the need to use mocking for common scenarios).&amp;#160; Let's walk through an example of this in action.&lt;/p&gt;    &lt;p&gt;Consider the simple NumberController class below:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/aprilmvc/step22.png" /&gt; &lt;/p&gt;    &lt;p&gt;This Controller class has an &amp;quot;IsEvenNumber&amp;quot; action method that takes a number as a URL argument.&amp;#160; The IsEvenNumber action method first checks whether the number is negative - in which case it redirects the user to an error page.&amp;#160; If it is a positive number it determines whether the number is even or odd, and renders a view template that displays an appropriate message:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/aprilmvc/step11.png" /&gt; &lt;/p&gt;    &lt;p&gt;Writing unit tests for our &amp;quot;IsEvenNumber&amp;quot; action method is pretty easy thanks to the new ActionResult approach.&lt;/p&gt;    &lt;p&gt;Below is an example unit test that verifies that the correct Http redirect occurs when a negative number is supplied (for example: /Number/IsEvenNumber/-1):&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/aprilmvc/step17.png" /&gt; &lt;/p&gt;    &lt;p&gt;Notice above how we did not need to mock any objects to test our action method.&amp;#160; Instead we simply instantiated the NumberController class and called the action method directly (passing in a negative number) and assigned the return value to a local &amp;quot;result&amp;quot; variable.&amp;#160; I used the C# &amp;quot;as type&amp;quot; syntax above to cast the &amp;quot;result&amp;quot; variable as a strongly typed &amp;quot;HttpRedirectResult&amp;quot; type.&lt;/p&gt;    &lt;p&gt;What is nice about the C# &amp;quot;as&amp;quot; keyword is that it will assign the value as null instead of throwing an exception if the cast fails (for example: if the action method returned a RenderViewResult instead).&amp;#160; This means I can easily add an assertion check in my test to verify that the result is not null in order to verify that an Http redirect happened.&amp;#160; I can then add a second assertion check to verify that the correct redirect URL was specified.&lt;/p&gt;    &lt;p&gt;Testing the scenarios where non-zero numbers are passed in is also easy.&amp;#160; To do this we'll create two test methods - one testing even numbers and one testing odd numbers.&amp;#160; In both tests we'll assert that a RenderViewResult was returned, and then verify that the correct &amp;quot;Message&amp;quot; string was passed within the ViewData associated with the view:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/aprilmvc/step31.png" /&gt; &lt;/p&gt;    &lt;p&gt;We can then right click on our NumberControllerTest class inside VS 2008 and choose the &amp;quot;Run Tests&amp;quot; menu item:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/aprilmvc/step20.png" /&gt; &lt;/p&gt;    &lt;p&gt;This will execute our three unit tests in-memory (no web-server required) and report back on whether our NumberController.IsEvenNumber() action method is performing the right behavior:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/aprilmvc/step21.png" /&gt; &lt;/p&gt;    &lt;p&gt;&lt;em&gt;Note: with this week's source drop you still need to use mocking to test the TempData property on Controllers.&amp;#160; Our plan is to not require mocking to test this with the ASP.NET MVC Preview 3 drop in a few weeks.&lt;/em&gt;&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;MapRoute Helper Method&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;URL routing rules within ASP.NET MVC applications are typically declared within the &amp;quot;RegisterRoutes&amp;quot; method of the Global.asax class.&lt;/p&gt;    &lt;p&gt;With ASP.NET MVC Previews 1 and 2 routes were added to the routes collection by instantiating a Route object directly, wiring it up to a MvcRouteHandler class, and then by setting the appropriate properties on it to declare the route rules:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/aprilmvc/step27.png" /&gt; &lt;/p&gt;    &lt;p&gt;The above code will continue to work going forward.&amp;#160; However, you can also now take advantage of the new &amp;quot;MapRoute&amp;quot; helper method which provides a much simpler syntax to-do the same thing.&amp;#160; Below is the convention-based URL route configured by default when you create a new ASP.NET MVC project (which replaces the code above):&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/aprilmvc/step26.png" /&gt; &lt;/p&gt;    &lt;p&gt;The MapRoute() helper method is overloaded and takes two, three or four parameters (route name, URL syntax, URL parameter default, and URL parameter regular expression constraints).&amp;#160; &lt;/p&gt;    &lt;p&gt;You can call MapRoute() as many times as you want to register multiple named routes in the system.&amp;#160; For example, in addition to the default convention rule, we could add a &amp;quot;Products-Browse&amp;quot; named routing rule like below:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/aprilmvc/step28.png" /&gt; &lt;/p&gt;    &lt;p&gt;We can then refer to this &amp;quot;Products-Browse&amp;quot; rule explicitly within our Controllers and Views when we want to generate a URL to it.&amp;#160; For example, we could use the Html.RouteLink view helper to indicate that we want to link to our &amp;quot;Products-Browse&amp;quot; route and pass it a &amp;quot;Food&amp;quot; category parameter using code in our view template like below:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/aprilmvc/step29.png" /&gt; &lt;/p&gt;    &lt;p&gt;This view helper would then access the routing system and output an appropriate HTML hyperlink URL like below (note: how it did automatic parameter substitution of the category parameter into the URL using the route rule):&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/aprilmvc/step30.png" /&gt; &lt;/p&gt;    &lt;p&gt;&lt;em&gt;Note: with this week's source drop you need to pass-in the controller and action parameters (in addition to the Category param) to the Html.RouteLink() helper to resolve the correct route URL to generate.&amp;#160; The ASP.NET MVC Preview 3 drop in a few weeks will not require this, and allow you to use the Html.RouteLink call exactly as I've written it above to resolve the route.&lt;/em&gt;&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Other URL Route Mapping Features&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;This week's MVC source drop also supports a bunch of new URL route mapping features.&amp;#160; You can now include &amp;quot;-&amp;quot;, &amp;quot;.&amp;quot;, &amp;quot;;&amp;quot; or any other characters you want as part of your route rules.&lt;/p&gt;    &lt;p&gt;For example, using a &amp;quot;-&amp;quot; separator you can now parse the language and locale values from your URLs separately using a rule like below:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/aprilmvc/step32.png" /&gt; &lt;/p&gt;    &lt;p&gt;This would pass appropriate &amp;quot;language&amp;quot;, &amp;quot;locale&amp;quot;, and &amp;quot;category&amp;quot; parameters to the ProductsController.Browse action method when invoked:&lt;/p&gt;    &lt;table cellspacing="0" cellpadding="2" width="856" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="297"&gt;&lt;font face="arial" size="2"&gt;&lt;u&gt;URL Route Rule&lt;/u&gt;&lt;/font&gt;&lt;/td&gt;          &lt;td valign="top" width="198"&gt;&lt;font face="arial" size="2"&gt;&lt;u&gt;Example URL&lt;/u&gt;&lt;/font&gt;&lt;/td&gt;          &lt;td valign="top" width="355"&gt;&lt;font face="arial" size="2"&gt;&lt;u&gt;Parameters Passed to Action method&lt;/u&gt;&lt;/font&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="297"&gt;&lt;font face="arial" size="2"&gt;{language}-{locale}/products/browse/{category}&lt;/font&gt;&lt;/td&gt;          &lt;td valign="top" width="198"&gt;&lt;font face="arial" size="2"&gt;/en-us/products/browse/food&lt;/font&gt;&lt;/td&gt;          &lt;td valign="top" width="355"&gt;&lt;font face="arial" size="2"&gt;language=en, locale=us, category=food&lt;/font&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="296"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="198"&gt;&lt;font face="arial" size="2"&gt;/en-uk/products/browse/food&lt;/font&gt;&lt;/td&gt;          &lt;td valign="top" width="355"&gt;&lt;font face="arial" size="2"&gt;language=en, locale=uk, category=food&lt;/font&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;    &lt;p&gt;Or you can use the &amp;quot;.&amp;quot; file extension type at the end of a URL to determine whether to render back the result in either a XML or HTML format:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/aprilmvc/step33.png" /&gt; &lt;/p&gt;    &lt;p&gt;This would pass both &amp;quot;category&amp;quot; and a &amp;quot;format&amp;quot; parameters to the ProductsController.Browse action method when invoked:&lt;/p&gt;    &lt;table cellspacing="0" cellpadding="2" width="852" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="297"&gt;&lt;font face="arial" size="2"&gt;&lt;u&gt;URL Route Rule&lt;/u&gt;&lt;/font&gt;&lt;/td&gt;          &lt;td valign="top" width="198"&gt;&lt;font face="arial" size="2"&gt;&lt;u&gt;Example URL&lt;/u&gt;&lt;/font&gt;&lt;/td&gt;          &lt;td valign="top" width="355"&gt;&lt;font face="arial" size="2"&gt;&lt;u&gt;Parameters Passed to Action method&lt;/u&gt;&lt;/font&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="297"&gt;&lt;font face="arial" size="2"&gt;products/browse/{category}.{format}&lt;/font&gt;&lt;/td&gt;          &lt;td valign="top" width="198"&gt;&lt;font face="arial" size="2"&gt;/products/browse/food.xml&lt;/font&gt; &lt;/td&gt;          &lt;td valign="top" width="355"&gt;&lt;font face="arial" size="2"&gt;category=food, format=xml&lt;/font&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="296"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="198"&gt;&lt;font face="arial" size="2"&gt;/products/browse/food.html&lt;/font&gt;&lt;/td&gt;          &lt;td valign="top" width="355"&gt;&lt;font face="arial" size="2"&gt;category=food, format=html&lt;/font&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;    &lt;p&gt;ASP.NET MVC Preview 2 introduced wildcard route rules.&amp;#160; For example, you can indicate in a rule to pass all remaining URI content on as a named parameter to an action method:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/aprilmvc/step34.png" /&gt; &lt;/p&gt;    &lt;p&gt;This would pass a &amp;quot;contentUrl&amp;quot; parameter to the WikiController.DisplayPage action method when invoked:&lt;/p&gt;    &lt;table cellspacing="0" cellpadding="2" width="852" border="1"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td valign="top" width="297"&gt;&lt;font face="arial" size="2"&gt;&lt;u&gt;URL Route Rule&lt;/u&gt;&lt;/font&gt;&lt;/td&gt;          &lt;td valign="top" width="198"&gt;&lt;font face="arial" size="2"&gt;&lt;u&gt;Example URL&lt;/u&gt;&lt;/font&gt;&lt;/td&gt;          &lt;td valign="top" width="355"&gt;&lt;font face="arial" size="2"&gt;&lt;u&gt;Parameters Passed to Action method&lt;/u&gt;&lt;/font&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="297"&gt;&lt;font face="arial" size="2"&gt;Wiki/Pages/{*contentUrl}&lt;/font&gt;&lt;/td&gt;          &lt;td valign="top" width="198"&gt;&lt;font face="arial" size="2"&gt;/Wiki/Pages/People/Scott&lt;/font&gt;&lt;/td&gt;          &lt;td valign="top" width="355"&gt;&lt;font face="arial" size="2"&gt;contentUrl=&amp;quot;People/Scott&amp;quot;&lt;/font&gt;&lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td valign="top" width="296"&gt;&amp;#160;&lt;/td&gt;          &lt;td valign="top" width="198"&gt;&lt;font face="arial" size="2"&gt;/Wiki/Pages/Countries/UK&lt;/font&gt;&lt;/td&gt;          &lt;td valign="top" width="355"&gt;&lt;font face="arial" size="2"&gt;contentUrl=&amp;quot;Countries/UK&amp;quot;&lt;/font&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;    &lt;p&gt;These wildcard routes continue to work fine with this week's preview - and are very useful to look at if you are building a blogging, wiki, cms or other content based system.&lt;/p&gt;    &lt;p&gt;Note that in addition to using the new routing system for ASP.NET MVC scenarios, we are also now using the same routing system within &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/04/10/asp-net-dynamic-data-preview-available.aspx" target="_blank"&gt;ASP.NET Dynamic Data&lt;/a&gt; (which uses ASP.NET Web Forms).&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Summary&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;Hopefully the above post provides a quick update on some of the new features and changes exposed with this week's ASP.NET MVC source update drop.&amp;#160; &lt;/p&gt;    &lt;p&gt;You can download it &lt;a href="http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=12640" target="_blank"&gt;here&lt;/a&gt; if you want to start using it immediately.&amp;#160; Alternatively, you can wait a few weeks for the official ASP.NET MVC Preview 3 drop - which will have some more features (and incorporate feedback people provide on this week's drop), deliver a more seamless installer, provide nice VS integration, and deliver up to date documentation.&lt;/p&gt;    &lt;p&gt;For any questions/issues with this week's drop of ASP.NET MVC, make sure to also check out the &lt;a href="http://forums.asp.net/1146.aspx" target="_blank"&gt;ASP.NET MVC forum&lt;/a&gt; on &lt;a href="http://www.asp.net" target="_blank"&gt;www.asp.net&lt;/a&gt;. &lt;/p&gt;    &lt;p&gt;Hope this helps,&lt;/p&gt;    &lt;p&gt;Scott&lt;/p&gt; &lt;/font&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6104816" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/MVC/default.aspx">MVC</category></item><item><title>April 11th Links: ASP.NET, ASP.NET AJAX, ASP.NET MVC, Visual Studio, Silverlight</title><link>http://weblogs.asp.net/scottgu/archive/2008/04/11/april-11th-links-asp-net-asp-net-ajax-asp-net-mvc-visual-studio-silverlight.aspx</link><pubDate>Fri, 11 Apr 2008 07:04:22 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6086166</guid><dc:creator>ScottGu</dc:creator><slash:comments>38</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=6086166</wfw:commentRss><comments>http://weblogs.asp.net/scottgu/archive/2008/04/11/april-11th-links-asp-net-asp-net-ajax-asp-net-mvc-visual-studio-silverlight.aspx#comments</comments><description>&lt;font face="arial" size="2"&gt;   &lt;p&gt;Here is the latest in my &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/03/28/march-28th-links-asp-net-asp-net-ajax-asp-net-mvc-visual-studio-silverlight-net.aspx" target="_blank"&gt;link-listing series&lt;/a&gt;.&amp;#160; Also check out my &lt;a href="http://weblogs.asp.net/scottgu/pages/ASP.NET-2.0-Tips_2C00_-Tricks_2C00_-Recipes-and-Gotchas.aspx" target="_blank"&gt;ASP.NET Tips, Tricks and Tutorials page&lt;/a&gt; and &lt;a href="http://weblogs.asp.net/scottgu/pages/silverlight-posts.aspx" target="_blank"&gt;Silverlight Tutorials page&lt;/a&gt; for links to popular articles I've done myself in the past.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;ASP.NET&lt;/u&gt;&lt;/h3&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://scottonwriting.net/sowblog/posts/13196.aspx" target="_blank"&gt;More ASP.NET Security Tutorials&lt;/a&gt;: The last three of Scott Mitchell's excellent &lt;a href="http://asp.net/learn/security/" target="_blank"&gt;ASP.NET security tutorials&lt;/a&gt;.&amp;#160; His final three articles cover how to select user accounts, recover and change passwords, and unlock and approve user accounts.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://mattberseth.com/blog/2008/04/building_a_vs2008_styled_grid.html" target="_blank"&gt;Building a VS 2008 Styled Grid with the ListView and DataPager Controls&lt;/a&gt;: Matt Berseth has a great article that talks about techniques you can use with the new ASP.NET 3.5 ListView control to create a nicely styled Grid UI - while preserving total control over the HTML and CSS used.&amp;#160; Also read his &lt;a href="http://mattberseth.com/blog/2008/04/building_a_vs2008_styled_grid_1.html" target="_blank"&gt;follow-up post here&lt;/a&gt; that talks about how to achieve the same UI with the GridView control.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://www.emmaalvarez.com/2008/04/most-useful-50-css-tips-and-tools-for.html" target="_blank"&gt;50 Useful CSS Tips and Tricks:&lt;/a&gt; A useful page that provides a nice listing of various CSS tips, tricks and tools you can use for common web scenarios.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://mattberseth.com/blog/2008/04/using_a_datapager_with_the_gri.html" target="_blank"&gt;Using a DataPager with the GridView Control - Implementing IPageableItemContainer&lt;/a&gt;: Matt Berseth has a cool article that shows how to use the new IPageableItemContainer interface to implement paging support with the new ASP.NET 3.5 DataPager control.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;h3&gt;&lt;u&gt;ASP.NET AJAX&lt;/u&gt;&lt;/h3&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://dotnetslackers.com/articles/ajax/AccessibleUpdatePanel.aspx" target="_blank"&gt;Accessible UpdatePanel&lt;/a&gt;: Bertrand Le Roy from the ASP.NET team has an article that describes how to make the ASP.NET AJAX's UpdatePanel control accessible for screen-readers.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://aspadvice.com/blogs/garbin/archive/2008/04/02/ASP.NET-AJAX-meets-Virtual-Earth-series-on-DotNetSlackers.aspx" target="_blank"&gt;ASP.NET AJAX Meets Virtual Earth&lt;/a&gt;: Alessandro Gallo, author of the excellent &lt;a href="http://www.amazon.com/gp/product/1933988142/104-9219624-7383145?ie=UTF8&amp;amp;tag=scoblo04-20&amp;amp;linkCode=xm2&amp;amp;camp=1789&amp;amp;creativeASIN=1933988142" target="_blank"&gt;ASP.NET AJAX in Action&lt;/a&gt; book, has a nice series of articles that talks about using ASP.NET AJAX with Virtual Earth to implement mapping on your site.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://weblogs.asp.net/omarzabir/archive/2008/04/06/fast-page-loading-by-moving-asp-net-ajax-scripts-after-visible-content.aspx" target="_blank"&gt;Faster Page Loading by Moving ASP.NET AJAX Scripts after visible content&lt;/a&gt;: Omar Al Zabir (the co-founder of &lt;a href="http://www.PageFlakes.com" target="_blank"&gt;www.PageFlakes.com&lt;/a&gt;) has a great article that describes a nice technique you can use to improve the perceived loading performance of an ASP.NET AJAX page.&amp;#160; I also highly recommend reading Omar's great &lt;a href="http://www.amazon.com/gp/product/0596510500/002-5242737-1614454?ie=UTF8&amp;amp;tag=scoblo04-20&amp;amp;linkCode=xm2&amp;amp;camp=1789&amp;amp;creativeASIN=0596510500" target="_blank"&gt;Building a Web 2.0 Portal with ASP.NET 3.5&lt;/a&gt; book to learn some of his other suggestions and techniques.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://mattberseth.com/blog/2008/04/3_tips_for_working_with_the_aj.html" target="_blank"&gt;3 Tips for Working with ASP.NET AJAX's TabContainer Control&lt;/a&gt;: Matt Berseth continues his great articles on ASP.NET AJAX with some tips on working with the TabContainer control in the ASP.NET AJAX Control Toolkit.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://blogs.msdn.com/mikeormond/archive/2008/03/28/building-asp-net-ajax-controls-index-post.aspx" target="_blank"&gt;Building ASP.NET AJAX Components:&lt;/a&gt; Mike Ormond has written an excellent 8-part series that covers building re-usable ASP.NET AJAX components that work on both the client and server.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;h3&gt;&lt;u&gt;ASP.NET MVC&lt;/u&gt;&lt;/h3&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://www.myvbprof.com/2007_Version/MVC_Intro_Tutorial.aspx" target="_blank"&gt;An Introduction to ASP.NET MVC using VB&lt;/a&gt;: Bill Burrows from &lt;a href="http://www.MyVBprof.com" target="_blank"&gt;www.MyVBprof.com&lt;/a&gt; has put together a great set of online videos that introduce ASP.NET MVC using Visual Basic.&amp;#160; Also make sure to check out his video series on &lt;a href="http://www.myvbprof.com/2007_Version/VB9_XML.aspx" target="_blank"&gt;LINQ to XML using VB&lt;/a&gt; and &lt;a href="http://www.myvbprof.com/2007_Version/LINQ_to_SQL.aspx" target="_blank"&gt;LINQ to SQL using VB&lt;/a&gt;.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://www.squaredroot.com/post/2008/04/MVC-Membership-Starter-Kit.aspx" target="_blank"&gt;ASP.NET MVC: Membership Starter Kit&lt;/a&gt;: Troy Goode has a built an awesome membership starter kit for ASP.NET MVC that provides registration and login pages for users to authenticate on your site, as well as a set of administration functionality that allows admins to create/manage users and roles.&amp;#160; Download it &lt;a href="http://www.codeplex.com/MvcMembership" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://www.squaredroot.com/post/2008/04/MVC-Error-Handler-Filter.aspx" target="_blank"&gt;ASP.NET MVC: Action Filter for Handling Errors&lt;/a&gt;: Troy Goode has another good post that provides some ASP.NET MVC action filters for catching and handling runtime errors.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://biasecurities.com/blog/2008/how-to-enable-pretty-urls-with-asp-net-mvc-and-iis6/" target="_blank"&gt;How to Enable Pretty URLs with ASP.NET MVC and IIS6:&lt;/a&gt; James Geurts posts a useful article that describes how to enable extension-less URLs with ASP.NET MVC on IIS6 (note: you do not need to configure anything special with ASP.NET MVC on IIS7 to enable extension-less URL support).&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;h3&gt;&lt;u&gt;Visual Studio&lt;/u&gt;&lt;/h3&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://www.visualstudiogallery.com/ExtensionDetails.aspx?ExtensionId=df3f0c30-3d37-4e06-9ef8-3bff3508be31" target="_blank"&gt;PowerCommands for Visual Studio 2008&lt;/a&gt;: A free set of useful extensions for VS 2008 that add a bunch of cool features to the IDE.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;&lt;a href="http://blogs.msdn.com/kirillosenkov/archive/2008/04/03/coding-productivity-macros-shortcuts-and-snippets.aspx" target="_blank"&gt;Coding Productivity: Macros, Shortcuts and Snippets&lt;/a&gt;: Kirill Osenkov has a nice blog post that shows of how to use Visual Studio's macro feature to custom record useful time-savers. &lt;/li&gt;   &lt;/ul&gt;    &lt;h3&gt;&lt;u&gt;Silverlight&lt;/u&gt;&lt;/h3&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://geekswithblogs.net/WynApseTechnicalMusings/Default.aspx" target="_blank"&gt;Dave Campbell's Excellent Silverlight Link Series&lt;/a&gt;: Dave Campbell posts a regular series of links to new Silverlight articles and content on the web.&amp;#160; I highly recommend subscribing to his blog if you want to stay current with all the latest Silverlight articles and posts.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://blogs.msdn.com/jasonz/archive/2008/04/04/silverlight-2-map-datagrid-demo-part-2.aspx" target="_blank"&gt;Silverlight 2 Map / DataGrid Tutorial&lt;/a&gt;: Jason Zander has a great two-part Silverlight tutorial that demonstrates how to build a nice data-driven application that integrates a map control with a datagrid to filter and analyze data.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://blogs.msdn.com/swiss_dpe_team/archive/2008/04/04/crud-operations-with-optimistic-locking-using-silverlight-2-beta1-wcf-and-linq-to-sql-inserts-updates-and-deletes.aspx" target="_blank"&gt;CRUD operations with Silverlight 2, WCF and LINQ to SQL&lt;/a&gt;: Ronnie Saurenmann from the Swiss MSDN team has a nice video that shows off some basics of how to support inserts, updates and deletes using Silverlight 2 connected via WCF to a LINQ to SQL backend.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://blogs.msdn.com/sburke/archive/2008/03/22/tutorial-writing-a-templated-silverlight-2-control.aspx" target="_blank"&gt;Writing a Templated Silverlight 2 Control&lt;/a&gt;: Shawn Burke has a great tutorial post that walksthrough how to build a templated Silverlight control that implements an expand/collapse control.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;Hope this helps,&lt;/p&gt;    &lt;p&gt;Scott&lt;/p&gt; &lt;/font&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6086166" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Link+Listing/default.aspx">Link Listing</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/MVC/default.aspx">MVC</category></item><item><title>ASP.NET Dynamic Data Preview Available</title><link>http://weblogs.asp.net/scottgu/archive/2008/04/10/asp-net-dynamic-data-preview-available.aspx</link><pubDate>Thu, 10 Apr 2008 07:44:47 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6081654</guid><dc:creator>ScottGu</dc:creator><slash:comments>86</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=6081654</wfw:commentRss><comments>http://weblogs.asp.net/scottgu/archive/2008/04/10/asp-net-dynamic-data-preview-available.aspx#comments</comments><description>&lt;font face="arial" size="2"&gt;   &lt;p&gt;A few months ago we released an &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/12/09/asp-net-3-5-extensions-ctp-preview-released.aspx" target="_blank"&gt;ASP.NET 3.5 Extensions Preview&lt;/a&gt; that contained a bunch of new features that will be shipping later this year (including ASP.NET AJAX Improvements, ASP.NET MVC, ASP.NET Silverlight Support, and ASP.NET Dynamic Data).&lt;/p&gt;    &lt;p&gt;The &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/12/14/new-asp-net-dynamic-data-support.aspx" target="_blank"&gt;ASP.NET Dynamic Data support&lt;/a&gt; within that preview provided a first look at a cool new feature that enables you to quickly build data driven web-sites that work against a LINQ to SQL or LINQ to Entities object model.&amp;#160; ASP.NET Dynamic Data allows you to automatically render fully functional data entry and reporting pages that are dynamically constructed from your ORM data model meta-data.&amp;#160; In addition to supporting a dynamic rendering mode, it also allows you to optionally override and customize any of the view templates using any HTML or code you want (given you full control of the experience).&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;ASP.NET Dynamic Data Preview&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;Today we released an updated ASP.NET Dynamic Data Preview.&amp;#160; You can learn more about it and download it &lt;a href="http://code.msdn.microsoft.com/dynamicdata" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;This new dynamic data preview now works with the standard built-in ASP.NET data controls (GridView, ListView, FormView, DetailsView, etc).&amp;#160; The dynamic data support enables these controls to automatically handle foreign-key relationships.&amp;#160; For example, on a gridview you'll now get automatic friendly name display of foreign key column values and automatic drop-down list selection support of these values when in edit mode:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/dynamicdata/step11.png" /&gt; &lt;/p&gt;    &lt;p&gt;The new dynamic data support also provides automatic UI validation support (both client-side and server-side) based on the constraints you set on your data model classes.&amp;#160; For example, if a column in the database is limited to 50 characters in size, and is marked as non-nullable, appropriate UI control validators will automatically be applied by ASP.NET dynamic data to enforce this constraint in the UI pages as well.&amp;#160; If you change the constraints within your LINQ to SQL or LINQ to Entities data model classes, the UI will automatically pick up these changes and enforce the new constraints on the next web request.&lt;/p&gt;    &lt;p&gt;In addition to standard data model metadata, you can also declare custom metadata to further control validation and the default display of UI of objects.&amp;#160; &lt;/p&gt;    &lt;p&gt;You will be able to use all of the above features with both LINQ to SQL and LINQ to Entities.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Visual Studio Dynamic Data Project Wizard&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;In addition to the core ASP.NET dynamic data runtime support, the VS web tools team today also shipped a first preview of a new dynamic data project wizard that enables you to quickly get a data driven web-site started.&amp;#160; The wizard allows you to select a database, and then the tables, views and sprocs within it that you want to build a LINQ to SQL data model around:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://blogs.msdn.com/photos/webdevtools/images/8371317/original.aspx" /&gt; &lt;/p&gt;    &lt;p&gt;After creating a data model, the wizard allows you to easily choose dynamic data driven template pages to build UI around it:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://blogs.msdn.com/photos/webdevtools/images/8371312/original.aspx" /&gt; &lt;/p&gt;    &lt;p&gt;You can then choose what type of inserting/editing/updating UI is supported on each page:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://blogs.msdn.com/photos/webdevtools/images/8371319/original.aspx" /&gt; &lt;/p&gt;    &lt;p&gt;And when you click finish it will setup a project with your data model classes and data UI pages setup to run.&amp;#160; You can learn more about the wizard and watch it in action in a blog post and screencast &lt;a href="http://blogs.msdn.com/webdevtools/archive/2008/04/09/asp-net-dynamic-data-preview-released-on-msdn-code-gallery.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;How to Get Started&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;You can learn more about this new dynamic data preview and download and run it locally &lt;a href="http://code.msdn.microsoft.com/dynamicdata" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;You can watch David Ebbo's &lt;a href="http://sessions.visitmix.com/?selectedSearch=T24" target="_blank"&gt;dynamic data presentation at MIX 08&lt;/a&gt; to learn more about how it works.&amp;#160; Also check out Scott Hunter's screen-cast &lt;a href="http://davidebbo.members.winisp.net/screencasts/dbimage.wmv" target="_blank"&gt;here&lt;/a&gt;, and Brad Millington's screen cast &lt;a href="http://blogs.msdn.com/webdevtools/archive/2008/04/09/asp-net-dynamic-data-preview-released-on-msdn-code-gallery.aspx" target="_blank"&gt;here&lt;/a&gt;.&amp;#160; David also has a post &lt;a href="http://blogs.msdn.com/davidebb/archive/2008/03/06/dynamic-data-at-mix-and-upcoming-changes.aspx" target="_blank"&gt;here&lt;/a&gt; that talks about the changes made between the December preview and today's preview release.&lt;/p&gt;    &lt;p&gt;You can ask questions and submit feedback via the &lt;a href="http://www.asp.net"&gt;www.asp.net&lt;/a&gt; forums &lt;a href="http://forums.asp.net/1145.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;Hope this helps,&lt;/p&gt;    &lt;p&gt;Scott&lt;/p&gt; &lt;/font&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6081654" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/LINQ/default.aspx">LINQ</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Data/default.aspx">Data</category></item><item><title>Tip/Trick: Creating and Using Silverlight and WPF User Controls</title><link>http://weblogs.asp.net/scottgu/archive/2008/04/04/tip-trick-creating-and-using-silverlight-and-wpf-user-controls.aspx</link><pubDate>Fri, 04 Apr 2008 08:37:20 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6064288</guid><dc:creator>ScottGu</dc:creator><slash:comments>50</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=6064288</wfw:commentRss><comments>http://weblogs.asp.net/scottgu/archive/2008/04/04/tip-trick-creating-and-using-silverlight-and-wpf-user-controls.aspx#comments</comments><description>&lt;font face="arial" size="2"&gt;   &lt;p&gt;One of the fundamental design goals of Silverlight and WPF is to enable developers to be able to easily encapsulate UI functionality into re-usable controls.&lt;/p&gt;    &lt;p&gt;You can implement new custom controls by deriving a class from one of the existing Control classes (either a Control base class or from a control like TextBox, Button, etc).&amp;#160; Alternatively you can create re-usable User Controls - which make it easy to use a XAML markup file to compose a control's UI (and which makes them super easy to build).&lt;/p&gt;    &lt;p&gt;In &lt;a href="http://weblogs.asp.net/scottgu/pages/silverlight-tutorial-part-6-using-user-controls-to-implement-master-detail-scenarios.aspx" target="_blank"&gt;Part 6&lt;/a&gt; of my Digg.com tutorial blog series I showed how to create a new user control using VS 2008's &amp;quot;Add New Item&amp;quot; project item dialog and by then defining UI within it.&amp;#160; This approach works great when you know up front that you want to encapsulate UI in a user control.&amp;#160; You can also use the same technique with Expression Blend.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Taking Existing UI and Encapsulating it as a User Control&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;Sometimes you don't always know you want to encapsulate some UI functionality as a re-usable user control until after you've already started defining it on a parent page or control.&lt;/p&gt;    &lt;p&gt;For example, we might be working on a form where we want to enable a user to enter shipping and billing information.&amp;#160; We might begin by creating some UI to encapsulate the address information.&amp;#160; To-do this we could add a &amp;lt;border&amp;gt; control to the page, nest a grid layout panel inside it (with 2 columns and 4 rows), and then place labels and textbox controls within it:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/extractusercontrol/step1.png" /&gt; &lt;/p&gt;    &lt;p&gt;After carefully laying it all out, we might realize &amp;quot;hey - we are going to use the exact same UI for the billing address as well, maybe we should create a re-usable address user control so that we can avoid repeating ourselves&amp;quot;.&amp;#160; &lt;/p&gt;    &lt;p&gt;We could use the &amp;quot;add new item&amp;quot; project template approach to create a blank new user control and then copy/paste the above UI contents into it.&amp;#160; &lt;/p&gt;    &lt;p&gt;An even faster trick that we can use within Blend, though, is to just select the controls we want to encapsulate as a user control in the designer, and then &amp;quot;right click&amp;quot; and choose the &amp;quot;Make Control&amp;quot; menu option:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/extractusercontrol/step3.png" /&gt; &lt;/p&gt;    &lt;p&gt;When we select the &amp;quot;Make Control&amp;quot; menu item, Blend will prompt us for the name of a new user control to create:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/extractusercontrol/step4.png" /&gt; &lt;/p&gt;    &lt;p&gt;We'll name it &amp;quot;AddressUserControl&amp;quot; and hit ok. This will cause Blend to create a new user control that contains the content we selected:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/extractusercontrol/step5.png" /&gt; &lt;/p&gt;    &lt;p&gt;When we do a re-build of the project and go back to the original page, we'll see the same UI as before - except that the address UI is now encapsulated inside the AddressUserControl:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/extractusercontrol/step6.png" /&gt; &lt;/p&gt;    &lt;p&gt;We could name this first AddressUserControl &amp;quot;ShippingAddress&amp;quot; and then add a second instance of the user control to the page to record the billing address (we'll name this second control instance &amp;quot;BillingAddress&amp;quot;):&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/extractusercontrol/step7.png" /&gt; &lt;/p&gt;    &lt;p&gt;And now if we want to change the look of our addresses, we can do it in a single place and have it apply for both the shipping and billing information.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Data Binding Address Objects to our AddressUserControl&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;Now that we have some user controls that encapsulate our Address UI, let's create an Address data model class that we can use to bind them against.&amp;#160; We'll define the class like below (taking advantage of the new &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/03/08/new-c-orcas-language-features-automatic-properties-object-initializers-and-collection-initializers.aspx" target="_blank"&gt;automatic properties&lt;/a&gt; language feature):&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/extractusercontrol/step8.png" /&gt; &lt;/p&gt;    &lt;p&gt;Within the code-behind file of our Page.xaml file we can then instantiate two instances of our Address object - one for the shipping address and one for the billing address (for the purposes of this sample we'll populate them with dummy data).&amp;#160; We'll then programmatically bind the Address objects to our AddressUserControls on the page.&amp;#160; We'll do that by setting the &amp;quot;DataContext&amp;quot; property on each user control to the appropriate shipping or billing address data model instance:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/extractusercontrol/step9.png" /&gt; &lt;/p&gt;    &lt;p&gt;Our last step will be to declaratively add {Binding} statements within our AddressUserControl.xaml file that will setup two-way databinding relationships between the &amp;quot;Text&amp;quot; properties of the TextBox controls within the user control and the properties on the Address data model object that we attached to the user control:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/extractusercontrol/step12.png" /&gt; &lt;/p&gt;    &lt;p&gt;When we press F5 to run the application we'll now get automatic data-binding of the Address data model objects with our AddressUserControls:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/extractusercontrol/step11.png" /&gt; &lt;/p&gt;    &lt;p&gt;Because we setup the {Binding} declarations to be &amp;quot;Mode=TwoWay&amp;quot;, changes users make in the textboxes will automatically get pushed back to the Address data model objects (no code required for this to happen).&amp;#160; &lt;/p&gt;    &lt;p&gt;For example, we could change our original shipping address in the browser to instead go to Disneyland:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/extractusercontrol/step14.png" /&gt; &lt;/p&gt;    &lt;p&gt;If we wire-up a debugger breakpoint on the &amp;quot;Click&amp;quot; event handler of the &amp;quot;Save&amp;quot; button (and then click the button), we can see how the above TextBox changes are automatically reflected in our &amp;quot;_shippingAddress&amp;quot; data model object:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/extractusercontrol/step15.png" /&gt; &lt;/p&gt;    &lt;p&gt;We could then implement the SaveBtn_Click event handler to persist the Shipping and Billing Address data model objects however we want - without ever having to manually retrieve or manipulate anything in the UI controls on the page.&lt;/p&gt;    &lt;p&gt;This clean view/model separation that WPF and Silverlight supports makes it easy to later change the UI of the address user controls without having to update any of our code in the page.&amp;#160; It also makes it possible to more easily unit test the functionality (read my last post to learn more about &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/04/02/unit-testing-with-silverlight.aspx" target="_blank"&gt;Silverlight Unit Testing&lt;/a&gt;).&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Summary&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;WPF and Silverlight make it easy to encapsulate UI functionality within controls, and the user control mechanism they support provides a really easy way to take advantage of this.&amp;#160; Combining user controls with binding enables some nice view/model separation scenarios that allow you to write very clean code when working with data. &lt;/p&gt;    &lt;p&gt;You can download a completed version of the above sample &lt;a href="http://www.scottgu.com/blogposts/extractusercontrol/SilverlightApplication4.zip" target="_blank"&gt;here&lt;/a&gt; if you want to run it on your own machine.&amp;#160; &lt;/p&gt;    &lt;p&gt;To learn even more about Silverlight and WPF, check out my &lt;a href="http://weblogs.asp.net/scottgu/pages/silverlight-posts.aspx" target="_blank"&gt;Silverlight Tutorials and Links Page&lt;/a&gt;.&amp;#160; I also highly recommend Karen Corby's excellent MIX08 talk (which covers User Controls, Custom Controls, Styling, Control Templates and more), which you can watch online for free &lt;a href="http://scorbs.com/2008/03/09/mix08-creating-rich-dynamic-user-interfaces-with-silverlight-2-controls/" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;Hope this helps,&lt;/p&gt;    &lt;p&gt;Scott&lt;/p&gt; &lt;/font&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6064288" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Tips+and+Tricks/default.aspx">Tips and Tricks</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/WPF/default.aspx">WPF</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Unit Testing with Silverlight</title><link>http://weblogs.asp.net/scottgu/archive/2008/04/02/unit-testing-with-silverlight.aspx</link><pubDate>Wed, 02 Apr 2008 09:01:42 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6060277</guid><dc:creator>ScottGu</dc:creator><slash:comments>52</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=6060277</wfw:commentRss><comments>http://weblogs.asp.net/scottgu/archive/2008/04/02/unit-testing-with-silverlight.aspx#comments</comments><description>&lt;font face="arial" size="2"&gt;   &lt;p&gt;One of the important capabilities we shipped with the Beta1 release of Silverlight 2 was a unit test harness that enables you to perform both API-level and UI-level unit testing.&amp;#160; This testing harness is cross browser and cross platform, and can be used to quickly run and verify automated unit tests:&lt;/p&gt;    &lt;p&gt;In addition to shipping this unit test harness for Silverlight, we also &lt;a href="http://blogs.msdn.com/sburke/archive/2008/03/05/silverlight-2-beta-1-controls-available-including-source-and-unit-tests.aspx" target="_blank"&gt;shipped the source to ~2,000 unit tests built with it&lt;/a&gt; that provide automated coverage for the &lt;a href="http://blogs.msdn.com/sburke/archive/2008/03/05/silverlight-2-beta-1-controls-available-including-source-and-unit-tests.aspx" target="_blank"&gt;Silverlight control source&lt;/a&gt; that we also shipped under a permissive license (you can take the control source, modify it, run the unit tests to verify the behavior, then re-ship the controls however you want).&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Learning How to Unit Test Silverlight&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;Jeff Wilcox (who developed the Silverlight unit test framework and harness) has a &lt;a href="http://www.jeff.wilcox.name/2008/03/31/silverlight2-unit-testing/" target="_blank"&gt;great blog post&lt;/a&gt; that talks about how to add a Silverlight Unit Test project to a solution &lt;a href="http://www.jeff.wilcox.name/2008/03/31/silverlight2-unit-testing/" target="_blank"&gt;here&lt;/a&gt;. You can download the chat application that he shows testing from &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/02/28/first-look-at-using-expression-blend-with-silverlight-2.aspx" target="_blank"&gt;this expression blend blog post tutorial&lt;/a&gt; I did last month.&amp;#160; You can also watch &lt;a href="http://www.jeff.wilcox.name/2008/03/20/vid-silverlight-control-ut/" target="_blank"&gt;this cool video post&lt;/a&gt; that Jeff created where he walks through the unit test framework and test cases we've shipped.&lt;/p&gt;    &lt;p&gt;As Jeff shows in his post, you can now add a &amp;quot;Silverlight Test Project&amp;quot; to your Visual Studio solution which encapsulates unit tests for an application you are working on:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://media.jeff.wilcox.name/blog/mix08/NewProjectWithTemplate2.png" /&gt; &lt;/p&gt;    &lt;p&gt;You can then add unit test classes to the test project that test APIs or simulate UI action within the Silverlight controls (simulate button clicks, etc).&lt;/p&gt;    &lt;p&gt;&lt;img src="http://media.jeff.wilcox.name/blog/ut/1/ut9.png" /&gt; &lt;/p&gt;    &lt;p&gt;You can then run the test project and execute the tests within it to verify and report their status.&lt;/p&gt;    &lt;p&gt;Jeff's test framework automatically provides a browser based test harness and reporting system (which means you can run it on any browser/OS combination that Silverlight runs on):&lt;/p&gt;    &lt;p&gt;&lt;img src="http://media.jeff.wilcox.name/blog/ut/1/ut11.png" /&gt; &lt;/p&gt;    &lt;p&gt;Jeff's test framework supports quickly re-setting controls after each test (and &lt;u&gt;avoids&lt;/u&gt; needing to re-launch a new browser instance for each test cases - which makes it really fast).&lt;/p&gt;    &lt;p&gt;You can quickly rip through hundreds or thousands of automated tests in seconds:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://media.jeff.wilcox.name/blog/ut/1/ut1.png" /&gt;&lt;/p&gt;    &lt;p&gt;Green results mean the tests passed.&amp;#160; Red results flag that a test case failed and log the assertion failure and/or runtime exceptions that occurred.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Summary&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;If you've ever struggled to try and come up with a strategy for doing automated unit testing or TDD with AJAX applications, I think you'll find Silverlight provides some much nicer test options.&amp;#160; Using Visual Studio you can also separate your tests into a separate project in your solution, and you &lt;u&gt;do not&lt;/u&gt; need to embed the tests within your Silverlight application in order for them to run.&lt;/p&gt;    &lt;p&gt;In addition to supporting the above unit test harness and framework, we are also going to support UI automation APIs with the final release of Silverlight 2.&amp;#160; These will enable accessibility scenarios (allowing screen readers to work with Silverlight and enable Section 508 compliance of Silverlight applications).&amp;#160; These UI automation APIs will also enable UI testing scenarios where you can build end to end browser UI automation that simulates real mouse and keyboard interactions and enables automated end to end experience testing.&amp;#160; The combination should enable you to build much more solid and maintainable RIA solutions.&lt;/p&gt;    &lt;p&gt;Hope this helps,&lt;/p&gt;    &lt;p&gt;Scott&lt;/p&gt;    &lt;p&gt;P.S. For more tutorial posts and links on Silverlight 2, check out my new &lt;a href="http://weblogs.asp.net/scottgu/pages/silverlight-posts.aspx" target="_blank"&gt;&amp;quot;Silverlight Tips, Tricks, Tutorials and Links&amp;quot;&lt;/a&gt; page.&lt;/p&gt; &lt;/font&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6060277" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>March 28th Links: ASP.NET, ASP.NET AJAX, ASP.NET MVC, Visual Studio, Silverlight, .NET</title><link>http://weblogs.asp.net/scottgu/archive/2008/03/28/march-28th-links-asp-net-asp-net-ajax-asp-net-mvc-visual-studio-silverlight-net.aspx</link><pubDate>Fri, 28 Mar 2008 08:08:18 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6040036</guid><dc:creator>ScottGu</dc:creator><slash:comments>32</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=6040036</wfw:commentRss><comments>http://weblogs.asp.net/scottgu/archive/2008/03/28/march-28th-links-asp-net-asp-net-ajax-asp-net-mvc-visual-studio-silverlight-net.aspx#comments</comments><description>&lt;font face="arial" size="2"&gt;   &lt;p&gt;Here is the latest in my &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/03/14/march-14th-links-asp-net-asp-net-ajax-asp-net-mvc-and-net.aspx" target="_blank"&gt;link-listing series&lt;/a&gt;.&amp;#160; Also check out my &lt;a href="http://weblogs.asp.net/scottgu/pages/ASP.NET-2.0-Tips_2C00_-Tricks_2C00_-Recipes-and-Gotchas.aspx" target="_blank"&gt;ASP.NET Tips, Tricks and Tutorials page&lt;/a&gt; for links to popular articles I've done myself in the past.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;ASP.NET&lt;/u&gt;&lt;/h3&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://scottonwriting.net/sowblog/posts/13184.aspx" target="_blank"&gt;Three New ASP.NET Security Tutorials Now Available&lt;/a&gt;: Scott Mitchell continues his &lt;a href="http://asp.net/learn/security/" target="_blank"&gt;great ASP.NET security tutorials&lt;/a&gt;. These three new ones cover creating and managing roles, assigning roles to users, and implementing role based authorization.&amp;#160; You can also find more security articles by reading posts on my blog &lt;a href="http://weblogs.asp.net/scottgu/archive/tags/Security/default.aspx" target="_blank"&gt;tagged with security&lt;/a&gt;.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://www.hanselman.com/blog/TheWeeklySourceCode22CAndVBNETLibrariesToDiggFlickrFacebookYouTubeTwitterLiveServicesGoogleAndOtherWeb20APIs.aspx" target="_blank"&gt;.NET Libraries to Digg, Flickr, Facebook, YouTube, Twitter, and other Web 2.0 APIs&lt;/a&gt;: Scott Hanselman's latest &amp;quot;weekly source code&amp;quot; review looks at .NET APIs that you can use to call popular web 2.0 services.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://blogs.msdn.com/tom/archive/2008/03/11/hangs-and-how-to-solve-them-part-1-deadlocks.aspx" target="_blank"&gt;Hangs and how to Solve Them (Part 1)&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/tom/archive/2008/03/25/hangs-and-how-to-solve-them-part-2-queuing.aspx" target="_blank"&gt;(Part 2)&lt;/a&gt;: Tom has some useful posts that talk about deadlocks and request queuing in ASP.NET, and how to detect and debug what might be causing them.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;h3&gt;&lt;u&gt;ASP.NET AJAX&lt;/u&gt;&lt;/h3&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://blogs.msdn.com/mikeormond/archive/2008/03/25/building-asp-net-ajax-controls-pt-1.aspx" target="_blank"&gt;Building ASP.NET AJAX Controls (Part 1)&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/mikeormond/archive/2008/03/26/building-asp-net-ajax-controls-pt-2-components.aspx" target="_blank"&gt;(Part 2)&lt;/a&gt;, and &lt;a href="http://blogs.msdn.com/mikeormond/archive/2008/03/27/building-asp-net-ajax-controls-pt-3-properties-and-events.aspx" target="_blank"&gt;(Part 3)&lt;/a&gt;: Mike Ormond has started a nice blog post series that talks about how to build ASP.NET AJAX Controls.&amp;#160; Make sure to check out &lt;a href="http://blogs.msdn.com/mikeormond/archive/2008/03/26/building-asp-net-ajax-controls-pt-2-components.aspx" target="_blank"&gt;Part 2 - Components&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/mikeormond/archive/2008/03/27/building-asp-net-ajax-controls-pt-3-properties-and-events.aspx" target="_blank"&gt;Part 3 - Properties and Events&lt;/a&gt; as well.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://www.asp.net/learn/ajax-videos/" target="_blank"&gt;New ASP.NET AJAX &amp;quot;How Do I?&amp;quot; Videos&lt;/a&gt;: Joe Stagner has published a number of new ASP.NET AJAX &amp;quot;How Do I?&amp;quot; videos.&amp;#160; Learn about the &lt;a href="http://www.asp.net/learn/ajax-videos/video-263.aspx" target="_blank"&gt;re-order control&lt;/a&gt;, &lt;a href="http://www.asp.net/learn/ajax-videos/video-264.aspx" target="_blank"&gt;retrieving values from server-side AJAX controls&lt;/a&gt;, &lt;a href="http://www.asp.net/learn/ajax-videos/video-277.aspx" target="_blank"&gt;two techniques for triggering updates to update panels&lt;/a&gt;, and using the &lt;a href="http://www.asp.net/learn/ajax-videos/video-278.aspx" target="_blank"&gt;cascading drop down control&lt;/a&gt;. &lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://www.singingeels.com/Articles/RealTime_Progress_Bar_With_ASPNET_AJAX.aspx" target="_blank"&gt;Real-Time Progress Bar with ASP.NET AJAX:&lt;/a&gt; SingingEels shows a technique for displaying real-time progress notifications using AJAX as a long-lived activity runs on the server.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://encosia.com/2008/03/27/using-jquery-to-consume-aspnet-json-web-services/" target="_blank"&gt;Using JQuery to Consume ASP.NET AJAX JSON Web Services&lt;/a&gt;: Dave Ward has a nice post that describes how to use the JQuery AJAX library on the client to call an ASP.NET Web Service on the server that is JSON enabled (using ASP.NET AJAX on the server).&amp;#160; &lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;h3&gt;&lt;u&gt;ASP.NET MVC&lt;/u&gt;&lt;/h3&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://dotnetslackers.com/articles/aspnet/KiggBuildingADiggCloneWithASPNETMVC1.aspx" target="_blank"&gt;Kigg - Building a Digg Clone with ASP.NET MVC&lt;/a&gt;: Kazi Manzur Rashid published an excellent Digg-clone sample built with ASP.NET MVC last February.&amp;#160; He recently updated the code to work with ASP.NET MVC Preview 2 (full details &lt;a href="http://weblogs.asp.net/rashid/archive/2008/03/26/kigg-upgraded-to-mix08-asp-net-mvc-release.aspx" target="_blank"&gt;here&lt;/a&gt;).&amp;#160; You can download the latest version of his source code &lt;a href="http://www.codeplex.com/Kigg" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://weblogs.asp.net/stephenwalther/archive/2008/03/17/asp-net-mvc-in-depth-the-life-of-an-asp-net-mvc-request.aspx" target="_blank"&gt;ASP.NET MVC In-Depth: The Life of an ASP.NET Request&lt;/a&gt;: Stephen Walther has a great post that details the exact steps that occur when an ASP.NET MVC request executes.&amp;#160; &lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://weblogs.asp.net/rashid/archive/2008/03/28/asp-net-mvc-action-filter-caching-and-compression.aspx" target="_blank"&gt;ASP.NET MVC Action Filters - Caching and Compression&lt;/a&gt;: Kazi Manzur Rashid has another great post that shows how to use the new ActionFilterAttribute support in ASP.NET MVC to implement output caching and compression attributes. Read this &lt;a href="http://quickstarts.asp.net/3-5-extensions/mvc/ActionFiltering.aspx" target="_blank"&gt;quickstart article&lt;/a&gt; to learn more about how Action Filters work, or watch Scott Hanselman's &lt;a href="http://www.asp.net/learn/3.5-extensions-videos/video-270.aspx" target="_blank"&gt;video&lt;/a&gt; that covers them.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://www.iridescence.no/Posts/Defining-Routes-using-Regular-Expressions-in-ASPNET-MVC.aspx" target="_blank"&gt;Defining Routes using Regular Expressions with ASP.NET MVC&lt;/a&gt;: Someone asked me the other day how to use regular expressions to define route rules with ASP.NET MVC.&amp;#160; Turns out Fredrik Kalseth already has a nice sample that shows how to-do this.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://dotnetslackers.com/articles/aspnet/ASPNETMVCFrameworkPart2.aspx" target="_blank"&gt;Testing with the ASP.NET MVC Framework&lt;/a&gt;: Simone Chiaretta has a great article that discusses how to test controllers using ASP.NET MVC Preview 2.&amp;#160; Note: the next ASP.NET MVC preview release will include a number of refactorings that will simplify controller testing considerably (and avoid the need to mock anything for common scenarios).&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://weblogs.asp.net/stephenwalther/archive/2008/03/19/tdd-test-driven-development-with-visual-studio-2008-unit-tests.aspx" target="_blank"&gt;Test-Driven Development with Visual Studio 2008 Unit Tests&lt;/a&gt;: Stephen Walther has a really nice post that describe how the unit testing features now built-in VS 2008 Professional work (using an ASP.NET MVC project).&amp;#160; Also check out Stephen's excellent &lt;a href="http://weblogs.asp.net/stephenwalther/archive/2008/03/22/tdd-introduction-to-rhino-mocks.aspx" target="_blank"&gt;Introduction to Rhino Mocks&lt;/a&gt; blog post that describes how to use the open source Rhino Mocks framework with VS unit test projects.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;h3&gt;&lt;u&gt;Visual Studio&lt;/u&gt;&lt;/h3&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2008/02/08/vs-2008-web-development-hot-fix-roll-up-available.aspx" target="_blank"&gt;VS 2008 Web Deployment Hot-Fix Roll-Up Now Available for non-English Languages:&lt;/a&gt; Last month we shipped a hot-fix release that fixes a number of bugs, adds a few features, and improves performance for web development scenarios in VS 2008 and Visual Web Developer 2008 Express.&amp;#160; Last month's release only worked with the English-language VS 2008 products.&amp;#160; Yesterday we shipped an update that now works for all VS 2008 languages except Portuguese and Russian (which are still to come in the future).&amp;#160; &lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://blogs.msdn.com/vbteam/archive/2008/03/23/hotfix-available-for-vb-performance-issue-in-vs2008-dj-park.aspx" target="_blank"&gt;Hotfix Available for VB Performance Issue in VS 2008&lt;/a&gt;: The Visual Basic team recently released a hotfix as well that addresses a performance issue with large files that contain XML documentation.&amp;#160; Read this post to learn more about how to download it if you are running into this issue.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://blogs.msdn.com/johnwpowell/archive/2008/03/23/10-tips-to-boost-your-productivity-with-c-and-visual-studio-2008.aspx" target="_blank"&gt;10 Ways to Boost your Productivity with C# and VS 2008&lt;/a&gt;: John W Powell shares a few tips and tricks on how to improve your productivity with C# and VS 2008.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://blogs.msdn.com/saraford/archive/2008/03/20/did-you-know-you-can-show-hack-undone-and-custom-tokens-in-the-task-list-176.aspx" target="_blank"&gt;Showing Hack, Undone, and Custom Tokens in the Task List&lt;/a&gt;: Sara Ford has some cool VS tips of the day posts that talk about what you can do with the task list.&amp;#160; Also read her &lt;a href="http://blogs.msdn.com/saraford/archive/2008/03/19/did-you-know-how-to-create-and-view-todo-s-in-the-task-list-173.aspx" target="_blank"&gt;How to Create and View Todos in the Task List&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/saraford/archive/2008/03/14/did-you-know-you-can-assign-a-priority-to-your-task-list-user-tasks-172.aspx" target="_blank"&gt;Assigning Priority to Items in the Task List&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/saraford/archive/2008/03/24/did-you-know-you-can-create-shortcuts-in-your-task-list-178.aspx" target="_blank"&gt;Create Shortcuts in the Task List&lt;/a&gt;, &lt;a href="http://blogs.msdn.com/saraford/archive/2008/03/13/did-you-know-you-can-use-the-task-list-to-create-user-tasks-that-are-separate-from-your-code-171.aspx" target="_blank"&gt;Create User Tasks in the Task List&lt;/a&gt;, and &lt;a href="http://blogs.msdn.com/saraford/archive/2008/03/25/did-you-know-you-can-create-keyboard-shortcuts-to-navigate-among-keyboard-shortcuts-view-nexttask-and-view-previoustask-178.aspx" target="_blank"&gt;Keyboard Navigation of items in the Task List&lt;/a&gt;.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;h3&gt;&lt;u&gt;Silverlight&lt;/u&gt;&lt;/h3&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://blogs.msdn.com/scmorris/archive/2008/03/21/using-the-silverlight-datagrid.aspx" target="_blank"&gt;Using the Silverlight DataGrid&lt;/a&gt; and &lt;a href="http://blogs.msdn.com/scmorris/archive/2008/03/27/defining-columns-for-a-silverlight-datagrid.aspx" target="_blank"&gt;Defining Columns for a Silverlight DataGrid&lt;/a&gt;: Scott Morrison has started a great series of posts that describe how to use the new Silverlight 2 DataGrid control (which he is the program manager for - so he definitely knows his stuff!).&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://blogs.msdn.com/swiss_dpe_team/archive/2008/03/17/silverlight-2-beta1-wcf-linq-to-sql-a-powerfull-combination.aspx" target="_blank"&gt;Using Silverlight 2's DataGrid with WCF + LINQ to SQL&lt;/a&gt;: This 15 minute video blog demonstrates how to build a LINQ to SQL object model on the server and publish it using WCF.&amp;#160; It then demonstrates how to build a Silverlight client that uses the new Silverlight DataGrid control, and which calls the WCF service to retrieve the LINQ to SQL data to populate it with.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2008/03/27/10290.aspx" target="_blank"&gt;Simple Editing of Web Service Data in a DataGrid:&lt;/a&gt; Mike Taulty has a nice blog post that shows how to create a WCF service on the server, and then use it from a Silverlight 2 client to retrieve data, bind it to a DataGrid, allow users to update rows, add/delete rows, and then save it back to the server using Silverlight 2 Beta1.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://mattberseth.com/blog/2008/03/sorting_with_silverlight_2s_da.html" target="_blank"&gt;Sorting with Silverlight 2's DataGrid Control:&lt;/a&gt; The DataGrid control in Silverlight 2 Beta1 doesn't yet have built-in column sorting support (it is coming in Beta2).&amp;#160; That hasn't stopped Matt Berseth though!&amp;#160; In this post he shows how to implement sorting using a custom header column approach.&amp;#160; Also check out Matt's post &lt;a href="http://mattberseth.com/blog/2008/03/a_quick_look_at_silverlight_2s.html" target="_blank"&gt;here&lt;/a&gt;, which provides a DataGrid test page that shows off a number of the current DataGrid features.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://www.visifire.com/silverlight_charts_gallery.php" target="_blank"&gt;Open Source Silverlight Charts with VisiFire&lt;/a&gt;: Silverlight doesn't yet have built-in charting controls.&amp;#160; The good news is that the folks at Webyog just released a really cool set of open source Silverlight charting controls (complete with animation support) that enable you to easily build great looking charts.&amp;#160; Their model makes it super easy to use the chart components within existing HTML or AJAX applications.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;h3&gt;&lt;u&gt;.NET&lt;/u&gt;&lt;/h3&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://james.newtonking.com/archive/2008/03/27/formatwith-string-format-extension-method.aspx" target="_blank"&gt;FormatWith&lt;/a&gt; and &lt;a href="http://www.iridescence.no/Posts/A-Set-of-Useful-Extension-Methods-for-DateTime.aspx" target="_blank"&gt;DateTime&lt;/a&gt; Extension Methods: James Newton-King and Fredrik Kalseth have some nice posts and samples that demonstrate how to use the new &lt;a href="http://weblogs.asp.net/scottgu/archive/2007/03/13/new-orcas-language-feature-extension-methods.aspx" target="_blank"&gt;extension method feature&lt;/a&gt; in the VB and C# languages in VS 2008 to create some useful convenience libraries.&amp;#160; &lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;a href="http://msdn2.microsoft.com/en-us/magazine/cc337885.aspx" target="_blank"&gt;Dependency Injection Explained&lt;/a&gt;: James Kovacs has a nice MSDN article that explains how to build more loosely coupled applications and enabled dependency injection.&amp;#160; Also read Scott Hanselman's that &lt;a href="http://www.hanselman.com/blog/ListOfNETDependencyInjectionContainersIOC.aspx" target="_blank"&gt;list of .NET Dependency Injector Containers (IOC)&lt;/a&gt; post.&amp;#160; Matthew Podwysocki also covers the new Unity IOC in his posts &lt;a href="http://weblogs.asp.net/podwysocki/archive/2008/03/25/ioc-and-unity-the-basics-and-interception.aspx" target="_blank"&gt;here&lt;/a&gt; and &lt;a href="http://weblogs.asp.net/podwysocki/archive/2008/03/27/ioc-and-unity-configuration-changes-for-the-better.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;Hope this helps,&lt;/p&gt;    &lt;p&gt;Scott&lt;/p&gt; &lt;/font&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6040036" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Visual+Studio/default.aspx">Visual Studio</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Atlas/default.aspx">Atlas</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Silverlight/default.aspx">Silverlight</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Link+Listing/default.aspx">Link Listing</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/MVC/default.aspx">MVC</category></item><item><title>New Log Reporting, Database Management, and other cool admin modules for IIS 7</title><link>http://weblogs.asp.net/scottgu/archive/2008/03/26/new-log-reporting-database-management-and-other-cool-admin-modules-for-iis-7.aspx</link><pubDate>Wed, 26 Mar 2008 08:47:04 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6027751</guid><dc:creator>ScottGu</dc:creator><slash:comments>56</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=6027751</wfw:commentRss><comments>http://weblogs.asp.net/scottgu/archive/2008/03/26/new-log-reporting-database-management-and-other-cool-admin-modules-for-iis-7.aspx#comments</comments><description>&lt;font face="arial" size="2"&gt;   &lt;p&gt;One of the core priorities we focused on when building IIS 7 was to enable a rich .NET extensibility model that provides developers with the hooks to easily plug-in and extend the web server.&amp;#160; &lt;/p&gt;    &lt;p&gt;These extensibility hooks are provided in the web-server pipeline (enabling scenarios like the new &lt;a href="http://weblogs.asp.net/scottgu/archive/2008/03/18/iis-7-0-bit-rate-throttling-module-released.aspx" target="_blank"&gt;IIS7 Bit Rate Throttler&lt;/a&gt;), within the configuration system (enabling developers to create new web.config schema settings), within the health monitoring system (enabling developers to add custom trace events), and within the admin tool (enabling developers to plug-in new admin UI modules).&lt;/p&gt;    &lt;p&gt;We added these extensibility hooks so that anyone can easily extend and enhance the web server using .NET.&amp;#160; We also selfishly wanted them so that we can ship regular feature packs that add additional features to the core web server. &lt;/p&gt;    &lt;h3&gt;&lt;u&gt;IIS 7 Admin Pack Preview 1 Released&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;Last week the IIS team shipped the &lt;a href="http://blogs.msdn.com/carlosag/archive/2008/03/21/IISAdminPackTP1Released.aspx" target="_blank"&gt;first technical preview&lt;/a&gt; of some really cool administration modules that I think web developers will find super useful.&amp;#160; This preview adds several new features to the IIS7 Admin Tool:&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;strong&gt;Database Manager&lt;/strong&gt;: Built-in SQL Server database management, including the ability to create, delete, and edit tables and indexes, create/edit SPROCs and execute custom queries.&amp;#160; Because it is integrated in the IIS administration tool it all works over HTTP/SSL - which means you can use the module to remotely manage your hosted applications (even with low-cost shared hosting accounts), without having to expose your database directly on the Internet.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;strong&gt;Log Reports&lt;/strong&gt;: Built-in report visualization with charting support for log files data.&amp;#160; Full range selection and custom chart creation is supported, as well as the ability to print or save reports.&amp;#160; Like the database manager you can use this module remotely over HTTP/SSL - which means it works in remote shared hosting scenarios.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;strong&gt;Configuration Editor:&lt;/strong&gt; This is a power module that provides complete control over editing all web.config settings within the admin tool.&amp;#160; You can configure it to track the changes you make using the UI and have it auto-generate configuration change scripts that you can then save and tweak to re-run later in an automated way.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;strong&gt;Request Filtering UI:&lt;/strong&gt; This admin module provides more control over the new request filtering feature in IIS7.&amp;#160; Check out Carlos' blog post &lt;a href="http://blogs.msdn.com/carlosag/archive/2008/03/24/IISAdminPackRequestFiltering.aspx" target="_blank"&gt;here&lt;/a&gt; for details on how to use it.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;strong&gt;.NET Authorization:&lt;/strong&gt; This admin module provides a custom authorization rules editor which allows you to more easily manage the ASP.NET &amp;lt;authorization&amp;gt; configuration section.&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;ul&gt;     &lt;li&gt;       &lt;p&gt;&lt;strong&gt;FastCGI UI:&lt;/strong&gt; This admin module provides more support for editing all the new &amp;lt;fastCGI&amp;gt; settings (for when you use FastCGI modules with IIS7 like PHP).&lt;/p&gt;     &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;Below are some screen-shots and simple walkthroughs of the Log Reporting and Database Manager administration UI modules:&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Log Reporting Admin Module&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;Have you ever deployed a web application onto a server and wondered how much load it is getting?, what the average response time from the server is?, or whether many server errors are occurring (and if so on what URLs)?&amp;#160; All of these settings are carefully logged by IIS in a text based log file.&amp;#160; Today most people use command-line tools like the &lt;a href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1287" target="_blank"&gt;IIS Log Parser&lt;/a&gt; utility to query and analyze these files.&lt;/p&gt;    &lt;p&gt;The IIS 7 Admin Pack and the new &amp;quot;IIS Reports&amp;quot; admin module now enable you to also query and chart your reports graphically within the IIS admin tool:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/adminpack/step4.png" /&gt; &lt;/p&gt;    &lt;p&gt;Out of the box the &amp;quot;IIS Reports&amp;quot; admin module comes with a bunch of pre-built logparser-based reports that you can easily run on your sites and applications:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/adminpack/step6.png" /&gt; &lt;/p&gt;    &lt;p&gt;Below is a simple graphical report we could pull up that looks at the HTTP status codes being returned by my &amp;quot;TestSite&amp;quot; application (note how we are using the &amp;quot;bar graph&amp;quot; visualization option):&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/adminpack/step10.png" /&gt; &lt;/p&gt;    &lt;p&gt;Reports can optionally be filtered using a date range.&amp;#160; You can also push the print or save buttons within the report page to generate a printer or a local saved version of the report.&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/adminpack/step7.png" /&gt; &lt;/p&gt;    &lt;p&gt;The IIS7 Admin Tool is a rich client application (built using WinForms) - but it does all of its remote access and work using HTTP based web-services that connect to the remote web-server.&amp;#160; This means it will work through firewalls, and a hoster does not need to open up ports in their network in order to enable it.&amp;#160; &lt;/p&gt;    &lt;p&gt;Once a hoster installs the IIS 7 Admin Pack on their web-servers, remote customers managing their hosted sites using the IIS admin tool (which is built-into Vista and available as a download for Windows XP clients) will automatically be prompted to enable the IIS Reports admin module (the install of the client-side module is seamless).&amp;#160; They'll then be able to use the reports module inside their admin tool to pull up reports for their remote hosted sites.&lt;/p&gt;    &lt;p&gt;&lt;em&gt;Note: hosters can optionally disable this feature if they want, or choose to restrict or customize the list of reports provided.&amp;#160; Hopefully most hosters will chose to just make this a standard feature of all IIS and ASP.NET plans they offer.&lt;/em&gt;&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Database Manager Module&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;Have you ever deployed your application and database to a remote hosting provider and wanted to make a quick change to the database (but your hosting provider didn't support accessing it using the SQL admin tool)?&amp;#160; Using the new &amp;quot;database manager&amp;quot; module within the IIS admin tool you can now remotely access your database and make changes to it using HTTP/SSL through the web-server.&amp;#160; &lt;/p&gt;    &lt;p&gt;Just connect your IIS administration tool to your remote site and click the new &amp;quot;Database Manager&amp;quot; icon:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/adminpack/step1.png" /&gt; &lt;/p&gt;    &lt;p&gt;By default the Database Manager module will look at the &amp;lt;connectionStrings&amp;gt; section of your web application's web.config file, and allow you to easily access any of the databases your hosted application is using.&amp;#160; &lt;/p&gt;    &lt;p&gt;For example, below my TestSite application has a &amp;quot;NorthwindConnectionString&amp;quot; setting in the &amp;lt;connectionStrings&amp;gt; section of my web.config (which is why it shows up in my list of connection nodes).&amp;#160; When I click it I can view and edit my SPROCs and Table Schema (including indexes): &lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/adminpack/step2.png" /&gt; &lt;/p&gt;    &lt;p&gt;We could right-click on any table to edit the row data within it, or alternatively perform a custom SQL query to retrieve a custom set of data:&lt;/p&gt;    &lt;p&gt;&lt;img src="http://www.scottgu.com/blogposts/adminpack/step3.png" /&gt; &lt;/p&gt;    &lt;p&gt;What is nice is that a hoster can easily enable all of the above database admin features for both dedicated and shared hosting plans (even when there are hundreds or thousands of customers on a single server).&amp;#160; Like all other modules in the admin tool, all communication between the rich client front-end and the backend at the hoster is done over HTTP/SSL based web-services (meaning it goes through firewalls and doesn't require the hoster to open any new ports - nor expose the SQL server directly on the Internet).&amp;#160; &lt;/p&gt;    &lt;p&gt;Hopefully this database administration module will just be a standard feature that all IIS hosters enable - which will make remote hosted data management much easier going forward.&lt;/p&gt;    &lt;h3&gt;&lt;u&gt;Summary&lt;/u&gt;&lt;/h3&gt;    &lt;p&gt;Over time you'll see even more admin UI modules be shipped in the IIS 7 Admin Pack and many more features enabled (Carlos, who runs the dev team building the admin tool, is actively asking for suggestions on what you'd like to see via &lt;a href="http://blogs.msdn.com/carlosag/archive/2008/03/21/IISAdminPackTP1Released.aspx" target="_blank"&gt;his blog&lt;/a&gt; - so drop him a comment if you have a suggestion or want to provide some encouragement).&lt;/p&gt;    &lt;p&gt;You can download the first technical preview of IIS 7 Admin Pack release &lt;a href="http://blogs.msdn.com/carlosag/archive/2008/03/21/IISAdminPackTP1Released.aspx" target="_blank"&gt;here&lt;/a&gt; as well as learn more about it via the &lt;a href="http://learn.iis.net/page.aspx/401/using-the-administration-pack/" target="_blank"&gt;online documentation here&lt;/a&gt;.&amp;#160; The above modules work with both the IIS7 release in Vista SP1 as well as Windows Server 2008.&lt;/p&gt;    &lt;p&gt;Hope this helps,&lt;/p&gt;    &lt;p&gt;Scott&lt;/p&gt; &lt;/font&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6027751" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/IIS7/default.aspx">IIS7</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category></item><item><title>ASP.NET MVC Source Code Now Available</title><link>http://weblogs.asp.net/scottgu/archive/2008/03/21/asp-net-mvc-source-code-now-available.aspx</link><pubDate>Fri, 21 Mar 2008 14:33:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:6005677</guid><dc:creator>ScottGu</dc:creator><slash:comments>96</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=6005677</wfw:commentRss><comments>http://weblogs.asp.net/scottgu/archive/2008/03/21/asp-net-mvc-source-code-now-available.aspx#comments</comments><description>&lt;FONT face=arial size=2&gt;
&lt;P&gt;Last month I blogged about our &lt;A href="http://weblogs.asp.net/scottgu/archive/2008/02/12/asp-net-mvc-framework-road-map-update.aspx" target=_blank mce_href="http://weblogs.asp.net/scottgu/archive/2008/02/12/asp-net-mvc-framework-road-map-update.aspx"&gt;ASP.NET MVC Roadmap&lt;/A&gt;.&amp;nbsp; Two weeks ago we shipped the &lt;A href="http://www.asp.net/mvc" target=_blank mce_href="http://www.asp.net/mvc"&gt;ASP.NET Preview 2 Release&lt;/A&gt;.&amp;nbsp; Phil Haack from the ASP.NET team published a good blog post about the release &lt;A href="http://haacked.com/archive/2008/03/10/thoughts-on-asp.net-mvc-preview-2-and-beyond.aspx" target=_blank mce_href="http://haacked.com/archive/2008/03/10/thoughts-on-asp.net-mvc-preview-2-and-beyond.aspx"&gt;here&lt;/A&gt;.&amp;nbsp; Scott Hanselman has created a bunch of great ASP.NET MVC tutorial videos that you can watch to learn more about it &lt;A href="http://www.asp.net/mvc" target=_blank mce_href="http://www.asp.net/mvc"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;One of the things I mentioned in my MVC roadmap post was that we would be publishing the source code for the ASP.NET MVC Framework, and enable it to be easily built, debugged, and patched (so that you can work around any bugs you encounter without having to wait for the next preview refresh release).&lt;/P&gt;
&lt;P&gt;Today we opened up a new &lt;A href="http://www.codeplex.com/aspnet" target=_blank mce_href="http://www.codeplex.com/aspnet"&gt;ASP.NET CodePlex project&lt;/A&gt; that we'll be using to share buildable source for multiple upcoming ASP.NET releases.&amp;nbsp; You can now directly download buildable source and project files for the ASP.NET MVC Preview 2 release &lt;A href="http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=11833" target=_blank mce_href="http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=11833"&gt;here&lt;/A&gt;.&lt;/P&gt;
&lt;H3&gt;&lt;U&gt;Building the ASP.NET MVC Framework&lt;/U&gt;&lt;/H3&gt;
&lt;P&gt;You can download a .zip file containing the source code for the ASP.NET MVC Framework for the release page &lt;A href="http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=11833" target=_blank mce_href="http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=11833"&gt;here&lt;/A&gt;.&amp;nbsp; When you extract the .zip file you can drill into its "MVC" sub-folder to find a VS 2008 solution file for the project:&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.scottgu.com/blogposts/mvcsource/step1.png" mce_src="http://www.scottgu.com/blogposts/mvcsource/step1.png"&gt; &lt;/P&gt;
&lt;P&gt;Double-clicking it will open the MVC project containing the MVC source within VS 2008:&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.scottgu.com/blogposts/mvcsource/step2.png" mce_src="http://www.scottgu.com/blogposts/mvcsource/step2.png"&gt; &lt;/P&gt;
&lt;P&gt;When you do a build it will compile the project and output a System.Web.Mvc.dll assembly under a \bin directory at the top of the .zip directory.&amp;nbsp; You can then copy this assembly into a project or application and use it.&lt;/P&gt;
&lt;P&gt;Note: the license doesn't enable you to redistribute your custom binary version of ASP.NET MVC (we want to avoid having multiple incompatible ASP.NET MVC versions floating around and colliding with each other).&amp;nbsp; But it does enable you to make fixes to the code, rebuild it, and avoid getting blocked by an interim bug you can't work around.&lt;/P&gt;
&lt;H3&gt;&lt;U&gt;Next Steps&lt;/U&gt;&lt;/H3&gt;
&lt;P&gt;Our plans are to release regular drops of the source code going forward.&amp;nbsp; We'll release source updates every time we do official preview drops.&amp;nbsp; We will also release interim source refreshes in between the preview drops if you want to be able to track and build the source more frequently.&lt;/P&gt;
&lt;P&gt;We are also hoping to ship our unit test suite for ASP.NET MVC in the future as well (right now we use an internal mocking framework within our tests, and we are still doing some work to refactor this dependency before shipping them as well).&lt;/P&gt;
&lt;P&gt;Hope this helps,&lt;/P&gt;
&lt;P&gt;Scott&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://weblogs.asp.net/aggbug.aspx?PostID=6005677" width="1" height="1"&gt;</description><category domain="http://weblogs.asp.net/scottgu/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx">.NET</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/Community+News/default.aspx">Community News</category><category domain="http://weblogs.asp.net/scottgu/archive/tags/MVC/default.aspx">MVC</category></item><item><title>IIS 7.0 Bit Rate Throttling Module Released</title><link>http://weblogs.asp.net/scottgu/archive/2008/03/18/iis-7-0-bit-rate-throttling-module-released.aspx</link><pubDate>Tue, 18 Mar 2008 07:43:00 GMT</pubDate><guid isPermaLink="false">c06e2b9d-981a-45b4-a55f-ab0d8bbfdc1c:5992310</guid><dc:creator>ScottGu</dc:creator><slash:comments>51</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://weblogs.asp.net/scottgu/rsscomments.aspx?PostID=5992310</wfw:commentRss><comments>http://weblogs.asp.net/scottgu/archive/2008/03/18/iis-7-0-bit-rate-throttling-module-released.aspx#comments</comments><description>&lt;FONT face=arial size=2&gt;
&lt;P&gt;Video on the web is now one of those common scenarios that every user takes for granted, and increasingly every major site is incorporating in some form (product videos, training videos, richer advertising scenarios, user generated content, customer testimonials, etc).&lt;/P&gt;
&lt;P&gt;One of the challenges when adding video to a site, though, is delivering it in a way that doesn't cost a fortune.&amp;nbsp; Network bandwidth costs a lot of money, and the cost of high quality video usage can quickly add up.&lt;/P&gt;
&lt;P&gt;The blog post below provides a quick overview of some of the options you can use to reduce the cost of delivering video, and discusses a new free download - the &lt;A href="http://blogs.iis.net/vsood/archive/2008/03/15/bit-rate-throttling-is-now-released.aspx" target=_blank mce_href="http://blogs.iis.net/vsood/archive/2008/03/15/bit-rate-throttling-is-now-released.aspx"&gt;IIS 7.0 Bit Rate Throttling Module&lt;/A&gt; - that was released a few days ago and which enables you to easily save money when serving video from an IIS web server using any video technology (including Silverlight, Windows Media Player and even Flash).&lt;/P&gt;
&lt;H3&gt;&lt;U&gt;Option 1: Using a Video Hosting Service&lt;/U&gt;&lt;/H3&gt;
&lt;P&gt;One approach you can take to reduce video bandwidth costs is to use a video hosting service like YouTube or the free &lt;A href="http://silverlight.live.com/" target=_blank mce_href="http://silverlight.live.com/"&gt;Microsoft Silverlight Streaming Service&lt;/A&gt;.&amp;nbsp; This allows you to use someone else's network to deliver the video content, and avoid having to pay the bandwidth costs yourself.&lt;/P&gt;
&lt;P&gt;If you aren't familiar with the Silverlight Streaming service, it allows you to upload up to 10GB of videos and download 5 Terabytes/month of video content (at up to a 1.4 Mbps bit-rate) for free.&amp;nbsp; You can build any custom Silverlight client player application you want to embed the video within it.&amp;nbsp; This means it doesn't require a specific video player look and feel, nor a service logo/watermark to play the video.&amp;nbsp; This allows you to fully integrate the video into your site and use whatever UI you want to host it.&lt;/P&gt;
&lt;H3&gt;&lt;U&gt;Option 2: Hosting Video on Your Own Servers&lt;/U&gt;&lt;/H3&gt;
&lt;P&gt;Sometimes using a video hosting service doesn't make sense (for example: you want to use custom authentication to grant/deny user's access, you want to play really long video segments, or you want to serve up custom ads in your videos).&amp;nbsp; Instead you might want to serve the video up from your own servers and have complete control over it.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;There are typically two options you can use to deliver the video from your servers: using a streaming approach or a progressive video download approach:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Streaming Server Scenario&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;In a streaming scenario a client (like Silverlight, Windows Media Player, Flash or Real Networks) connects to a streaming server.&amp;nbsp; The streaming server then sends down the video stream to watch, and typically enables a user to dynamically skip ahead/behind, pause or stop the video stream.&amp;nbsp; When the user closes the browser or navigates away from the page the video stream automatically stops transmitting.&lt;/P&gt;
&lt;P&gt;Windows Media Services (WMS) is a free streaming server download available for Windows, and can stream video to both Windows Media Player and cross-platform Silverlight browser clients.&amp;nbsp; It is generally regarded as the most server scalable and cost effective way to enable video streaming on the web, and handles both on-demand file streaming scenarios (for example: streaming a .wmv file) as well as live stream scenarios (for example: a sporting event like the Olympics that is happening live in real time).&lt;/P&gt;
&lt;P&gt;Windows Media Services can be used on any version of Windows Server - including the new Windows Server 2008 Web Server edition (which only costs $469, enables up to 4 processors and 32GB of RAM, and supports IIS, ASP.NET, SharePoint, and Windows Media Services).&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Progressive Download Scenario&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;In a progressive download scenario a client (like Flash or Silverlight) downloads a video directly off of a web-server, and begins playing it once enough video is downloaded for it to play smoothly.&lt;/P&gt;
&lt;P&gt;The benefit of using a progressive download approach is that it is super easy to setup on a web-server. Just copy/ftp a video up to a web-server, obtain a URL to it, and you can wire it up to a video client player.&amp;nbsp; It doesn't require any custom web-server configuration, nor require a streaming server to be installed, in order to enable.&lt;/P&gt;
&lt;P&gt;The downside of using a progressive video download approach, though, is that web-servers are by default designed to download files as fast as possible.&amp;nbsp; So when a user clicks to watch a video on your site, your web-server will attempt to transmit it to the client as fast as possible.&amp;nbsp; This is fine if the user decides to watch the entire video.&amp;nbsp; But if the user stops watching the content half way through the video (or navigates to a different page), you will have downloaded a bunch of video content that will never be watched.&lt;/P&gt;
&lt;P&gt;If the remaining un-watched video content is several megabytes (or even tens of megabytes) in size, you will end up over time spending &lt;EM&gt;&lt;U&gt;a lot&lt;/U&gt; &lt;/EM&gt;of money on bandwidth that is not benefiting your business/site at all....&lt;/P&gt;
&lt;H3&gt;&lt;U&gt;IIS 7.0 Bit Rate Throttling Module&lt;/U&gt;&lt;/H3&gt;
&lt;P&gt;Last week the IIS team shipped a new free &lt;A href="http://blogs.iis.net/vsood/archive/2008/03/15/bit-rate-throttling-is-now-released.aspx" target=_blank mce_href="http://blogs.iis.net/vsood/archive/2008/03/15/bit-rate-throttling-is-now-released.aspx"&gt;IIS 7.0 bit-rate throttling module&lt;/A&gt; that makes progressive video scenarios much cheaper in cost.&lt;/P&gt;
&lt;P&gt;The bit rate throttling module enables you to easily configure bandwidth throttling rules for any type of media content downloaded from an IIS web server (including .WMV, .MOV, .FLV and .MP3 files).&lt;/P&gt;
&lt;P&gt;Out of the box, the bit rate throttling module causes IIS to quickly transmit a burst of initial media content when a file is requested.&amp;nbsp; By default the rules are set to look at the mime-type and bit-rate encoding of the file, and send as fast as possible enough of the media file to play 20 seconds of it.&amp;nbsp; Once the video client has 20 seconds of the media to play, the IIS bit rate throttling module will then throttle down the transmit rate to equal the bit-rate encoding of the file.&amp;nbsp; It will then monitor whether the video player on the client ever closes or navigates to a different video, and automatically stop the remainder of the file being sent if the user goes away.&lt;/P&gt;
&lt;P&gt;For example, if you are playing a 35MB video file that is encoded at a bit-rate of 500 Kbps, IIS will send a 20 second burst of the video (20 seconds @ a 500Kbps encoding == 1.25MB of content) as fast as possible to start the video client playing, and then download the remainder of the video at a download rate of only 500 Kbps (enough so that the user always has 20 seconds of video cached on the client so that they never get buffered).&lt;/P&gt;
&lt;P&gt;If after a minute the user gets bored and either stops the video or navigates to a new page, IIS will detect that they went away and stop transmitting the remainder of the 35MB file.&amp;nbsp; Since IIS only downloaded 80 seconds of total video in this scenario (the 60 seconds that the user watched + the 20 second buffer window), only 5MB instead of 35MB of network bandwidth ended up being used.&amp;nbsp; 30MB of bandwidth savings repeated hundreds or thousands of times a day can easily translate to thousands of dollars of bandwidth savings per year....&lt;/P&gt;
&lt;H3&gt;&lt;U&gt;IIS 7.0 Bit Rate Throttling Module Download and Installation&lt;/U&gt;&lt;/H3&gt;
&lt;P&gt;You can download and learn more about the IIS 7.0 bit-rate throttling module &lt;A href="http://blogs.iis.net/vsood/archive/2008/03/15/bit-rate-throttling-is-now-released.aspx" target=_blank mce_href="http://blogs.iis.net/vsood/archive/2008/03/15/bit-rate-throttling-is-now-released.aspx"&gt;here&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;Once installed, you can click the "Bit Rate Throttling" node in the IIS admin tool:&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.scottgu.com/blogposts/bitrate/bitrate1.png" mce_src="http://www.scottgu.com/blogposts/bitrate/bitrate1.png"&gt; &lt;/P&gt;
&lt;P&gt;And then configure whatever bit-rate throttling rules you want on a pe