<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.iis.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/" xmlns:cs="http://blogs.iis.net/"><channel><title>BillS IIS Blog : Extensibility</title><link>http://blogs.iis.net/bills/archive/tags/Extensibility/default.aspx</link><description>Tags: Extensibility</description><dc:language>en</dc:language><generator>CommunityServer 2007 SP1 (Build: 20510.895)</generator><item><title>Why IIS7? Top 12 cool features…</title><link>http://blogs.iis.net/bills/archive/2008/11/20/why-iis7-top-12-cool-features.aspx</link><pubDate>Fri, 21 Nov 2008 04:13:45 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:2759317</guid><dc:creator>bills</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/bills/rsscomments.aspx?PostID=2759317</wfw:commentRss><comments>http://blogs.iis.net/bills/archive/2008/11/20/why-iis7-top-12-cool-features.aspx#comments</comments><description>&lt;p&gt;Every time I talk with customers in meetings or at conferences I’m struck by how many cool amazing new capabilities IIS7 has.&amp;#160; I can go on for literally hours talking about the new features and benefits, and showing demos.&amp;#160; And with each new &lt;a href="http://www.iis.net/extensions"&gt;IIS7 Extension&lt;/a&gt;, the list of new features just gets bigger and bigger.&amp;#160; A few months ago I realized we didn’t have the top list of features written up anywhere, and so we started the process of distilling down the list to the top 10.&amp;#160; We almost made it!&amp;#160; We ended up with the top 12 reasons you should get IIS7 today.&amp;#160; Check them out here:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.iis.net/getstarted" href="http://www.iis.net/getstarted"&gt;http://www.iis.net/getstarted&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Over the next few weeks we’ll be adding a cool demo for each of the reasons to show the features in action.&amp;#160; Be sure to check back soon!&lt;/p&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=2759317" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/bills/archive/tags/IIS7/default.aspx">IIS7</category><category domain="http://blogs.iis.net/bills/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.iis.net/bills/archive/tags/Extensibility/default.aspx">Extensibility</category><category domain="http://blogs.iis.net/bills/archive/tags/Administration/default.aspx">Administration</category><category domain="http://blogs.iis.net/bills/archive/tags/Troubleshooting/default.aspx">Troubleshooting</category><category domain="http://blogs.iis.net/bills/archive/tags/IIS+News+Item/default.aspx">IIS News Item</category><category domain="http://blogs.iis.net/bills/archive/tags/Developers/default.aspx">Developers</category><category domain="http://blogs.iis.net/bills/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.iis.net/bills/archive/tags/Videos/default.aspx">Videos</category><category domain="http://blogs.iis.net/bills/archive/tags/Media/default.aspx">Media</category><category domain="http://blogs.iis.net/bills/archive/tags/Administrators/default.aspx">Administrators</category><category domain="http://blogs.iis.net/bills/archive/tags/Configuration/default.aspx">Configuration</category><category domain="http://blogs.iis.net/bills/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.iis.net/bills/archive/tags/Deployment/default.aspx">Deployment</category></item><item><title>Find New IIS7 Extensions at http://www.iis.net/extensions/</title><link>http://blogs.iis.net/bills/archive/2008/11/11/find-new-iis7-extensions-at-http-www-iis-net-extensions.aspx</link><pubDate>Tue, 11 Nov 2008 22:55:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:2739094</guid><dc:creator>bills</dc:creator><slash:comments>7</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/bills/rsscomments.aspx?PostID=2739094</wfw:commentRss><comments>http://blogs.iis.net/bills/archive/2008/11/11/find-new-iis7-extensions-at-http-www-iis-net-extensions.aspx#comments</comments><description>&lt;P&gt;I’m happy to announce that IIS7 Extensions have found their home at &lt;A href="http://www.iis.net/extensions"&gt;http://www.iis.net/extensions&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Every since IIS7 shipped 9 months ago, the IIS team has been cranking away adding new features to the platform.&amp;nbsp; Last time I blogged about &lt;A href="http://blogs.iis.net/bills/archive/2008/06/02/how-iis-ships-software.aspx" mce_href="http://blogs.iis.net/bills/archive/2008/06/02/how-iis-ships-software.aspx"&gt;how we do this&lt;/A&gt;, I realized we didn’t have a single place to learn about all of them, so I kicked off an effort within the team to create this.&amp;nbsp; Now that the pages are up, it is amazing to see how many new capabilities are already available on top of IIS7…which all by itself had more new features than any other IIS release in the history of the product.&amp;nbsp; It is a testament to not only the ingenuity and hard work of the IIS team, but a real validation that IIS7 is not just a Web server, it is a server platform.&amp;nbsp; All of these new features are built on top of public extensibility points that any developer can use, and provide a seamless runtime, configuration and administration experience that looks and feels like they were built into the product to begin with!&amp;nbsp; Here they are:&lt;/P&gt;
&lt;P&gt;Landing page:&amp;nbsp; &lt;A href="http://www.iis.net/extensions"&gt;http://www.iis.net/extensions&lt;/A&gt; &amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;A title=http://www.iis.net/AdministrationPack href="http://www.iis.net/AdministrationPack" mce_href="http://www.iis.net/AdministrationPack"&gt;http://www.iis.net/AdministrationPack&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title=http://www.iis.net/ApplicationRequestRouting href="http://www.iis.net/ApplicationRequestRouting" mce_href="http://www.iis.net/ApplicationRequestRouting"&gt;http://www.iis.net/ApplicationRequestRouting&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title=http://www.iis.net/BitRateThrottling href="http://www.iis.net/BitRateThrottling" mce_href="http://www.iis.net/BitRateThrottling"&gt;http://www.iis.net/BitRateThrottling&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title=http://www.iis.net/DatabaseManager href="http://www.iis.net/DatabaseManager" mce_href="http://www.iis.net/DatabaseManager"&gt;http://www.iis.net/DatabaseManager&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title=http://www.iis.net/FTP href="http://www.iis.net/FTP" mce_href="http://www.iis.net/FTP"&gt;http://www.iis.net/FTP&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title=http://www.iis.net/IISManager href="http://www.iis.net/IISManager" mce_href="http://www.iis.net/IISManager"&gt;http://www.iis.net/IISManager&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title=http://www.iis.net/PowerShell href="http://www.iis.net/PowerShell" mce_href="http://www.iis.net/PowerShell"&gt;http://www.iis.net/PowerShell&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title=http://www.iis.net/SmoothStreaming href="http://www.iis.net/SmoothStreaming" mce_href="http://www.iis.net/SmoothStreaming"&gt;http://www.iis.net/SmoothStreaming&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title=http://www.iis.net/URLRewrite href="http://www.iis.net/URLRewrite" mce_href="http://www.iis.net/URLRewrite"&gt;http://www.iis.net/URLRewrite&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title=http://www.iis.net/UrlScan href="http://www.iis.net/UrlScan" mce_href="http://www.iis.net/UrlScan"&gt;http://www.iis.net/UrlScan&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title=http://www.iis.net/WebDeploymentTool href="http://www.iis.net/WebDeploymentTool" mce_href="http://www.iis.net/WebDeploymentTool"&gt;http://www.iis.net/WebDeploymentTool&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title=http://www.iis.net/WebPlaylists href="http://www.iis.net/WebPlaylists" mce_href="http://www.iis.net/WebPlaylists"&gt;http://www.iis.net/WebPlaylists&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A title=http://www.iis.net/WebDAV href="http://www.iis.net/WebDAV" mce_href="http://www.iis.net/WebDAV"&gt;http://www.iis.net/WebDAV&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Check out the &lt;A href="http://www.iis.net/extensions" mce_href="http://www.iis.net/extensions"&gt;more than a dozen new features&lt;/A&gt; available today!&amp;nbsp; Over the next few weeks we’ll be adding video demos of each feature and more new content.&amp;nbsp; Stay tuned for many cool new features to come!&lt;/P&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=2739094" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/bills/archive/tags/IIS7/default.aspx">IIS7</category><category domain="http://blogs.iis.net/bills/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.iis.net/bills/archive/tags/PHP/default.aspx">PHP</category><category domain="http://blogs.iis.net/bills/archive/tags/Extensibility/default.aspx">Extensibility</category><category domain="http://blogs.iis.net/bills/archive/tags/IIS+News+Item/default.aspx">IIS News Item</category><category domain="http://blogs.iis.net/bills/archive/tags/Media/default.aspx">Media</category><category domain="http://blogs.iis.net/bills/archive/tags/FastCGI/default.aspx">FastCGI</category><category domain="http://blogs.iis.net/bills/archive/tags/Administrators/default.aspx">Administrators</category><category domain="http://blogs.iis.net/bills/archive/tags/Configuration/default.aspx">Configuration</category><category domain="http://blogs.iis.net/bills/archive/tags/Extensions/default.aspx">Extensions</category><category domain="http://blogs.iis.net/bills/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.iis.net/bills/archive/tags/URL+Rewrite/default.aspx">URL Rewrite</category><category domain="http://blogs.iis.net/bills/archive/tags/Deployment/default.aspx">Deployment</category></item><item><title>Free IIS7 Online Training</title><link>http://blogs.iis.net/bills/archive/2007/09/10/free-iis7-online-training.aspx</link><pubDate>Mon, 10 Sep 2007 16:36:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:1901270</guid><dc:creator>bills</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/bills/rsscomments.aspx?PostID=1901270</wfw:commentRss><comments>http://blogs.iis.net/bills/archive/2007/09/10/free-iis7-online-training.aspx#comments</comments><description>&lt;P&gt;A few months ago the IIS team did a quick tour&amp;nbsp;of Europe, speaking in various cities and countries in an all-day IIS conference specifically geared toward training people on IIS7.&amp;nbsp; Luckily, the good people of Poland decided to record and publish the training for everyone to use.&amp;nbsp; Check out the sessions below to watch &lt;A href="http://brettblog.com/default.aspx" mce_href="http://brettblog.com/default.aspx"&gt;Brett Hill&lt;/A&gt; and Isaac Roybal present IIS7.&amp;nbsp; Here is a list of all the sessions:&amp;nbsp; &lt;A href="http://www.microsoft.com/emea/itsshowtime/result_search.aspx?event=69&amp;amp;x=13&amp;amp;y=2" mce_href="http://www.microsoft.com/emea/itsshowtime/result_search.aspx?event=69&amp;amp;x=13&amp;amp;y=2"&gt;http://www.microsoft.com/emea/itsshowtime/result_search.aspx?event=69&amp;amp;x=13&amp;amp;y=2&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;
&lt;P&gt;&lt;B&gt;IIS 7 Web Server Platform- Windows Server “Longhorn”&lt;/B&gt; 
&lt;P&gt;&lt;B&gt;&lt;/B&gt;
&lt;P&gt;&lt;B&gt;&lt;A href="http://brettblog.com/ct.ashx?id=fd552421-fd51-416f-b8dc-88eaa6038372&amp;amp;url=http%3a%2f%2fwww.microsoft.com%2femea%2fitsshowtime%2fsessionh.aspx%3fvideoid%3d565" mce_href="http://brettblog.com/ct.ashx?id=fd552421-fd51-416f-b8dc-88eaa6038372&amp;amp;url=http%3a%2f%2fwww.microsoft.com%2femea%2fitsshowtime%2fsessionh.aspx%3fvideoid%3d565"&gt;Microsoft’s Next Generation Web Server:&lt;I&gt; &lt;/I&gt;What’s New in IIS 7 for IT Pros&lt;/A&gt;&lt;/B&gt; 
&lt;P&gt;&lt;B&gt;Isaac Roybal&lt;/B&gt;, Product Manager, Windows Server, Microsoft Corporation 
&lt;P&gt;This overview session will highlight the key points of interests for IT Pros in Internet Information Services version 7.&amp;nbsp; IIS7 modularity increases security by allowing a reduced installation footprint and creation of specialized, streamlined servers. Application Pools are now “sandboxed” by default.&amp;nbsp; You’ll see how IIS7 eases administration with a new IIS Manage UI, delegated administration, and new tools for automating administrative tasks. Applications run more reliably as they are easier to troubleshoot with built in tracing and diagnostics. Finally, multiple servers can use a single configuration file with the shared configuration feature for web farms. 
&lt;P&gt;&lt;B&gt;&lt;A href="http://brettblog.com/ct.ashx?id=fd552421-fd51-416f-b8dc-88eaa6038372&amp;amp;url=http%3a%2f%2fwww.microsoft.com%2femea%2fitsshowtime%2fsessionh.aspx%3fvideoid%3d566" mce_href="http://brettblog.com/ct.ashx?id=fd552421-fd51-416f-b8dc-88eaa6038372&amp;amp;url=http%3a%2f%2fwww.microsoft.com%2femea%2fitsshowtime%2fsessionh.aspx%3fvideoid%3d566"&gt;IIS7 Administration: The New IIS Manager&lt;/A&gt;&lt;/B&gt; 
&lt;P&gt;&lt;B&gt;Brett Hill&lt;/B&gt;, IIS Sr. Technical Evangelist, Microsoft Corporation 
&lt;P&gt;IIS7 Administration centers around the new task-oriented IIS Manager. This redesigned administration tool has many major new capabilities including the ability to delegate features, edit .NET configuration and has significantly improved performance when managing many sites. The IIS Manager itself is an extensible, modular application that administrators can customize and developers can extend.&amp;nbsp; In this presentation we’ll explore how use and control the IIS Manager with a special focus on Delegated Administration. In addition, we’ll explore how to use Granular Locking to fine tune your delegated settings beyond those available in the UI. 
&lt;P&gt;&lt;B&gt;&lt;/B&gt;
&lt;P&gt;&lt;B&gt;&lt;A href="http://brettblog.com/ct.ashx?id=fd552421-fd51-416f-b8dc-88eaa6038372&amp;amp;url=http%3a%2f%2fwww.microsoft.com%2femea%2fitsshowtime%2fsessionh.aspx%3fvideoid%3d567" mce_href="http://brettblog.com/ct.ashx?id=fd552421-fd51-416f-b8dc-88eaa6038372&amp;amp;url=http%3a%2f%2fwww.microsoft.com%2femea%2fitsshowtime%2fsessionh.aspx%3fvideoid%3d567"&gt;IIS7 Administration: Shared Configuration, Remote Control, and Automated Tools&lt;/A&gt; &lt;/B&gt;
&lt;P&gt;&lt;B&gt;Isaac Roybal&lt;/B&gt;, Product Manager, Windows Server, Microsoft Corporation 
&lt;P&gt;For web farms, IIS7 has a powerful new feature – Shared Configuration. This allows you to configure multiple servers to share a single configuration file. The benefits are clear - all web servers have identical configuration so there’s no need to do configuration replication. 
&lt;P&gt;In addition, IIS Manager has built in remote administration capabilities. Using https between the IIS Manager and the remote server, this feature includes the ability to define trusted users in IIS Manager and have identities securely stored in the IIS configuration, Windows SAM or AD, or a .NET provider. 
&lt;P&gt;Of course, many organizations need to automate administration tasks.&amp;nbsp; APPCMD is the new powerful, general purpose command line utility for controlling configuration, state for site and pools, and querying status. WMI has been improved specifically for IIS management, and there’s a new managed code API Microsoft.Web.Adminsitrationis that makes it easy for developers use .NET to write IIS management tools. PowerShell can use the managed API or WMI, giving you a superior command line and scripting environment for managing your servers. 
&lt;P&gt;&lt;B&gt;&lt;/B&gt;
&lt;P&gt;&lt;B&gt;&lt;A href="http://brettblog.com/ct.ashx?id=fd552421-fd51-416f-b8dc-88eaa6038372&amp;amp;url=http%3a%2f%2fwww.microsoft.com%2femea%2fitsshowtime%2fsessionh.aspx%3fvideoid%3d568" mce_href="http://brettblog.com/ct.ashx?id=fd552421-fd51-416f-b8dc-88eaa6038372&amp;amp;url=http%3a%2f%2fwww.microsoft.com%2femea%2fitsshowtime%2fsessionh.aspx%3fvideoid%3d568"&gt;IIS 7 Security: Less Exposure, Greater Control&lt;/A&gt;&lt;/B&gt; 
&lt;P&gt;&lt;B&gt;Brett Hill&lt;/B&gt;, IIS Sr. Technical Evangelist, Microsoft Corporation 
&lt;P&gt;IIS7 security improvements can be found in many areas. In addition to the ability to control the server footprint, security is improved with the new URLFiltering and URLAuthorization capabilities. Also, you can now use Forms authentication with any content while leveraging .NET role and membership providers. In addition, there are key changes in the user principles and groups used by IIS7 that will make the server both easier to manage and more secure.&amp;nbsp; Finally, application pool sandboxing helps to improve the security boundary between application pools. 
&lt;P&gt;&lt;B&gt;&lt;/B&gt;
&lt;P&gt;&lt;B&gt;&lt;A href="http://www.microsoft.com/emea/spotlight/Isaac_Roybal_IIS_7_Troubleshooting_Failed_Request_Tracing.aspx" mce_href="http://www.microsoft.com/emea/spotlight/Isaac_Roybal_IIS_7_Troubleshooting_Failed_Request_Tracing.aspx"&gt;IIS 7 Troubleshooting: Failed Request Tracing&lt;/A&gt;&lt;/B&gt; 
&lt;P&gt;&lt;B&gt;Isaac Roybal&lt;/B&gt;, Product Manager, Windows Server, Microsoft Corporation 
&lt;P&gt;One of the most exciting features in IIS 7 for administrators is the new built-in failed request tracing capabilities. You can configure IIS 7 to automatically create a detailed trace log of events that occurred in the request processing pipeline when specific error codes are seen and/or if a request takes more than N seconds to complete. This is configurable at the server, site, application, or file level, and can be configured in the UI or with a command line tool. The resulting trace log is ideal for identifying bottlenecks. Like everything in IIS 7, it is extensible and can be customized with new events.&lt;/P&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=1901270" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/bills/archive/tags/IIS7/default.aspx">IIS7</category><category domain="http://blogs.iis.net/bills/archive/tags/Extensibility/default.aspx">Extensibility</category><category domain="http://blogs.iis.net/bills/archive/tags/Samples+_2600_amp_3B00_+Demos/default.aspx">Samples &amp;amp; Demos</category><category domain="http://blogs.iis.net/bills/archive/tags/Troubleshooting/default.aspx">Troubleshooting</category><category domain="http://blogs.iis.net/bills/archive/tags/IIS+News+Item/default.aspx">IIS News Item</category><category domain="http://blogs.iis.net/bills/archive/tags/Developers/default.aspx">Developers</category><category domain="http://blogs.iis.net/bills/archive/tags/Performance/default.aspx">Performance</category></item><item><title>My Take: IIS vs. Apache</title><link>http://blogs.iis.net/bills/archive/2007/05/07/iis-vs-apache.aspx</link><pubDate>Mon, 07 May 2007 07:40:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:1696624</guid><dc:creator>bills</dc:creator><slash:comments>15</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/bills/rsscomments.aspx?PostID=1696624</wfw:commentRss><comments>http://blogs.iis.net/bills/archive/2007/05/07/iis-vs-apache.aspx#comments</comments><description>&lt;p&gt;I ran across &lt;a href="http://liquidat.wordpress.com/2007/05/04/apache-at-56-what-is-wrong/" target="_blank"&gt;Apache at 56% - what is wrong?&lt;/a&gt; by &lt;a href="http://liquidat.wordpress.com/"&gt;/home/liquidat&lt;/a&gt; this weekend, and the resulting &lt;a href="http://digg.com/linux_unix/Apache_at_56_what_is_wrong"&gt;Digg thread&lt;/a&gt;, and enjoyed reading the age-old IIS vs. Apache debate waged by loyalists on both sides.&amp;#160; It is great to see the passion for Web servers still very much alive.&amp;#160; This is one of the reasons I love software...it is so much more than bits and bytes.&amp;#160; Software, good and bad, evokes an emotional response from users.&amp;#160; It frustrates the crap out of me when it doesn't work like I want it to, and it makes me nod my head and say &amp;quot;cool...&amp;quot; when it does something really powerful that I don't expect.&amp;#160; &lt;/p&gt;  &lt;p&gt;The IIS vs. Apache debate has been going on for a while, and reminds me of the &lt;a href="http://www.apple.com/getamac/ads/"&gt;Mac vs. Windows&lt;/a&gt; debate, which also never gets old.&amp;#160; I used to be a die hard Windows fan.&amp;#160; I got my hands on a Windows 95 beta and was so blown away by it.&amp;#160; I was one of those crazy kids that went to CompUSA at midnight the day it was released and bought my own copy.&amp;#160; Later in college I dual-booted into Linux so I could have access to gcc and all the great development tools we were using in class.&amp;#160; Now I run Mac OSX and Vista at home.&amp;#160; &lt;/p&gt;  &lt;p&gt;When I got out of college, I worked for a start-up ISP, and ended up focusing a lot of my energy on the Web hosting side of the business.&amp;#160; We started out with a Sun Ultra server, running Solaris, then deployed a bunch of Linux servers.&amp;#160; We used Zeus and Apache as a Web server.&amp;#160; They were both great.&amp;#160; I admire Apache for a lot of reasons.&amp;#160; It is a solid Web server with a great extensibility model, and is very reliable when run on Linux.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;My history with IIS&lt;/strong&gt;&lt;/h3&gt;  &lt;p&gt;I got my hands on IIS when it first came out in 1996.&amp;#160; At first it seemed like a toy (maybe because it was) but it quickly grew up.&amp;#160; With ASP in IIS 3.0 I fell in love.&amp;#160; After hacking so many CGI applications together in C or PERL, I was blown away at how productive I could be with ASP, especially when MDAC came out and made data access so easy.&amp;#160; If I had to make a bet, I'd guess this is one of the reasons people love IIS to this day:&amp;#160; it is easy to setup, use, and incredibly powerful to program against. &lt;/p&gt;  &lt;p&gt;I pushed the IIS4/NT 4 option pack very hard at the company I worked for in 1997, and we deployed the last beta in production.&amp;#160; It required a reboot every day in order to run properly, and depending on which series of patches we installed, it sometimes required more, but it was worth it.&amp;#160; I remember once installing an Oracle patch one morning, on recommendation from an Orcale support engineer, that took out the entire server and required a full rebuild.&amp;#160; That was the day I learned to never install patches on a production server without first testing them. :)&lt;/p&gt;  &lt;p&gt;IIS5 came out with Windows 2000, right as I joined Microsoft, and ended up being a disasterous release for the IIS team.&amp;#160; I remember sitting through meeting after meeting with customers who were hit by Code Red and Nimda, who were justifiably furiated by the impact the vulnerabilities had made on their business.&amp;#160; IIS wasn't very popular inside the company at the time either, as these were the first broad-scale internet worm attacks against any Microsoft product, and it took time for others to realize: it can happen to you.&lt;/p&gt;  &lt;p&gt;The IIS team learned some very hard lessons about security vs. features in 2001 and 2002.&amp;#160; We poured over our code, we hired independent contractors to come pour over our code, fuzz it, hack it, and try to break it.&amp;#160; The result is quite possibly the most secure and reliable Web server ever with IIS6 - released with Windows 2003 Server.&amp;#160; Don't take my word, search &lt;a href="http://secunia.com/"&gt;http://secunia.com&lt;/a&gt; for IIS security issues yourself, and compare it to any other Web server product.&amp;#160; &lt;/p&gt;  &lt;p&gt;And with 2007 came IIS7 in Windows Vista, and later this year, with Windows Server &amp;quot;Longhorn&amp;quot;.&amp;#160; IIS7 is more like a &amp;quot;v1&amp;quot; release, than a &amp;quot;v7&amp;quot;.&amp;#160; I can honestly say it is the biggest release of IIS ever.&amp;#160; It has more fundamental improvements and new capabilities than any previous release of IIS, and hasn't lost sight of the basics: security, reliability, performance.&amp;#160; I think it will change the Web server market.&amp;#160; If you're already an IIS customer, there is a lot to look forward to with IIS7.&amp;#160; And if you haven't checked out IIS for a while, or you are still worried about security or reliability, it is time to give IIS a second look.&lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;&lt;/strong&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;&lt;strong&gt;Bad reasons to avoid IIS&lt;/strong&gt;&lt;/h3&gt;  &lt;p&gt;If you're saying to yourself:&amp;#160; IIS isn't as secure as Apache, or isn't as reliable, or isn't as fast, you should think twice.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Security&lt;/strong&gt;.&amp;#160; If you're worried about IIS security vs. Apache, you're concerns are outdated.&amp;#160; Check out &lt;a href="http://secunia.com/" mce_href="http://secunia.com"&gt;http://secunia.com&lt;/a&gt; and compare IIS5 and IIS6's track record for the last 4-5 years and compare it to Apache.&amp;#160; Having been on the IIS team during Code Red and Nimda I can tell you it was a very painful experience and one I don't ever hope to re-live, nor do I wish it on my worst enemy.&amp;#160; The IIS team learned hard lessons in 2001, and the results speak for themselves.&amp;#160; Is IIS perfect?&amp;#160; Nope, it is still build by faliable humans and we make mistakes just like every other engineering team.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Reliability and Performance&lt;/strong&gt;.&amp;#160; IIS6 included a new process model which can reliably host Web applications, and monitors them for health and responsiveness.&amp;#160; It can proactively recycle applications when they are unhealthy.&amp;#160; IIS7 takes this process model to the next level by automatically isolating each new site when it is created in its own Application Pool, and dynamically assigning a unique SID (identity) to the AppPool so it is isolated from all other sites on the box from a runtime identity perspective - without any additional management required.&amp;#160; It also isolates the configuration for the AppPool, so it is impossible to read configuration from other sites on the server.&amp;#160; This provides the ultimate Web server architecture for Windows - a high performance multi-threaded server that provides secure isolation of Web sites by default and is also agile enough to respond to poor health conditions and gracefully recycle applications&lt;/p&gt;  &lt;p&gt;If you're worried about IIS performance and reliability when running PHP vs. running on Apache, you're concerns are definitely valid.&amp;#160; Up until recently there were only two ways to run PHP:&amp;#160; the slow way (CGI), and the unreliable way (ISAPI).&amp;#160; :)&amp;#160; This is primarily a result of the lack of thread-safety in some PHP extensions - they were originally written for the pre-fork Linux/Apache environment which is not multi-threaded.&amp;#160; Running them on IIS with the PHP ISAPI causes them to crash, and take out the IIS process serving your application.&amp;#160; &lt;/p&gt;  &lt;p&gt;Fortunately, the &lt;a href="http://blogs.iis.net/bills/archive/2006/10/31/IIS-Team-Announces-FastCGI-For-IIS-5.1_2C00_-IIS-6.0-and-IIS7.aspx" mce_href="http://blogs.iis.net/bills/archive/2006/10/31/IIS-Team-Announces-FastCGI-For-IIS-5.1_2C00_-IIS-6.0-and-IIS7.aspx"&gt;Microsoft / Zend partnership&lt;/a&gt; has brought about fixes to these issues with many performance and compatibility fixes by Zend, and a &lt;a href="http://www.iis.net/default.aspx?tabid=1000051" mce_href="http://www.iis.net/default.aspx?tabid=1000051"&gt;FastCGI&lt;/a&gt; feature for IIS which enables fast, reliable PHP hosting.&amp;#160; FastCGI is available now in &lt;a href="http://www.iis.net/default.aspx?tabid=1000051"&gt;Tech Preview&lt;/a&gt; form, and has also been included in Windows Server &amp;quot;Longhorn&amp;quot; Beta 3.&amp;#160; It will be included in Vista SP1 and Longhorn Server at RTM.&amp;#160; &lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;&lt;/strong&gt;&amp;#160;&lt;/h3&gt;  &lt;h3&gt;&lt;strong&gt;Reasons you should check out IIS7 if you use Apache today&lt;/strong&gt;&lt;/h3&gt;  &lt;p&gt;There are so many new capabilities in IIS7, it would turn this already long post, into a short novel to list them all.&amp;#160; If you want lots of specifics, go read through the &lt;a href="http://www.iis.net/default.aspx?tabid=7"&gt;IIS7&lt;/a&gt; site.&amp;#160; Here are a few reasons you Apache users might be interested in looking at IIS7:&lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Text file configuration &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Apache has httpd.conf - a simple text file for configuration - which makes it very easy to edit Apache configuration using text/code editors or write PERL or other scripts to automate configuration changes.&amp;#160; Since the configuration file is just a text file, it also makes it easy to copy configuration from one server to another.&amp;#160; Unfortunately, Apache does require the Administrator to manually signal Apache to reload configuration in order for changes to take effect.&amp;#160; &lt;/p&gt;  &lt;p&gt;Many IIS customers dread IIS' configuration store - the 'metabase' - and for good reason.&amp;#160; It has been an opaque configuration store like the registry since it was introduced in IIS4, and while there are many tools and APIs to use to configure IIS with, nothing beats being able to open up your configuration in the text editor of your choice and directly change configuration settings.&amp;#160; With IIS7, all IIS configuration is now stored in a simple XML file called applicationHost.config, which is placed by default in the \windows\system32\inetsrv\config directory.&amp;#160; Changing configuration is as simple as opening the file, adding or changing a configuration setting, and saving the file.&amp;#160; Want to share configuration across&amp;#160; a set of servers?&amp;#160; Simply copy the applicationHost.config file onto a file share and redirect IIS configuration to look there for its settings.&amp;#160; And whether your configuration is stored locally on the hard drive, or on a file server, changes take effect immediately, without requiring any restarts.&amp;#160; All IIS configuration settings are self-described in a schema file that can be accessed by going to \windows\sytem32\inetsrv\config\schema.&amp;#160; Adding new configuration to IIS is as simple as dropping a new schema file in this directory, registering it, and it automatically becomes available through IIS' cmd-line tool and programmatic APIs.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Distributed Configuration (by default)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Apache supports distributed configuration with a feature called .htaccess.&amp;#160; It is a powerful feature that enables configuration for a Web site to be overriden using a simple text file in the content directory.&amp;#160; Unfortunately, due to the way it is designed in Apache, using it incurrs a huge performance hit.&amp;#160; In fact, the apache.org site recommends you &lt;a href="http://httpd.apache.org/docs/1.3/howto/htaccess.html"&gt;avoid using it whenever possible&lt;/a&gt;.&amp;#160; &lt;/p&gt;  &lt;p&gt;IIS7 supports &lt;a href="http://www.iis.net/articles/view.aspx/Managing-IIS7/Delegation-in-IIS7/Delegating-Permission-in-Config/How-to-Use-Configuration-Delegation-in-IIS7?tabid=1"&gt;distributed configuration&lt;/a&gt; in web.config files, and has some important advantages over .htaccess.&amp;#160; Web.config is the file that ASP.NET uses today to store configuration, so developers now have a single file, format and API to use to target Web site / app configuration.&amp;#160; Imagine storing your PHP, Apache and Web Application settings in one file.&amp;#160; This distributed configuration support is very powerful, and allows for &lt;strong&gt;&lt;em&gt;every per-URL configuration IIS property&lt;/em&gt;&lt;/strong&gt; to be set in distributed configuration.&amp;#160; IIS7 caches web.config data, which avoids the per-request performance hit Apache suffers from.&amp;#160; The IIS implmenetation for distributed config is so good we've made it the default for a bunch of IIS configuration that we know developers typically want to set along with their Web sites.&amp;#160; For example, if you use any IIS7 tool to override the default document for a site or application, that setting will be stored in the web.config file for that directory by default.&amp;#160; Of course, you can override the default and store everything in IIS' global configuration file if you want, and you can decide on a section-by-section basis which settings you want distributed, and which you want to keep centralized.&amp;#160; There is much more granulatiry in IIS' configuration locking support over Apache, enabling you to even lock at the attribute level if desired.&amp;#160; &lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Extensibility (C/C++/C#/VB.NET/and 30+ other languages...)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;As I noted above, Apache has had a very modular architecture with powerful extensibility for many years.&amp;#160; Apache's architecture has allowed many people to take it and add / modify / extend the Web server to do many custom things.&amp;#160; The resulting community modules for Apache has been impressive to watch.&amp;#160;&amp;#160; IIS' ISAPI extensibility hasn't been a complete slouch: some of the world's biggest application frameworks have successfuly run on ISAPI, including ASP, ASP.NET, ColdFusion, ActiveState PERL, etc.&amp;#160; Unfortunately, the number of successful ISAPI developers does seem to be smaller than the successful Apache mod developers, and the product team itself elected to rarely use ISAPI to build actual IIS features.&lt;/p&gt;  &lt;p&gt;This all changes with IIS7.&amp;#160; With IIS7, IIS introduces a new native extensibility interface, CHttpModule, on top of which we ported all of the IIS features as a discrete, pluggable binary.&amp;#160; The IIS core Web server itself is a very thin event pipeline, and each of the IIS features can now be added and removed independently.&amp;#160; The extensibility point, &lt;a href="http://www.iis.net/articles/view.aspx/Extending-IIS7/Building-Native-Modules/Develop-a-Native-C-C---Module-for-IIS7"&gt;CHttpModule&lt;/a&gt;, is &lt;a href="http://mvolo.com/blogs/serverside/archive/2006/10/07/10-reasons-why-server-development-is-better-with-IIS7.aspx"&gt;much more powerful than ISAPI&lt;/a&gt;, and provides a fully asynchronous super-set support for extensions and filters.&amp;#160; Don't like how IIS does XYZ feature, rip it out and replace it with your own: you have all the APIs the IIS team has.&lt;/p&gt;  &lt;p&gt;Even more impressive, IIS7 introduces &lt;a href="http://www.iis.net/articles/view.aspx/Extending-IIS7/Developing-a-Module-using--NET/Developing-a-Module-using--NET?tabid=1"&gt;managed extensibility&lt;/a&gt; of the core Web server via the existing System.Web IHttpModule and IHttpHandler interfaces, enabling any .NET framework developer to extend IIS at the core and build a new, custom or replacement feature.&amp;#160; I showed this off in a recent blog post on how to build a &lt;a href="http://blogs.iis.net/bills/archive/2007/05/01/building-an-iis7-sql-logging-module-with-net.aspx"&gt;SQL Logging module&lt;/a&gt; that can add to or replace the built-in W3C logging using .NET in less than 50 lines of code.&amp;#160; &lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Advanced Diagnostics and Troubleshooting support&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Whether you're running IIS or Apache, troubleshooting problems can be a real bear.&amp;#160; Applications running in a high-performance, multi-threaded, console environment are very tough to debug, especially when in production use.&amp;#160; IIS7 innovates in several key ways to make the support for these situations far better than what you see with any other Web server.&lt;/p&gt;  &lt;p&gt;First, IIS supports a feature called &lt;a href="http://www.iis.net/articles/view.aspx/Managing-IIS7/Diagnostics-in-IIS7/Using-Failed-Request-Tracing/Troubleshooting-Failed-Requests-using-Tracing-in-I"&gt;'failed request tracing'&lt;/a&gt;, which is really very cool.&amp;#160; Simply give IIS a set of error conditions to watch out for, based on response code or timeout value, and IIS will trap this condition and log a detailed trace log of everything that happened during the request lifetime that led up to the error.&amp;#160; Seeing requests timeout on a periodic basis, but not sure why?&amp;#160; Simply tell IIS to look out for requests that take longer than &lt;em&gt;n &lt;/em&gt;seconds to complete, and IIS will show you ever step in the request lifetime, and including duration to complete each step.&amp;#160; And you'll see the last event to have fired before the timeout to occur.&amp;#160; Are you seeing the dreaded &amp;quot;Server 500 Error - Internal Server Error&amp;quot;?&amp;#160; Tell IIS to trap this error and then browse through each step along the request to see where things went south.&amp;#160; I know of nothing like this with Apache.&lt;/p&gt;  &lt;p&gt;IIS also supports real-time &lt;a href="http://www.iis.net/articles/view.aspx/Managing-IIS7/Diagnostics-in-IIS7/Inside-RSCA/Overview-of-Runtime-Status-and-Control-Data-and-Ob"&gt;request monitoring and runtime data&lt;/a&gt;.&amp;#160; Want to know which requests are in flight on the server, how long they have been running, which modules they are in, etc?&amp;#160; IIS can tell you from the cmd-line, administration tool, or even programmatically via .NET and WMI APIs.&amp;#160; It is very easy to now look inside IIS and see what's going on inside your Server.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Rich Administration APIs and Tools&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;This is an area where IIS has traditionally shined, and IIS7 &lt;a href="http://www.iis.net/articles/view.aspx/Explore-IIS7/Getting-Started/IIS7-Administration-Tools?tabid=1"&gt;takes the lead even further&lt;/a&gt;.&amp;#160; IIS7's new administration tool is very simple and easy to use, but extremely powerful.&amp;#160; It is now feature-focused: simply click on a Web server, site or application and see every feature available to manage.&amp;#160; On the right hand pane there is a set of simple administration tasks for each scope that makes it easy to create new sites and applications, modify logging settings, or see advanced settings.&amp;#160; The administration tool remotes over HTTP, making it possible to manage the server locally or over the internet.&amp;#160; And the tool fully supports the distributed configuration model, making it possible to add 'delegated' administrators for Web sites and applications and allowing them to use Web.config or the same Administration tool to configure their Web site.&amp;#160; The administration tool is also completely modular, and built on top of a new extensibility framework, making it &lt;a href="http://www.iis.net/articles/view.aspx/Extending-IIS7/Extending-IIS-Manager/How-to-Create-IIS-Manager-Pages?tabid=1"&gt;easy to add new features&lt;/a&gt; into the tool.&amp;#160; &lt;/p&gt;  &lt;p&gt;In addition to a rich administration tool, IIS also ships &lt;a href="http://www.iis.net/articles/view.aspx/Use-IIS7-Administration-Tools/Using-the-Command-Line/Getting-Started-with-AppCmd.exe?tabid=1"&gt;AppCmd.exe&lt;/a&gt;, a swiss-army knife for cmd-line administration.&amp;#160; With it, you can set any IIS setting, view real-time request and runtime information, and much more.&amp;#160; &lt;/p&gt;  &lt;p&gt;IIS7 also includes several programmatic interfaces which can be used to manage the server.&amp;#160; Sure, you can use PERL to hack away at the new text-based config file if you want, or you can use rich, object-oriented APIs in any .NET or script language if you prefer.&amp;#160; &lt;a href="http://www.iis.net/default.aspx?tabid=2&amp;amp;subtabid=25&amp;amp;i=952"&gt;Microsoft.Web.Administration&lt;/a&gt; is a powerful new .NET api for programmatically managing the Server.&amp;#160; IIS7 also includes a &lt;a href="http://www.iis.net/articles/view.aspx/Use-IIS7-Administration-Tools/Scripting-IIS7/Managing-Sites-with-IIS7-s-WMI-Provider?tabid=1"&gt;new WMI provider&lt;/a&gt; for scripting management using VBscript or JScript.&amp;#160; &lt;/p&gt;  &lt;p mce_keep="true"&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;/h3&gt;  &lt;p&gt;IIS7 is a major overhaul of the Web server.&amp;#160; It builds on the rock-solid security and reliability of IIS6, and promises some very powerful new extensibility and management capabilities that meet and exceed what Apache can do today.&amp;#160; It's already in Vista, so you can use it on the desktop today, and with Beta 3 it is available for free for production use through the &lt;a href="http://iis.net/goLive/"&gt;GoLive&lt;/a&gt; program.&amp;#160; &lt;/p&gt;  &lt;p&gt;I'm quite certain this won't end the debate of which is the better Web server, but I thought I'd add my two cents. ;)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Share this post:&lt;/strong&gt; &lt;a href="mailto:?body=Thought you might like this: http://blogs.iis.net/bills/archive/2007/05/07/iis-vs-apache.aspx&amp;amp;;subject=IIS vs. Apache"&gt;email it!&lt;/a&gt; | &lt;a href="http://del.icio.us/post?url=http://blogs.iis.net/bills/archive/2007/05/07/iis-vs-apache.aspx&amp;amp;;title=IIS vs. Apache"&gt;bookmark it!&lt;/a&gt; | &lt;a href="http://digg.com/submit?phase=2&amp;amp;url=blogs.iis.net/bills/archive/2007/05/05/iis-vs-apache.aspx&amp;amp;title=IISvsApache&amp;amp;bodytext=IISvsApache&amp;amp;topic=IISvsApache"&gt;digg it!&lt;/a&gt; | &lt;a href="http://reddit.com/submit?url=http://blogs.iis.net/bills/archive/2007/05/07/iis-vs-apache.aspx&amp;amp;title=IIS vs. Apache"&gt;reddit!&lt;/a&gt; | &lt;a href="http://www.dotnetkicks.com/submit/?url=http://blogs.iis.net/bills/archive/2007/05/07/iis-vs-apache.aspx&amp;amp;;title=IIS vs. Apache"&gt;kick it!&lt;/a&gt; | &lt;a href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;;mkt=en-us&amp;amp;;url=http://blogs.iis.net/bills/archive/2007/05/07/iis-vs-apache.aspx&amp;amp;;title=IISvsApache&amp;amp;;top=1"&gt;live it!&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=1696624" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/bills/archive/tags/IIS7/default.aspx">IIS7</category><category domain="http://blogs.iis.net/bills/archive/tags/Extensibility/default.aspx">Extensibility</category><category domain="http://blogs.iis.net/bills/archive/tags/Community/default.aspx">Community</category><category domain="http://blogs.iis.net/bills/archive/tags/IIS+News+Item/default.aspx">IIS News Item</category><category domain="http://blogs.iis.net/bills/archive/tags/Developers/default.aspx">Developers</category><category domain="http://blogs.iis.net/bills/archive/tags/Administrators/default.aspx">Administrators</category></item><item><title>MIX '07: IIS7 for Developers Demos and Powerpoint</title><link>http://blogs.iis.net/bills/archive/2007/05/02/iis7-for-developers-mix-powerpoint-and-demo-notes.aspx</link><pubDate>Wed, 02 May 2007 07:00:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:1690472</guid><dc:creator>bills</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/bills/rsscomments.aspx?PostID=1690472</wfw:commentRss><comments>http://blogs.iis.net/bills/archive/2007/05/02/iis7-for-developers-mix-powerpoint-and-demo-notes.aspx#comments</comments><description>&lt;P&gt;I got a lot of requests for the presentation and demo notes from my session at MIX, so here goes.&amp;nbsp; If you're interested in the slides,&amp;nbsp;You can download the &lt;A class="" href="http://wallpaper.iis7.org/mix-iis7.zip"&gt;PPT here.&lt;/A&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;If you want to try the SQL Logging Module, I've also attached my wwwroot directory in the state it was in at the end of the demo (working), which includes the sqlLogging_schema.xml file you'll need to copy to the \windows\system32\inetsrv\config\schema directory.&amp;nbsp; You'll also need to create your log table using the createDB.sql file.&amp;nbsp; For a complete step-by-step walkthrough, &lt;A href="http://blogs.iis.net/bills/archive/2007/05/01/building-an-iis7-sql-logging-module-with-net.aspx"&gt;see this post&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;All the credit for the SQL logging module demo goes to &lt;A href="http://blogs.msdn.com/carlosag/default.aspx"&gt;CarlosAg&lt;/A&gt;.&amp;nbsp; Without his work, you would have had to see my photo &lt;A href="http://blogs.iis.net/bills/archive/2007/01/28/dirlistmodule-available-for-download.aspx"&gt;DirListModule&lt;/A&gt; again.&amp;nbsp; :)&lt;/P&gt;
&lt;P&gt;If you're interested in the PHP demos, you should&amp;nbsp;check out &lt;A href="http://blogs.iis.net/bills/archive/2007/04/28/server-side-mash-ups-php-asp-net.aspx"&gt;this previous post&lt;/A&gt;, which includes videos (at the bottom) of the PHP related demos.&amp;nbsp; I'll write-up a separate post on step-by-step instructions soon.&lt;/P&gt;
&lt;P&gt;thanks, I hope you enjoyed the talk!&lt;/P&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=1690472" width="1" height="1"&gt;</description><enclosure url="http://blogs.iis.net/bills/attachment/1690472.ashx" length="187911" type="application/x-zip-compressed" /><category domain="http://blogs.iis.net/bills/archive/tags/IIS7/default.aspx">IIS7</category><category domain="http://blogs.iis.net/bills/archive/tags/PHP/default.aspx">PHP</category><category domain="http://blogs.iis.net/bills/archive/tags/Extensibility/default.aspx">Extensibility</category><category domain="http://blogs.iis.net/bills/archive/tags/Samples+_2600_amp_3B00_+Demos/default.aspx">Samples &amp;amp; Demos</category><category domain="http://blogs.iis.net/bills/archive/tags/IIS+News+Item/default.aspx">IIS News Item</category><category domain="http://blogs.iis.net/bills/archive/tags/Developers/default.aspx">Developers</category><category domain="http://blogs.iis.net/bills/archive/tags/mix07/default.aspx">mix07</category></item><item><title>Building an IIS7 SQL Logging Module with .NET</title><link>http://blogs.iis.net/bills/archive/2007/05/01/building-an-iis7-sql-logging-module-with-net.aspx</link><pubDate>Tue, 01 May 2007 20:59:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:1690491</guid><dc:creator>bills</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/bills/rsscomments.aspx?PostID=1690491</wfw:commentRss><comments>http://blogs.iis.net/bills/archive/2007/05/01/building-an-iis7-sql-logging-module-with-net.aspx#comments</comments><description>&lt;p&gt;All the credit for the SQL logging module demo goes to &lt;a href="http://blogs.msdn.com/carlosag/default.aspx"&gt;CarlosAg&lt;/a&gt;.&amp;nbsp; He built it for an internal Microsoft conference, and I stole it for my MIX talk.&amp;nbsp; It is a great demo because it shows off something you can only do with IIS7 and the &lt;a href="http://www.iis.net/articles/view.aspx/Managing-IIS7/Configuring-the-IIS7-Runtime/Configuring-Modules/ASP-NET-Integration-with-IIS7?tabid=1"&gt;integrated pipeline&lt;/a&gt;.&amp;nbsp; I love it!&lt;/p&gt; &lt;p&gt;You'll want to prepare for this demo by doing the following:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Download and install &lt;a href="http://msdn.microsoft.com/vstudio/express/downloads/"&gt;Visual Studio Web Developer Express&lt;/a&gt;  &lt;li&gt;Download and install &lt;a href="http://www.microsoft.com/sql/editions/express/default.mspx"&gt;SQL Server Express&lt;/a&gt; (as part of the previous install)  &lt;li&gt;Download and install the &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=C243A5AE-4BD1-4E3D-94B8-5A0F62BF7796&amp;amp;displaylang=en"&gt;SQL Server Management Studio Express&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Make sure you're running on Vista with IIS7 installed (including ASP.NET or at least .NET extensibility).&amp;nbsp; &lt;/p&gt; &lt;p&gt;To start with, let's build a simple module with hard coded connection string.&amp;nbsp; First, let's create the database.&amp;nbsp; Open SQL Server Management Studio, and run the following script as 'sa'.&amp;nbsp; (you'll want to enable the sa account first to make this work, and you may need to edit the physical path below to one that exists on your machine)&amp;nbsp;&lt;/p&gt; &lt;hr&gt;  &lt;p&gt;USE [master]&lt;br&gt;GO&lt;br&gt;/****** Object:&amp;nbsp; Database [techready]&amp;nbsp;&amp;nbsp;&amp;nbsp; Script Date: 02/03/2007 12:16:42 ******/&lt;br&gt;CREATE DATABASE [MIX] ON&amp;nbsp; PRIMARY &lt;br&gt;( NAME = N'mix', FileName='x:\mix.mdf' )&lt;br&gt;GO&lt;br&gt;USE [MIX]&lt;br&gt;GO&lt;br&gt;/****** Object:&amp;nbsp; Table [dbo].[Log]&amp;nbsp;&amp;nbsp;&amp;nbsp; Script Date: 02/03/2007 12:18:13 ******/&lt;br&gt;SET ANSI_NULLS ON&lt;br&gt;GO&lt;br&gt;SET QUOTED_IDENTIFIER ON&lt;br&gt;GO&lt;br&gt;SET ANSI_PADDING ON&lt;br&gt;GO&lt;br&gt;CREATE TABLE [dbo].[Log](&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Date] [datetime],&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Method] [varchar](50) NULL,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [IPAddress] [varchar](50) NULL,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Url] [varchar](50) NULL,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [UserName] [varchar](255) NULL,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [UserAgent] [varchar](255) NULL,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ResponseCode] [varchar](50) NULL,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [SiteName] [varchar](50) NULL,&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [ApplicationName] [varchar](50) NULL&lt;br&gt;) ON [PRIMARY]  &lt;p&gt;GO&lt;br&gt;SET ANSI_PADDING OFF  &lt;hr&gt;  &lt;p&gt;Once the database has been created, we can create a module to connect to it.&amp;nbsp; Create an App_Code directory in your Web site / application, and drop in your first sqlLoggingModule.cs code (you'll want to replace billsiis7demo with the name of your machine):&lt;/p&gt; &lt;hr&gt;  &lt;p&gt;using System;&lt;br&gt;using System.Data;&lt;br&gt;using System.Web;&lt;br&gt;using System.Web.Security;&lt;br&gt;using System.Data.SqlClient;&lt;br&gt;using System.Web.Hosting;  &lt;p&gt;public class SqlLoggingModule : IHttpModule&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public SqlLoggingModule()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Dispose()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public void Init(HttpApplication context)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; context.LogRequest += new EventHandler(context_LogRequest);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; void context_LogRequest(object sender, EventArgs e)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HttpApplication application = (HttpApplication)sender;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LogRequest(application.Context);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private void LogRequest(HttpContext httpContext)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string connectionString = "server=billsiis7demo\\sqlexpress;database=MIX;uid=sa;pwd=sa";  &lt;blockquote&gt; &lt;p&gt;//on Beta 3 and beyond&lt;br&gt;//httpContext.Response.DisableKernelCache(); &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; using (SqlConnection connection = new SqlConnection(connectionString)) {  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SqlCommand cmd = connection.CreateCommand();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.CommandText =&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "insert into Log (Date, Method, IPAddress, Url, UserName, UserAgent, ResponseCode, SiteName, ApplicationName) values" +&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "(@Date, @Method, @IPAddress, @Url, @UserName, @UserAgent, @ResponseCode, @SiteName, @ApplicationName)";  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.Parameters.AddWithValue("@Date", DateTime.Now);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.Parameters.AddWithValue("@Method", httpContext.Request.HttpMethod);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.Parameters.AddWithValue("@IPAddress", httpContext.Request.UserHostAddress);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.Parameters.AddWithValue("@Url", httpContext.Request.Url.ToString());&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.Parameters.AddWithValue("@UserName", httpContext.Request.ServerVariables["LOGON_USER"]);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.Parameters.AddWithValue("@UserAgent", httpContext.Request.UserAgent);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.Parameters.AddWithValue("@ResponseCode", httpContext.Response.StatusCode + "." + httpContext.Response.SubStatusCode);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.Parameters.AddWithValue("@SiteName", HostingEnvironment.SiteName);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.Parameters.AddWithValue("@ApplicationName", httpContext.Request.ApplicationPath);  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; connection.Open();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cmd.ExecuteNonQuery();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }  &lt;p&gt;}  &lt;hr&gt;  &lt;p&gt;Note: since this logging module runs in user mode, kernel cached responses will not be logged.&amp;nbsp; In Longhorn Server Beta 3 a new method DisableKernelCache() was added to allow modules to disable the kernel cache for these kind of scenarios.&amp;nbsp; I've added the code above, but commented it out.&amp;nbsp; Disabling the kernel cache may have a negative impact on performance.&amp;nbsp; You would test this scenario before ever putting it onto a real server, right? :)&lt;/p&gt; &lt;p&gt;Pretty simple, eh?&amp;nbsp; Before you can use it, you'll need to register it as a module with IIS. Go to the modules feature for this site / application, and click 'add managed module', or add the following configuration to your web.config file inside : &lt;/p&gt; &lt;hr&gt;  &lt;p&gt;&amp;lt;modules&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;add name="sqlLoggingModule" type="SqlLoggingModule" /&amp;gt;&lt;br&gt;&amp;lt;/modules&amp;gt;  &lt;hr&gt;  &lt;p&gt;Request a page from your site, and look in the table to see the request logged.&amp;nbsp; It should "just work" if all is well with the world.&lt;/p&gt; &lt;p&gt;Now let's add configuration extensibility.&amp;nbsp; To do this, you'll want to create a new sqlLogging_schema.xml file that looks like this and drop it in the \windows\system32\inetsrv\config\schema directory:&lt;/p&gt; &lt;hr&gt;  &lt;p&gt;&amp;lt;configSchema&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;sectionSchema name="system.webServer/sqlLogging"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;attribute name="connectionString" type="string" /&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/sectionSchema&amp;gt;&lt;br&gt;&amp;lt;/configSchema&amp;gt;  &lt;hr&gt;  &lt;p&gt;Once you've done that, you'll need to register it in \windows\system32\inetsrv\config\applicationHost.config file. Add the section here under sectionGroup name=system.webServer like so: &lt;/p&gt; &lt;hr&gt;  &lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;sectionGroup name="system.webServer"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;section name="sqlLogging" overrideModeDefault="Allow" /&amp;gt;  &lt;hr&gt;  &lt;p&gt;Now you'll want to make a few changes to your module. First, you need to remove that horrible hard coded connection string, and add it to your web.config. Simple edit web.config and add it like this inside , replacing billsiis7demo with your machine name: &lt;/p&gt; &lt;hr&gt; &amp;lt;sqlLogging connectionString="server=billsiis7demo\sqlexpress;database=MIX;uid=sa;pwd=sa" /&amp;gt;  &lt;hr&gt;  &lt;p&gt;Now it's time to fix your module. First, let's replace the hard coded connection string with a GetConnectionString(httpContext) method. It looks like this: &lt;/p&gt; &lt;hr&gt;  &lt;p&gt;private string GetConnectionString(HttpContext httpContext)&lt;br&gt;{&lt;br&gt;&amp;nbsp; ConfigurationSection section = WebConfigurationManager.GetSection("system.webServer/sqlLogging");&lt;br&gt;&amp;nbsp; return (string)section["connectionString"];&lt;br&gt;}  &lt;hr&gt;  &lt;p&gt;Don't forget to add using Microsoft.Web.Administration; in your .cs file (you may need to add reference to \windows\system32\inetsrv\Microsoft.Web.Administration.dll first). Now you can not only use Microsoft.Web.Administration to read/write to your new configuration section - just like GetConnectionString(httpContext) does above, but you can use appcmd.exe (our command-line tool) and VB/JScript using COM. Here are some examples: &lt;/p&gt; &lt;hr&gt;  &lt;p&gt;Using AppCmd:&lt;br&gt;==to get configuration:&lt;br&gt;C:\windows\system32\inetsrv\appcmd.exe list config "Default Web Site" /section:sqlLogging  &lt;p&gt;==to set configuration:&lt;br&gt;C:\windows\system32\inetsrv\appcmd.exe set config "Default Web Site" /section:sqlLoggingconnectionString:"server=billsiis7demo\sqlexpress;database=MIX;uid=sa;pwd=sa"  &lt;p&gt;==vbScript to get configuration:&lt;br&gt;Dim adminManager, section&lt;br&gt;Set adminManager = WScript.Createobject("Microsoft.ApplicationHost.AdminManager")&lt;br&gt;Set section = adminManager.GetAdminSection("system.webServer/sqlLogging", "MACHINE/WEBROOT/APPHOST/Default Web Site")&lt;br&gt;WScript.Echo(section.Properties.Item("connectionString").Value)&lt;pre&gt;&lt;br&gt;&lt;/pre&gt;
&lt;hr&gt;

&lt;p&gt;And there you have it! A sql logging module that was built using .NET with 66 lines of code and an IIS7 configuration section that is scriptable, programmatically accessible, and usable from the cmd-line. Hope this help!&lt;/p&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=1690491" width="1" height="1"&gt;</description><enclosure url="http://blogs.iis.net/bills/attachment/1690491.ashx" length="187911" type="application/x-zip-compressed" /><category domain="http://blogs.iis.net/bills/archive/tags/IIS7/default.aspx">IIS7</category><category domain="http://blogs.iis.net/bills/archive/tags/Extensibility/default.aspx">Extensibility</category><category domain="http://blogs.iis.net/bills/archive/tags/Samples+_2600_amp_3B00_+Demos/default.aspx">Samples &amp;amp; Demos</category><category domain="http://blogs.iis.net/bills/archive/tags/Developers/default.aspx">Developers</category><category domain="http://blogs.iis.net/bills/archive/tags/mix07/default.aspx">mix07</category></item><item><title>IIS7 at Microsoft Technology Summit</title><link>http://blogs.iis.net/bills/archive/2007/03/28/iis7-at-microsoft-technology-summit.aspx</link><pubDate>Wed, 28 Mar 2007 14:50:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:1641192</guid><dc:creator>bills</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/bills/rsscomments.aspx?PostID=1641192</wfw:commentRss><comments>http://blogs.iis.net/bills/archive/2007/03/28/iis7-at-microsoft-technology-summit.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://blogs.iis.net/carlosag/"&gt;Carlos&lt;/a&gt; and I spoke at the Microsoft Technology Summit yesterday, a conference dedicated to influential influencers who are experts in alternative platforms.&amp;nbsp; It was a really fun talk as we were able to show off how IIS7 provides a very extensive public extensibility model for adding, removing and replacing any IIS7 feature, on top of which the IIS team built the IIS product itself.&amp;nbsp; &lt;/p&gt;&lt;p&gt;I showed off the new IIS7 modular architecture, and the more than &lt;a href="http://www.iis.net/default.aspx?tabid=7&amp;amp;subtabid=74"&gt;40 components&lt;/a&gt; that can be added or removed independently. &amp;nbsp; Carlos showed off how to build a SQL logging module in 40 lines of code using &lt;a href="http://www.iis.net/default.aspx?tabid=2&amp;amp;subtabid=25&amp;amp;i=942"&gt;.NET extensibility&lt;/a&gt;, which was really impressive.&amp;nbsp; I showed off the traditional &lt;a href="http://blogs.iis.net/bills/archive/2007/01/28/dirlistmodule-available-for-download.aspx"&gt;DirListModule&lt;/a&gt; demo, and how easy it is to xcopy deploy a new managed module as part of your site that can replace the built-in IIS directory listing module. &amp;nbsp;&amp;nbsp;  &lt;/p&gt;&lt;p&gt;While we were on the topic of modularity, I announced the new &lt;a href="http://www.iis.net/default.aspx?tabid=1000051"&gt;FastCGI module&lt;/a&gt; for IIS, which we were excited to announce will now be included in Longhorn Server and Vista SP1.&amp;nbsp; I &lt;a href="http://blogs.iis.net/bills/archive/2006/10/31/PHP-on-IIS.aspx"&gt;demonstrated how using it can double performance&lt;/a&gt; of the QDig application and as part of that demo I also showed off the dynamic output cache can provide blazing fast kernel mode caching of PHP content.&amp;nbsp; I also demo'd the use of &lt;a href="http://www.iis.net/default.aspx?tabid=2&amp;amp;subtabid=25&amp;amp;i=1081&amp;amp;p=1"&gt;ASP.NET forms authentication&lt;/a&gt; for the PHP app, which unfortunately due to my configuration error, didn't work the first time (though I fixed it while Carlos went on with the next demo and showed them later that it did in fact work once I stopped fat-fingering config. :)).&amp;nbsp; &lt;/p&gt;&lt;p&gt;Carlos then went on to show how easy it is to &lt;a href="http://www.iis.net/default.aspx?tabid=2&amp;amp;subtabid=25&amp;amp;i=953"&gt;extend IIS7 configuration&lt;/a&gt;, including simple XML-based section extensibility and encryption support.&amp;nbsp; He was then able to use the built-in command line, scripting, and .NET APIs to read and write to his custom configuration section (in this case, a connection string for his SQL Logging module) which was really powerful.&lt;/p&gt;&lt;p&gt;Last, Carlos showed off the admin tool, and how powerful the UI extensibility story is for IIS.&amp;nbsp; This is an area I'm always completely blown away by, everytime I see Carlos demo it.&amp;nbsp; He showed off 4-5 modules he has built that demonstrate nativagation tree extensibility, action pane extensibility, feature extensibility with some really compelling features including the &lt;a href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1416"&gt;IIS Reports&lt;/a&gt; module, and the &lt;a href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1400"&gt;Most Recently Used&lt;/a&gt; module (which comes with source). &amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The response so far has been very positive.&amp;nbsp; &lt;a href="http://koreacrunch.com/archive/mts07-php-on-iis7"&gt;Channy Yun&lt;/a&gt; wrote up his thoughts on the PHP on IIS7 demo, including a youtube video of it in action. &amp;nbsp; &lt;a href="http://www.travisswicegood.com/index.php/2007/03/27/mts07_iis7"&gt;Travis Swicegood&lt;/a&gt; also appreciated the improved PHP support.&amp;nbsp; &lt;a href="http://galbraiths.org/blog/2007/03/27/mts07-bill-staples-and-carlos-aguilar-on-iis7/"&gt;Ben Galbraith&lt;/a&gt; wrote up an extensive write-up of the entire presentation and summarized with my favorite quote so far:&lt;/p&gt;&lt;p&gt;&lt;i&gt;I walked away fairly impressed with this one. Who doesn’t love Apache, but IIS7 seems to trump it pretty handily in both configurability, manageability, and extensibility&lt;/i&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;I couldn't have said it better myself. :)&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=1641192" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/bills/archive/tags/IIS7/default.aspx">IIS7</category><category domain="http://blogs.iis.net/bills/archive/tags/PHP/default.aspx">PHP</category><category domain="http://blogs.iis.net/bills/archive/tags/Extensibility/default.aspx">Extensibility</category><category domain="http://blogs.iis.net/bills/archive/tags/Samples+_2600_amp_3B00_+Demos/default.aspx">Samples &amp;amp; Demos</category><category domain="http://blogs.iis.net/bills/archive/tags/IIS+News+Item/default.aspx">IIS News Item</category><category domain="http://blogs.iis.net/bills/archive/tags/Developers/default.aspx">Developers</category></item><item><title>IIS7 Logging UI for Vista - Download Now</title><link>http://blogs.iis.net/bills/archive/2007/01/29/iis7-logging-ui-for-vista.aspx</link><pubDate>Tue, 30 Jan 2007 07:33:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:1554850</guid><dc:creator>bills</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/bills/rsscomments.aspx?PostID=1554850</wfw:commentRss><comments>http://blogs.iis.net/bills/archive/2007/01/29/iis7-logging-ui-for-vista.aspx#comments</comments><description>&lt;p&gt;It's &lt;a href="http://forums.iis.net/thread/1549555.aspx" target="_blank"&gt;no secret&lt;/a&gt; that there is no way to configure logging settings in IIS7/Vista.&amp;nbsp; A PM convinced me that configuring "logging" settings on a "Developer" machine simply isn't interesting - and "if they want to do it, they can always use config".&amp;nbsp; &lt;/p&gt;&lt;p&gt;But, I have two pieces of good news for those seeking the logging UI. &amp;nbsp;&lt;/p&gt;&lt;p&gt;First:&amp;nbsp; it will reappear in SP1.&amp;nbsp; It was already in "Longhorn Server", but for various reasons I won't elaborate on was removed from Vista.&amp;nbsp; Now that we've heard your feedback, it will magically reappear when you install Vista SP1, as soon as it is available.&amp;nbsp; As I said, it has always been in Longhorn Server, so look for it there too with the upcoming Beta 3 release.&amp;nbsp; (I'm VERY excited about this, and when it is released, I think you will be too, when you hear what we've been up to. :))&lt;/p&gt;&lt;p&gt;Second: for those who don't want to wait, Tobin just posted a module to the DownloadCENTER which provides basic UI for log settings.&amp;nbsp; Thanks to the completely extensible admin tool we've built with IIS7, he used the same APIs the Dev team did to build the original feature, and plugged in his own version.&amp;nbsp; It is pretty darn sweet.&amp;nbsp; Check it out here:&amp;nbsp; &lt;a href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1328" target="_blank"&gt;http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1328&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Thanks Tobin!&lt;/p&gt;&lt;p&gt;bill&amp;nbsp;&lt;/p&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=1554850" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/bills/archive/tags/IIS7/default.aspx">IIS7</category><category domain="http://blogs.iis.net/bills/archive/tags/Extensibility/default.aspx">Extensibility</category><category domain="http://blogs.iis.net/bills/archive/tags/Administration/default.aspx">Administration</category><category domain="http://blogs.iis.net/bills/archive/tags/Samples+_2600_amp_3B00_+Demos/default.aspx">Samples &amp;amp; Demos</category><category domain="http://blogs.iis.net/bills/archive/tags/IIS+News+Item/default.aspx">IIS News Item</category></item><item><title>Image Gallery - DirListModule Available for Download</title><link>http://blogs.iis.net/bills/archive/2007/01/28/dirlistmodule-available-for-download.aspx</link><pubDate>Mon, 29 Jan 2007 06:19:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:1552779</guid><dc:creator>bills</dc:creator><slash:comments>6</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/bills/rsscomments.aspx?PostID=1552779</wfw:commentRss><comments>http://blogs.iis.net/bills/archive/2007/01/28/dirlistmodule-available-for-download.aspx#comments</comments><description>&lt;P&gt;By popular demand, in conjunction with the &lt;A href="http://www.iis.net/downloads/default.aspx?tabid=3"&gt;DownloadCENTER&lt;/A&gt; release, I decided to release the famous DirListModule I originally created for IIS7 demos, several years ago.&amp;nbsp; In fact, I think it was the first real managed module that anyone on the team had built, and it has been used in hundreds of demos ever since, including&amp;nbsp;BobMu's keynote at PDC in 2005.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;What does it do?&amp;nbsp; It is pretty simple - it is a module/handler combo that can&amp;nbsp;turn any directory full of images on your site&amp;nbsp;into an image gallery, without any code.&amp;nbsp; You can easily customize the look and feel by tweaking the themes/ HTML and stylesheets.&amp;nbsp; It does all the dynamic thumbnails, image resizing, previewing, and caching for you.&amp;nbsp; It even has a few configuration tweaks you can play with.&lt;/P&gt;
&lt;P&gt;Get it here:&amp;nbsp; &lt;A title=http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1325 href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1325"&gt;http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1325&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;And leave me lots of good reviews and ratings. ;)&lt;/P&gt;
&lt;P&gt;PS, if you're looking for sample source, and how to do this, I recommend you check out &lt;A href="http://mvolo.com/blogs/serverside/archive/2007/01/21/Get-nice-looking-directory-listings-for-your-IIS-website-with-DirectoryListingModule.aspx"&gt;Mike's blog&lt;/A&gt;.&amp;nbsp; &lt;/P&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=1552779" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/bills/archive/tags/IIS7/default.aspx">IIS7</category><category domain="http://blogs.iis.net/bills/archive/tags/Extensibility/default.aspx">Extensibility</category><category domain="http://blogs.iis.net/bills/archive/tags/Samples+_2600_amp_3B00_+Demos/default.aspx">Samples &amp;amp; Demos</category></item><item><title>Real-time XHTML Validator for IIS7 </title><link>http://blogs.iis.net/bills/archive/2006/12/28/real-time-xhtml-validator-for-iis7.aspx</link><pubDate>Thu, 28 Dec 2006 16:54:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:1511254</guid><dc:creator>bills</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/bills/rsscomments.aspx?PostID=1511254</wfw:commentRss><comments>http://blogs.iis.net/bills/archive/2006/12/28/real-time-xhtml-validator-for-iis7.aspx#comments</comments><description>&lt;a href="http://www.thejoyofcode.com/" target="_blank"&gt;TheJoyOfCode.com&lt;/a&gt; guys have posted &lt;a href="http://www.thejoyofcode.com/XHTML_Validator_For_All.aspx" target="_blank"&gt;a great blog entry&lt;/a&gt; which demonstrates the power of &lt;a href="http://www.iis.net/default.aspx?tabid=2&amp;amp;subtabid=25&amp;amp;i=928" target="_blank"&gt;IIS7's integrated pipeline&lt;/a&gt;, and provides a useful new feature for Web developers on IIS7.  Last February, they wrote an ASP.NET module that could dynamically validate markup generated by your ASPX pages for valid XHTML.  It is a a really useful cool, and makes it really simple to test your pages for browser compatibility and compliance.  The only downside: since it is an ASP.NET module, on all versions of IIS prior to IIS7, it would only work for ASP.NET content.  &lt;div&gt;&lt;br class="khtml-block-placeholder"&gt;&lt;/div&gt;&lt;div&gt;IIS7 changes that, by allowing modules and handlers to be written using managed code for all types of content.  Using the same IHttpModule and IHttpHandler APIs, developers can now write &lt;a href="http://www.iis.net/default.aspx?tabid=2&amp;amp;subtabid=25&amp;amp;i=1081&amp;amp;p=1" target="_blank"&gt;managed code extensions&lt;/a&gt; to the Web server which can intercept and serve all types of requests.  And best of all, we built the extensibility model to be as compatible as possible with existing ASP.NET extensions.  With a few simple configuration changes, your ASP.NET modules and handlers can now work with all types of content.&lt;/div&gt;&lt;div&gt;&lt;br class="khtml-block-placeholder"&gt;&lt;/div&gt;&lt;div&gt;The JoyOfCode.com guys show off how in their blog post &lt;a href="http://www.thejoyofcode.com/XHTML_Validator_For_All.aspx" target="_blank"&gt;XHTML Validator for All&lt;/a&gt;.  Using the new IIS7 Admin tool, they wire up their module for a static HTML application.  Without a single code change, their XHTML Validator works perfectly with static HTML pages, classic ASP, or even PHP!  Check &lt;a href="http://www.thejoyofcode.com/XHTML_Validator_For_All.aspx" target="_blank"&gt;it out&lt;/a&gt;!&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family:verdana;font-size:12px;"&gt;&lt;br class="khtml-block-placeholder"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br class="khtml-block-placeholder"&gt;&lt;/div&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=1511254" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/bills/archive/tags/IIS7/default.aspx">IIS7</category><category domain="http://blogs.iis.net/bills/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://blogs.iis.net/bills/archive/tags/Extensibility/default.aspx">Extensibility</category><category domain="http://blogs.iis.net/bills/archive/tags/IIS+News+Item/default.aspx">IIS News Item</category></item><item><title>Where's the beef?</title><link>http://blogs.iis.net/bills/archive/2006/11/05/where-s-the-beef.aspx</link><pubDate>Sun, 05 Nov 2006 22:23:00 GMT</pubDate><guid isPermaLink="false">50bcf3b4-f6fe-4638-adff-0c150e922e99:1453665</guid><dc:creator>bills</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.iis.net/bills/rsscomments.aspx?PostID=1453665</wfw:commentRss><comments>http://blogs.iis.net/bills/archive/2006/11/05/where-s-the-beef.aspx#comments</comments><description>&lt;P&gt;When I was a kid, &lt;A class="" href="http://www.youtube.com/watch?v=Zbm0EuJQkQc" target=_blank mce_href="http://www.youtube.com/watch?v=Zbm0EuJQkQc"&gt;this was one of my favorite TV commercials&lt;/A&gt;.&amp;nbsp; It always cracked me up for some reason.&amp;nbsp; While trying to decide on an appropriate title for this blog, I remembered the commercial and was happy to find it preserved for future generations on &lt;A href="http://en.wikipedia.org/wiki/Where's_the_beef%3F" target=_blank mce_href="http://en.wikipedia.org/wiki/Where's_the_beef%3F"&gt;WikiPedia&lt;/A&gt; and &lt;A href="http://www.youtube.com/watch?v=Zbm0EuJQkQc" target=_blank mce_href="http://www.youtube.com/watch?v=Zbm0EuJQkQc"&gt;YouTube&lt;/A&gt;.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;
&lt;OBJECT height=350 width=425&gt;&lt;PARAM NAME="movie" VALUE="http://www.youtube.com/v/Ug75diEyiA0"&gt;&lt;PARAM NAME="wmode" VALUE="transparent"&gt;
&lt;embed src="http://www.youtube.com/v/Ug75diEyiA0" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"&gt;&lt;/embed&gt;&lt;/OBJECT&gt;
&lt;P&gt;I didn't think &lt;A href="http://www.youtube.com/watch?v=mN9oWRKrOsI" target=_blank mce_href="http://www.youtube.com/watch?v=mN9oWRKrOsI"&gt;Version 2&lt;/A&gt;&amp;nbsp;was&amp;nbsp;quite as funny, but still worth a watch.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Anyway, if you're looking for some "meaty" technical reading to start your week, I have a couple of double-pounders to serve up.&amp;nbsp; Want &lt;A href="http://en.wikipedia.org/wiki/Fry_sauce" target=_blank mce_href="http://en.wikipedia.org/wiki/Fry_sauce"&gt;fry sauce&lt;/A&gt; with that? &lt;/P&gt;
&lt;H4&gt;Mike Volodarsky's &lt;A href="http://www.mvolo.com/" target=_blank mce_href="http://www.mvolo.com/"&gt;Server-Side&lt;/A&gt;&lt;/H4&gt;
&lt;P&gt;Mike is an extremely&amp;nbsp;bright Program Manager on the IIS team.&amp;nbsp; Mike owns a bunch of the &lt;A href="http://www.iis.net/default.aspx?tabid=7&amp;amp;subtabid=71" target=_blank mce_href="http://www.iis.net/default.aspx?tabid=7&amp;amp;subtabid=71"&gt;Core Server&lt;/A&gt; architecture of IIS7, including the &lt;A href="http://www.iis.net/default.aspx?tabid=2&amp;amp;subtabid=25&amp;amp;i=928" target=_blank mce_href="http://www.iis.net/default.aspx?tabid=2&amp;amp;subtabid=25&amp;amp;i=928"&gt;integrated pipeline&lt;/A&gt; which enables both &lt;A href="http://www.iis.net/default.aspx?tabid=2&amp;amp;subtabid=25&amp;amp;i=938" target=_blank mce_href="http://www.iis.net/default.aspx?tabid=2&amp;amp;subtabid=25&amp;amp;i=938"&gt;C/C++&lt;/A&gt; as well as&amp;nbsp;&lt;A href="http://www.iis.net/default.aspx?tabid=2&amp;amp;subtabid=25&amp;amp;i=942" target=_blank mce_href="http://www.iis.net/default.aspx?tabid=2&amp;amp;subtabid=25&amp;amp;i=942"&gt;.NET extensibility&lt;/A&gt; of the core Web server.&amp;nbsp; As such, Mike is an expert on IIS core Web extensibility and is offering up some really nice technical posts on the topic, including:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://mvolo.com/2006/11/01/iis7-modules-vs-iis6-isapi-memory-management.aspx" target=_blank mce_href="http://mvolo.com/2006/11/01/iis7-modules-vs-iis6-isapi-memory-management.aspx"&gt;IIS7 modules vs. IIS6 ISAPI: Memory Management&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://mvolo.com/2006/10/22/why-write-native-code-extending-your-iis-7-server-with-net.aspx" target=_blank mce_href="http://mvolo.com/2006/10/22/why-write-native-code-extending-your-iis-7-server-with-net.aspx"&gt;Extending your IIS 7 server with .NET&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://mvolo.com/2006/10/12/iis7-modules-vs-iis6-isapi-reason-9-intuitive-object-model.aspx" target=_blank mce_href="http://mvolo.com/2006/10/12/iis7-modules-vs-iis6-isapi-reason-9-intuitive-object-model.aspx"&gt;IIS7 modules vs. IIS6 ISAPI (Reason #9): Intuitive object model&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://mvolo.com/2006/10/07/why-iis7-module-is-better-then-iis6-isapi---reason-10-c-classbased-encapsulated-model-vs-cstyle-static-functions.aspx" target=_blank mce_href="http://mvolo.com/2006/10/07/why-iis7-module-is-better-then-iis6-isapi---reason-10-c-classbased-encapsulated-model-vs-cstyle-static-functions.aspx"&gt;IIS7 modules vs. IIS6 ISAPI (Reason #10): C++ Class-based encapsulation model&lt;/A&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;If this was all Mike did for IIS, it would be impressive enough.&amp;nbsp; But on top of owning this area, Mike has&amp;nbsp;a couple of other cool projects:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Mike is the sole PM and Developer of the command-line tool, &lt;A href="http://www.iis.net/default.aspx?tabid=2&amp;amp;subtabid=25&amp;amp;i=954&amp;amp;p=1" target=_blank mce_href="http://www.iis.net/default.aspx?tabid=2&amp;amp;subtabid=25&amp;amp;i=954&amp;amp;p=1"&gt;AppCmd.exe&lt;/A&gt;.&amp;nbsp; Do a search for appcmd on iis.net or on the forums, and you'll see it popping up everywhere.&amp;nbsp; It is a very powerfull command line tool for managing IIS7.&lt;/LI&gt;
&lt;LI&gt;Mike has been Program Manager of the recent &lt;A href="http://www.iis.net/default.aspx?tabid=1000051" target=_blank mce_href="http://www.iis.net/default.aspx?tabid=1000051"&gt;FastCGI component&lt;/A&gt; for IIS, and even wrote the installer for the packages to aid in making the feature easy to get working.&amp;nbsp; &lt;/LI&gt;&lt;/UL&gt;
&lt;P mce_keep="true"&gt;So if you're looking for something meaty to dig into this week, check out Mike's &lt;A href="http://mvolo.com/" target=_blank mce_href="http://mvolo.com/"&gt;blog&lt;/A&gt;. &lt;/P&gt;&lt;img src="http://blogs.iis.net/aggbug.aspx?PostID=1453665" width="1" height="1"&gt;</description><category domain="http://blogs.iis.net/bills/archive/tags/IIS7/default.aspx">IIS7</category><category domain="http://blogs.iis.net/bills/archive/tags/Extensibility/default.aspx">Extensibility</category></item></channel></rss>