<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/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>Alik Levin's : Tools</title><link>http://blogs.msdn.com/alikl/archive/tags/Tools/default.aspx</link><description>Tags: Tools</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Free Web Performance Tools From Microsoft, Google, Yahoo, And IBM</title><link>http://blogs.msdn.com/alikl/archive/2009/06/11/free-web-performance-tools-from-microsoft-google-yahoo-and-ibm.aspx</link><pubDate>Thu, 11 Jun 2009 11:56:53 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9726219</guid><dc:creator>alikl</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/alikl/comments/9726219.aspx</comments><wfw:commentRss>http://blogs.msdn.com/alikl/commentrss.aspx?PostID=9726219</wfw:commentRss><wfw:comment>http://blogs.msdn.com/alikl/rsscomments.aspx?PostID=9726219</wfw:comment><description>&lt;table border="0" cellspacing="5" cellpadding="2" width="557"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="226"&gt;&amp;#160;&lt;a href="http://practicethis.com/" rel="external nofollow" target="_blank"&gt;&lt;img title="Alik Levin" border="0" alt="Alik Levin" src="http://blogs.microsoft.co.il/blogs/mcs/WindowsLiveWriter/d20b00ba5cce_FD44/image_5.png" width="50" height="50" /&gt;&lt;/a&gt;&amp;#160;&amp;#160;&amp;#160; This post is a quick overview of free performance tools available from Microsoft, Yahoo, Google, and IBM. It also contains a pointers to related articles that go deeper regarding the best practices and how the tools can help in identifying compliance to the best practices.&lt;/td&gt;        &lt;td valign="top" width="314"&gt;         &lt;p&gt;&lt;strong&gt;Quick Resource Box:&lt;/strong&gt;&lt;/p&gt;          &lt;ul&gt;           &lt;li&gt;Microsoft’s &lt;a href="http://www.fiddler2.com/fiddler2/"&gt;Fiddler&lt;/a&gt; (&lt;a href="http://www.fiddler2.com/redir/?id=HTTPPERF"&gt;Performance Tuning with Fiddler&lt;/a&gt;)&lt;/li&gt;            &lt;li&gt;Microsoft’s &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=119f3477-dced-41e3-a0e7-d8b5cae893a3&amp;amp;displaylang=en"&gt;VRTA&lt;/a&gt; (&lt;a href="http://msdn.microsoft.com/en-us/magazine/dd188562.aspx"&gt;12 Steps To Faster Web Pages With Visual Round Trip Analyzer&lt;/a&gt;)&lt;/li&gt;            &lt;li&gt;Yahoo’s &lt;a href="http://developer.yahoo.com/yslow/"&gt;YSlow&lt;/a&gt; (&lt;a href="http://developer.yahoo.com/performance/rules.html"&gt;rules for high performance web pages&lt;/a&gt;.)&lt;/li&gt;            &lt;li&gt;IBM’s &lt;a href="http://www.alphaworks.ibm.com/tech/pagedetailer/download"&gt;Page Detailer&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;Google’s &lt;a href="http://code.google.com/speed/page-speed/"&gt;Page Speed&lt;/a&gt; (&lt;a href="http://code.google.com/speed/page-speed/docs/rules_intro.html"&gt;Web Performance Best Practices&lt;/a&gt;)&lt;/li&gt;         &lt;/ul&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td colspan="2"&gt;         &lt;h3&gt;Microsoft’s Fiddler&lt;/h3&gt;          &lt;p&gt;&lt;a href="http://www.fiddler2.com/fiddler2/"&gt;Fiddler&lt;/a&gt; is a free web performance tool, it is not really a property of Microsoft rather a side project by &lt;a href="http://en.wikipedia.org/wiki/Fiddler_(software)"&gt;Eric Lawrence&lt;/a&gt;, a PM with Microsoft. I used Fiddler for both security testing and now for performance. I love it a lot. Must mention it requires Net Fx 2.0 as a prerequisite so it is limited to Windows OS. Recently Eric added support to Firefox – &lt;a href="http://www.fiddler2.com/fiddler2/addons/fiddlerhook/"&gt;Fiddler Hook For Firefox&lt;/a&gt;, so the tool is great for both IE and FF. My related posts:&lt;/p&gt;          &lt;ul&gt;           &lt;li&gt;&lt;a href="http://blogs.msdn.com/alikl/archive/2007/10/17/improve-web-application-performance-by-reducing-number-of-http-requests-fiddler-to-the-rescue.aspx"&gt;Improve Web Application Performance By Reducing Number Of Http Requests - Fiddler To The Rescue&lt;/a&gt;&lt;/li&gt;            &lt;li&gt;&lt;a href="http://blogs.msdn.com/alikl/archive/2008/05/02/asp-net-performance-sin-serving-images-dynamically-or-another-reason-to-love-fiddler.aspx"&gt;ASP.NET Performance Sin - Serving Images Dynamically (Or Another Reason To Love Fiddler)&lt;/a&gt;&lt;/li&gt;         &lt;/ul&gt;          &lt;h3&gt;Microsoft’s VRTA&lt;/h3&gt;          &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=119f3477-dced-41e3-a0e7-d8b5cae893a3&amp;amp;displaylang=en"&gt;VRTA&lt;/a&gt; is a free web performance tool and it stands for Visual Round Trip Analyzer created by Microsoft’s Jim Pierson and used internally for sometime. It was made available for public use during last PDC 2008. Jim has written very detailed article about the tool and how it solves performance problems - &lt;a href="http://msdn.microsoft.com/en-us/magazine/dd188562.aspx"&gt;12 Steps To Faster Web Pages With Visual Round Trip Analyzer&lt;/a&gt;. VRTA installs and uses under the hood free Microsoft Network Monitor (&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=983b941d-06cb-4658-b7f6-3088333d062f&amp;amp;displaylang=en"&gt;Netmon&lt;/a&gt;) to capture and analyze network captures.&lt;/p&gt;          &lt;h3&gt;Yahoo’s YSlow&lt;/h3&gt;          &lt;p&gt;YSlow is a free performance analysis tool created by &lt;a href="http://www.stevesouders.com/"&gt;Steve Souders&lt;/a&gt; when he was with Yahoo. Steve created another good tool called &lt;a href="http://stevesouders.com/cuzillion/"&gt;Cuzilion&lt;/a&gt;. YSlowl comes with extremely good set of performance guidance that can be found here - &lt;a href="http://developer.yahoo.com/performance/rules.html"&gt;rules for high performance web pages&lt;/a&gt;. YSlow requires Firebug as a prerequisite, meaning it is restricted to Firefox only.&lt;/p&gt;          &lt;h3&gt;IBM’s Page Detailer&lt;/h3&gt;          &lt;p&gt;&lt;a href="http://www.alphaworks.ibm.com/tech/pagedetailer/download"&gt;Page Detailer&lt;/a&gt; is a free web performance tool from IBM. I was not able to identify any good articles that cover it – if you share with me please, or better off publish one. It does not have any prerequisites, consider it as an advantage.&lt;/p&gt;          &lt;h3&gt;Google’s Page Speed&lt;/h3&gt;          &lt;p&gt;Recently I stumbled on &lt;a href="http://code.google.com/speed/page-speed/"&gt;Page Speed&lt;/a&gt; from Google. It reminds me a Yahoo’s YSlow lot&amp;#160; that makes me believe it comes from Steve Souders that works now for Google. It also requires Firebug as a prerequisite and works with FireFox only. It comes with nice guidance found here - &lt;a href="http://code.google.com/speed/page-speed/docs/rules_intro.html"&gt;Web Performance Best Practices&lt;/a&gt;. Must admit – I adore the concept of the tool although in most cases I cannot use it as I work for customers that IE is their target browser. Nevertheless the guidance is tool agnostic and I recommend bookmarking it for quick reference.&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9726219" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/alikl/archive/tags/Tools/default.aspx">Tools</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Performance/default.aspx">Performance</category></item><item><title>Security Code Review – String Search Patterns For Finding Input Validation Vulnerabilities</title><link>http://blogs.msdn.com/alikl/archive/2008/07/11/security-code-review-string-search-patterns-for-finding-input-validation-vulnerabilities.aspx</link><pubDate>Fri, 11 Jul 2008 14:24:53 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8721000</guid><dc:creator>alikl</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/alikl/comments/8721000.aspx</comments><wfw:commentRss>http://blogs.msdn.com/alikl/commentrss.aspx?PostID=8721000</wfw:commentRss><wfw:comment>http://blogs.msdn.com/alikl/rsscomments.aspx?PostID=8721000</wfw:comment><description>&lt;p&gt;Well defined set of search patterns helps significantly reduce time (cost) when performing security code inspections. This post focuses on input validation vulnerabilities commonly found in ASP.NET web applications.&lt;/p&gt;  &lt;h3&gt;SQL Injection and Cross Site Scripting (XSS) String search patterns&lt;/h3&gt;  &lt;p&gt;SQL Injections and XSS attacks are most common that exploit improper data access and lack of output encoding. Following are the how-to’s on finding these vulnerabilities:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/alikl/archive/2008/03/17/quickly-find-and-fix-cross-site-scripting-xss-vulnerabilities-in-your-asp-net-application.aspx" target="_blank"&gt;Quickly Find And Fix Cross Site Scripting (XSS) Vulnerabilities In Your ASP.NET Application.&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/alikl/archive/2007/03/31/security-code-inspection-eternal-search-for-sql-injection.aspx" target="_blank"&gt;Security Code Inspection - Eternal Search For SQL Injection&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;h3&gt;Input Validation vulnerabilities String Search Patterns&lt;/h3&gt;  &lt;p&gt;To search and find security vulnerabilities you start &lt;a href="http://msdn.microsoft.com/en-us/library/ms998375.aspx" target="_blank"&gt;asking questions&lt;/a&gt; or better yet create a list of the questions. Here is the example how - &lt;a href="http://blogs.msdn.com/ace_team/archive/2008/01/15/generate-your-own-security-code-review-checklist-document-using-outlook-2007.aspx"&gt;Generate Your Own Security Code Review Checklist Document Using Outlook 2007&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Use search utility similar to FindStr to perform your searches (look at &lt;a href="http://msdn.microsoft.com/en-us/library/aa302437.aspx#c21618429_004" target="_blank"&gt;Performing Text Searches&lt;/a&gt;). When Visual Studio is available then you can use it - &lt;a href="http://blogs.msdn.com/alikl/archive/2007/06/05/visual-studio-2005-as-general-code-search-tool.aspx" target="_blank"&gt;Visual Studio 2005 As General Code Search Tool&lt;/a&gt;. Any other search tool is just fine. Following are the most common questions and search patterns.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;h4&gt;Does the code rely on client-side validation?&lt;/h4&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If the code does not use Validators or Regex there is a potential vulnerability. Review each control how it is validated for type, length, range, string format. In the searches I assume there is no inline code and developers use code behind technique to separate markup from code.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;ASP.NET pages &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;findstr /S /I &amp;quot;.Validator&amp;quot; *.aspx&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;User Controls&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;findstr /S /I &amp;quot;.Validator&amp;quot; *.ascx&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Source code&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;findstr /S /I &amp;quot;Regex&amp;quot; *.cs&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;h4&gt;Is the code susceptible to canonicalization attacks?&lt;/h4&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Review that there is no external input involved in building paths and file names.&lt;/p&gt;  &lt;p&gt;findstr /S /I “File&amp;quot; *.cs&lt;/p&gt;  &lt;p&gt;findstr /S /I “Path&amp;quot; *.cs&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;h4&gt;Does the code validate data from all sources? &lt;/h4&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Using Cookies and QueryStrings poses a risk of the tampering threat (review &lt;a href="http://shapingsoftware.com/2008/03/30/stride-explained" target="_blank"&gt;STRIDE Explained&lt;/a&gt; to understand threats). If there is a use of Params property there is a chance for CSRF attack - &lt;a href="http://msdn.microsoft.com/en-us/testing/cc664492.aspx " target="_blank"&gt;Cross-Site Request Forgery Attack explained&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Cookies&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;findstr /S /I “Cookies&amp;quot; *.*&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Query Strings&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;findstr /S /I “QueryString&amp;quot; *.*&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Params&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;findstr /S /I “Params&amp;quot; *.*&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;h4&gt;Does the code use MapPath?&lt;/h4&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If there is a usage of MapPath review that it does not use external input parameters and it is restricted to access only application file space. Make sure its third parameter set to false.&lt;/p&gt;  &lt;p&gt;findstr /S /I “MapPath&amp;quot; *.*&lt;/p&gt;  &lt;h3&gt;How To Mitigate Input And Data Validation Vulnerabilities&lt;/h3&gt;  &lt;p&gt;Below are detailed step-by-step guidelines for writing code that is not vulnerable to SQL Injections and XSS attacks:&lt;/p&gt;  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998274.aspx" target="_blank"&gt;How To: Prevent Cross-Site Scripting in ASP.NET&lt;/a&gt; &lt;/li&gt;  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/bb355989.aspx" target="_blank"&gt;How To: Protect From Injection Attacks in ASP.NET&lt;/a&gt; &lt;/li&gt;  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998271.aspx" target="_blank"&gt;How To: Protect From SQL Injection in ASP.NET&lt;/a&gt; &lt;/li&gt;  &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998267.aspx" target="_blank"&gt;How To: Use Regular Expressions to Constrain Input in ASP.NET&lt;/a&gt; &lt;/li&gt;  &lt;li&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=EFB9C819-53FF-4F82-BFAF-E11625130C25&amp;amp;displaylang=en" target="_blank"&gt;Microsoft Anti-Cross Site Scripting Library V1.5&lt;/a&gt;&amp;#160; &lt;/li&gt;  &lt;h3&gt;Share Your Practices&lt;/h3&gt;  &lt;p&gt;If you’ve got more search patterns to suggest – please do so! Let’s make the World [Wide Web] a more secure place together.&lt;/p&gt;  &lt;h3&gt;My Related Posts&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/alikl/archive/2007/03/04/how-to-hack-wcf-new-technology-old-hacking-tricks.aspx"&gt;How To Hack WCF - New Technology, Old Hacking Tricks&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/alikl/archive/2008/05/25/wcf-security-input-data-validation-sample-visual-studio-project.aspx"&gt;WCF Security - Input/Data Validation Sample Visual Studio Project&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/alikl/archive/2008/05/25/wcf-security-input-data-validation-using-schemas.aspx"&gt;WCF Security - Input/Data Validation Using Schemas&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8721000" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/alikl/archive/tags/Input+Validation/default.aspx">Input Validation</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Test+Phase/default.aspx">Test Phase</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Tools/default.aspx">Tools</category></item><item><title>ASP.NET Performance Sin - Serving Images Dynamically (Or Another Reason To Love Fiddler)</title><link>http://blogs.msdn.com/alikl/archive/2008/05/02/asp-net-performance-sin-serving-images-dynamically-or-another-reason-to-love-fiddler.aspx</link><pubDate>Fri, 02 May 2008 16:12:19 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8450457</guid><dc:creator>alikl</dc:creator><slash:comments>7</slash:comments><comments>http://blogs.msdn.com/alikl/comments/8450457.aspx</comments><wfw:commentRss>http://blogs.msdn.com/alikl/commentrss.aspx?PostID=8450457</wfw:commentRss><wfw:comment>http://blogs.msdn.com/alikl/rsscomments.aspx?PostID=8450457</wfw:comment><description>&lt;p&gt;Serving images dynamically may cause performance hit. Dynamically served images require more HTTP requests which violates &lt;a href="http://stevesouders.com/bio.html" target="_blank"&gt;Steve Souders'&lt;/a&gt; performance rule #1 - &lt;a href="http://developer.yahoo.com/performance/rules.html#num_http"&gt;Make Fewer HTTP Requests&lt;/a&gt;. The latency is also caused by parallelism (or parallel downloading) limitations as described in detail here &lt;a href="http://yuiblog.com/blog/2007/04/11/performance-research-part-4/"&gt;Performance Research, Part 4: Maximizing Parallel Downloads in the Carpool Lane&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Static Images&lt;/h3&gt;  &lt;p&gt;Below are the series of images that served dynamically and static.&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="244" alt="image" src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/PerformanceSinServingImagesDynamically_BD45/image_11.png" width="157" border="0" /&gt; &lt;/p&gt;  &lt;p&gt;Static images displayed using GridView's ImageFiled column type. ImageField generates the following HTML mark-up:&lt;/p&gt;  &lt;div&gt;   &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;img&lt;/span&gt; &lt;span style="color: #ff0000"&gt;src&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;IMAGES/Birds/icon-penguin.gif&amp;quot;&lt;/span&gt; &lt;span style="color: #ff0000"&gt;style&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;border-width:0px;&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Browser interprets it as a static image and is ready to cache it for further reuse.&lt;/p&gt;

&lt;h3&gt;Serving Images Dynamically&lt;/h3&gt;

&lt;p&gt;Below is the sample code that implements dynamic image serving. I witness in the field different variation but the pattern (I'd call it anti-pattern) remains the same. ASP.NET and HTML mark-up that is usually part of repeater control looks similar to the following:&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;p&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;img&lt;/span&gt; &lt;span style="color: #ff0000"&gt;src&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=&amp;quot;ServeImage.ashx?FN = &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #0000ff"&gt;&amp;lt;%#DataBinder.GetPropertyValue(Container.DataItem, &amp;quot;&lt;/span&gt;&lt;span style="color: #ff0000"&gt;Image&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;quot;)%&amp;gt;&amp;quot;&lt;/span&gt; &lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color: #0000ff"&gt;&lt;/span&gt;&amp;#160;&lt;/p&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;ASHX file's code that actually serves the image looks similar to this:&lt;/p&gt;

&lt;div&gt;
  &lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: consolas, &amp;#39;Courier New&amp;#39;, courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;p&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; ProcessRequest(HttpContext context)
{
    &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; imageFileName = &lt;/p&gt;&lt;p&gt;           context.Request.MapPath(&lt;span style="color: #006080"&gt;@&amp;quot;IMAGES\&amp;quot; + context.Request.QueryString[&amp;quot;&lt;/span&gt;FN&lt;span style="color: #006080"&gt;&amp;quot;]);

    context.Response.ContentType = &amp;quot;&lt;/span&gt;image/jpeg&amp;quot;;
    context.Response.WriteFile(imageFileName);
    context.Response.Flush();
    context.Response.Close();

}&lt;/p&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;h3&gt;Network Analysis&lt;/h3&gt;

&lt;p&gt;Using one of my most favorite tools - &lt;a href="http://www.fiddler2.com/fiddler2/" target="_blank"&gt;Fiddler&lt;/a&gt; - it is easy to reveal browser's view on the traffic:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/PerformanceSinServingImagesDynamically_BD45/image_4.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="100" alt="image" src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/PerformanceSinServingImagesDynamically_BD45/image_thumb_1.png" width="539" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There is expiration attribute attached to static images while dynamically served images do not have such attribute. &lt;/p&gt;

&lt;p&gt;Subsequent call the the same page that gets the same images reveals the following:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/PerformanceSinServingImagesDynamically_BD45/image_8.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="149" alt="image" src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/PerformanceSinServingImagesDynamically_BD45/image_thumb_3.png" width="538" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All dynamically served images are not cached and utilize the network on each request. &lt;/p&gt;

&lt;p&gt;Further investigation shows, using &lt;a href="http://blogs.msdn.com/alikl/archive/2007/10/17/improve-web-application-performance-by-reducing-number-of-http-requests-fiddler-to-the-rescue.aspx" target="_blank"&gt;Fiddler's P and C fantastic feature&lt;/a&gt;, that overall network utilization caused by these dynamically served images is about 350 KB, which could be saved by caching the images.&lt;/p&gt;

&lt;h3&gt;Recommendations&lt;/h3&gt;

&lt;p&gt;Avoid serving images dynamically. Follow best practices outlined at &lt;a href="http://developer.yahoo.com/performance/" target="_blank"&gt;Exceptional Performance&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://developer.yahoo.com/performance/rules.html#num_http" target="_blank"&gt;Make Fewer HTTP Requests&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://developer.yahoo.com/performance/rules.html#dns_lookups" target="_blank"&gt;Reduce DNS Lookups&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://developer.yahoo.com/performance/rules.html#redirects" target="_blank"&gt;Avoid Redirects&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://developer.yahoo.com/performance/rules.html#cacheajax" target="_blank"&gt;Make Ajax Cacheable&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://developer.yahoo.com/performance/rules.html#postload" target="_blank"&gt;Post-load Components&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://developer.yahoo.com/performance/rules.html#preload" target="_blank"&gt;Preload Components&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://developer.yahoo.com/performance/rules.html#min_dom" target="_blank"&gt;Reduce the Number of DOM Elements&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://developer.yahoo.com/performance/rules.html#split" target="_blank"&gt;Split Components Across Domains&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://developer.yahoo.com/performance/rules.html#iframes" target="_blank"&gt;Minimize the Number of iframes&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://developer.yahoo.com/performance/rules.html#no404" target="_blank"&gt;No 404s&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;My relative posts&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://blogs.msdn.com/alikl/archive/2008/04/28/performance-sin-chatty-database-access-and-loops-plus-another-free-performance-tool.aspx"&gt;Performance Sin - Chatty Database Access And Loops (Plus Another Free Performance Tool)&lt;/a&gt; &lt;/li&gt;

  &lt;li&gt;&lt;a href="http://blogs.msdn.com/alikl/archive/2008/02/02/performance-sin-using-exceptions-to-control-flow.aspx"&gt;Performance Sin - Using Exceptions To Control Flow&lt;/a&gt;&amp;#160; &lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8450457" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/alikl/archive/tags/Test+Phase/default.aspx">Test Phase</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Tools/default.aspx">Tools</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Development+Phase/default.aspx">Development Phase</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Implementation/default.aspx">Implementation</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Planning+Phase/default.aspx">Planning Phase</category></item><item><title>Free Performance Tool - Analyze IIS Logs Like A Pro With Funnel Web Analyzer</title><link>http://blogs.msdn.com/alikl/archive/2008/04/21/free-performance-tool-analyze-iis-logs-like-a-pro-with-funnel-web-analyzer.aspx</link><pubDate>Mon, 21 Apr 2008 13:16:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8414362</guid><dc:creator>alikl</dc:creator><slash:comments>10</slash:comments><comments>http://blogs.msdn.com/alikl/comments/8414362.aspx</comments><wfw:commentRss>http://blogs.msdn.com/alikl/commentrss.aspx?PostID=8414362</wfw:commentRss><wfw:comment>http://blogs.msdn.com/alikl/rsscomments.aspx?PostID=8414362</wfw:comment><description>&lt;P&gt;These free performance tools will save you time and money identifying performance bottlenecks. Your customers will thank you for building fast and responsive applications.&lt;/P&gt;
&lt;H3&gt;Funnel Web Analyzer 5.0 for Windows&lt;/H3&gt;
&lt;P&gt;Download the tool &lt;A href="http://www.quest.com/funnel-web-analyzer/software-downloads.asp" target=_blank mce_href="http://www.quest.com/funnel-web-analyzer/software-downloads.asp"&gt;here.&lt;/A&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;Analyzer gives insight into everything from server load and customer usage to intranet analysis. It allows you to gain vital feedback on visitor behaviour and preferences, so you can more accurately customize your site to meet the needs of your clients&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;H3&gt;How- to use&lt;/H3&gt;
&lt;P&gt;After you download and install the tool &lt;!--more--&gt;- run it. Just drag and drop log files onto it and then click on View icon:&lt;/P&gt;
&lt;P&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=210 alt=image src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/FreeToolsFunnelsqlexpressprofiler_7ED0/image_3.png" width=466 border=0 mce_src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/FreeToolsFunnelsqlexpressprofiler_7ED0/image_3.png"&gt; &lt;/P&gt;
&lt;P&gt;You will be presented with nice array of summary and detailed reports:&lt;/P&gt;
&lt;P&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=158 alt=image src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/FreeToolsFunnelsqlexpressprofiler_7ED0/image_6.png" width=466 border=0 mce_src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/FreeToolsFunnelsqlexpressprofiler_7ED0/image_6.png"&gt; &lt;/P&gt;
&lt;H3&gt;Usage Scenarios&lt;/H3&gt;
&lt;P&gt;There are few scenarios I can see this tool would be very useful:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Developer analyzes the module she developed during development phase just before submitting for holistic performance testing. &lt;/LI&gt;
&lt;LI&gt;IT support personnel probes production applications to get a quick view on potential performance hotspots. &lt;/LI&gt;
&lt;LI&gt;Performance team analyzes the data after running load/stress tests. &lt;/LI&gt;&lt;/UL&gt;
&lt;H3&gt;My related posts&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/alikl/archive/2007/11/02/identify-asp-net-web-services-and-wcf-performance-issues-by-examining-iis-logs.aspx" mce_href="http://blogs.msdn.com/alikl/archive/2007/11/02/identify-asp-net-web-services-and-wcf-performance-issues-by-examining-iis-logs.aspx"&gt;Identify ASP.NET, Web Services, And WCF Performance Issues By Examining IIS Logs&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/alikl/archive/2008/01/21/performance-code-review-tool-practices-checker.aspx" mce_href="http://blogs.msdn.com/alikl/archive/2008/01/21/performance-code-review-tool-practices-checker.aspx"&gt;Performance Code Review Tool – Practices Checker&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/ace_team/archive/2008/03/11/improve-net-applications-performance-effectively-and-efficiently.aspx" target=_blank mce_href="http://blogs.msdn.com/ace_team/archive/2008/03/11/improve-net-applications-performance-effectively-and-efficiently.aspx"&gt;Improve .Net Applications Performance Effectively And Efficiently&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/alikl/archive/2007/03/28/performance-testing-for-the-masses.aspx" mce_href="http://blogs.msdn.com/alikl/archive/2007/03/28/performance-testing-for-the-masses.aspx"&gt;Performance Testing For The Masses&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/alikl/archive/2008/03/09/stress-test-asp-net-web-application-with-free-wcat-tool.aspx" mce_href="http://blogs.msdn.com/alikl/archive/2008/03/09/stress-test-asp-net-web-application-with-free-wcat-tool.aspx"&gt;Stress Test ASP.NET Web Application With Free WCAT Tool&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8414362" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/alikl/archive/tags/Test+Phase/default.aspx">Test Phase</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Tools/default.aspx">Tools</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Development+Phase/default.aspx">Development Phase</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Performance/default.aspx">Performance</category></item><item><title>Quickly Find And Fix Cross Site Scripting (XSS) Vulnerabilities In Your ASP.NET Application.</title><link>http://blogs.msdn.com/alikl/archive/2008/03/17/quickly-find-and-fix-cross-site-scripting-xss-vulnerabilities-in-your-asp-net-application.aspx</link><pubDate>Mon, 17 Mar 2008 15:56:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8289686</guid><dc:creator>alikl</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/alikl/comments/8289686.aspx</comments><wfw:commentRss>http://blogs.msdn.com/alikl/commentrss.aspx?PostID=8289686</wfw:commentRss><wfw:comment>http://blogs.msdn.com/alikl/rsscomments.aspx?PostID=8289686</wfw:comment><description>&lt;P&gt;Want to quickly check your ASP.NET Web application for &lt;A href="http://en.wikipedia.org/wiki/Cross-site_scripting" target=_blank mce_href="http://en.wikipedia.org/wiki/Cross-site_scripting"&gt;Cross Site Scripting (XSS) vulnerability&lt;/A&gt;?&lt;/P&gt;
&lt;P&gt;It is pretty easy with the knowledge and tools you already have. This post describes how to quickly find and fix most of XSS vulnerabilities in your code.&lt;/P&gt;
&lt;H3&gt;Why XSS vulnerabilities are possible&lt;/H3&gt;
&lt;P&gt;XSS vulnerabilities are possible when un-sanitized data printed out on the page. From what I witness when I do security code inspections most cases can be summarized to two most common:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Using &lt;SPAN style="COLOR: #2b91af"&gt;DataBinder&lt;/SPAN&gt;.Eval function: &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;SPAN style="BACKGROUND: #ffee62"&gt;&amp;lt;%&lt;/SPAN&gt;&lt;SPAN style="COLOR: blue"&gt;#&lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;DataBinder&lt;/SPAN&gt;.Eval(Container.DataItem, &lt;SPAN style="COLOR: #a31515"&gt;"TEXT"&lt;/SPAN&gt;) &lt;SPAN style="BACKGROUND: #ffee62"&gt;%&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;
&lt;LI&gt;Assigning to Text property of the control: &lt;/LI&gt;&lt;/UL&gt;&lt;PRE class=code&gt;Label1.Text = TextBox1.Text;&lt;/PRE&gt;&lt;PRE class=code&gt;&lt;UL&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;&lt;LI&gt;&lt;STRONG&gt;&lt;EM&gt;[Update 20.7.08] &lt;/EM&gt;&lt;/STRONG&gt;Assigning to Text property of the control: &lt;/LI&gt;&lt;/UL&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;SPAN style="BACKGROUND: #ffee62"&gt;&amp;lt;%&lt;/SPAN&gt;=myStringGoesHere...&lt;/P&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;
&lt;UL&gt;&lt;A href="http://11011.net/software/vspaste" mce_href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;&lt;/UL&gt;
&lt;H3&gt;How to quickly find XSS vulnerabilities&lt;/H3&gt;
&lt;P&gt;Above patterns are easily identifiable using any strings search utility. I use &lt;A href="http://blogs.msdn.com/alikl/archive/2007/06/05/visual-studio-2005-as-general-code-search-tool.aspx" mce_href="http://blogs.msdn.com/alikl/archive/2007/06/05/visual-studio-2005-as-general-code-search-tool.aspx"&gt;Visual Studio 2005 As General Code Search Tool&lt;/A&gt; to find such vulnerabilities. When Visual Studio is not an option, just use FindStr, here is an example - &lt;A href="http://blogs.msdn.com/alikl/archive/2007/03/20/code-inspection-first-look-for-what-to-look-for.aspx" mce_href="http://blogs.msdn.com/alikl/archive/2007/03/20/code-inspection-first-look-for-what-to-look-for.aspx"&gt;Code Inspection - First Look For What To Look For&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Run your search for ".Eval(" and then for ".Text =". You might want to modify slightly it as some folks omit space before "=" or other minor changes. &lt;/P&gt;
&lt;P&gt;Use searches similar to these:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;findstr /S /I ".Text =" *.cs &lt;/LI&gt;
&lt;LI&gt;findstr /S /I ".Eval(" *.aspx &lt;/LI&gt;
&lt;LI&gt;findstr /S /I ".Eval(" *.ascx&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;EM&gt;[Update 20.7.08]&lt;/EM&gt;&lt;/STRONG&gt;&amp;nbsp;findstr /S /I "&amp;lt;%=" *.aspx&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Ran your search yet? What do you see? Scared?&lt;/P&gt;
&lt;H3&gt;How to quickly fix XSS vulnerabilities&lt;/H3&gt;
&lt;P&gt;The fix is pretty simple - just apply Html Encoding to both cases. The best is using freely available &lt;A href="http://www.microsoft.com/info.aspx?na=47&amp;amp;p=1&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=9a2b9c92-7ad9-496c-9a89-af08de2e5982&amp;amp;u=details.aspx%3ffamilyid%3dEFB9C819-53FF-4F82-BFAF-E11625130C25%26displaylang%3den" target=_blank mce_href="http://www.microsoft.com/info.aspx?na=47&amp;amp;p=1&amp;amp;SrcDisplayLang=en&amp;amp;SrcCategoryId=&amp;amp;SrcFamilyId=9a2b9c92-7ad9-496c-9a89-af08de2e5982&amp;amp;u=details.aspx%3ffamilyid%3dEFB9C819-53FF-4F82-BFAF-E11625130C25%26displaylang%3den"&gt;Microsoft Anti-Cross Site Scripting Library V1.5&lt;/A&gt;. Note that ASP.NET’s Server.HtmlEncode is not the safest one as it only encodes &amp;lt;,&amp;gt;,",&amp;amp; characters which is not sufficient to protect against all possible attacks.&lt;/P&gt;
&lt;H3&gt;My related posts&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/alikl/archive/2008/01/24/security-code-review-use-visual-studio-bookmarks-to-capture-security-findings.aspx" mce_href="http://blogs.msdn.com/alikl/archive/2008/01/24/security-code-review-use-visual-studio-bookmarks-to-capture-security-findings.aspx"&gt;Security Code Review – Use Visual Studio Bookmarks To Capture Security Findings&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/alikl/archive/2007/03/31/security-code-inspection-eternal-search-for-sql-injection.aspx" mce_href="http://blogs.msdn.com/alikl/archive/2007/03/31/security-code-inspection-eternal-search-for-sql-injection.aspx"&gt;Security Code Inspection - Eternal Search For SQL Injection&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/alikl/archive/2007/11/21/asp-net-2-0-internet-security-reference-implementation-have-it-handy.aspx" mce_href="http://blogs.msdn.com/alikl/archive/2007/11/21/asp-net-2-0-internet-security-reference-implementation-have-it-handy.aspx"&gt;ASP.NET 2.0 Internet Security Reference Implementation - Have It Handy&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8289686" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/alikl/archive/tags/Input+Validation/default.aspx">Input Validation</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Test+Phase/default.aspx">Test Phase</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Tools/default.aspx">Tools</category></item><item><title>Performance Development Lifecycle (PDL) Session Materials</title><link>http://blogs.msdn.com/alikl/archive/2008/03/11/performance-development-lifecycle-pdl-session-materials.aspx</link><pubDate>Wed, 12 Mar 2008 00:16:20 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8160457</guid><dc:creator>alikl</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/alikl/comments/8160457.aspx</comments><wfw:commentRss>http://blogs.msdn.com/alikl/commentrss.aspx?PostID=8160457</wfw:commentRss><wfw:comment>http://blogs.msdn.com/alikl/rsscomments.aspx?PostID=8160457</wfw:comment><description>&lt;p&gt;Yesterday I gave a talk about the subject during &lt;a href="http://dada.no-ip.biz/microsoft/mailer/Performance/" target="_blank"&gt;Performance Open House&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/PerformanceDevelopmentLifecyclePDLMateri_14596/image_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="178" alt="image" src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/PerformanceDevelopmentLifecyclePDLMateri_14596/image_thumb.png" width="490" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;First off, thanks for attending my talk. The materials are published &lt;a href="http://blogs.msdn.com/ace_team/archive/2008/03/11/improve-net-applications-performance-effectively-and-efficiently.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Enjoy.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8160457" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/alikl/archive/tags/Tools/default.aspx">Tools</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Practices/default.aspx">Practices</category></item><item><title>Stress Test ASP.NET Web Application With Free WCAT Tool</title><link>http://blogs.msdn.com/alikl/archive/2008/03/09/stress-test-asp-net-web-application-with-free-wcat-tool.aspx</link><pubDate>Sun, 09 Mar 2008 10:59:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8116606</guid><dc:creator>alikl</dc:creator><slash:comments>12</slash:comments><comments>http://blogs.msdn.com/alikl/comments/8116606.aspx</comments><wfw:commentRss>http://blogs.msdn.com/alikl/commentrss.aspx?PostID=8116606</wfw:commentRss><wfw:comment>http://blogs.msdn.com/alikl/rsscomments.aspx?PostID=8116606</wfw:comment><description>&lt;P&gt;Building ASP.NET web applications? Plan to serve thousands of users? Would you like to see how your application would behave [misbehave] under stress?&lt;/P&gt;
&lt;P&gt;Use simple-to-use and freely available WCAT tool to generate the load and get detailed report for expected throughput (requests/sec) and other important performance-wise information.&lt;/P&gt;
&lt;H3&gt;Summary of steps&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Install WCAT&lt;/STRONG&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Create configuration files&lt;/STRONG&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Run the test&lt;/STRONG&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Examine results&lt;/STRONG&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Next section describes each step in details. &lt;STRONG&gt;Note&lt;/STRONG&gt;, this post is a how-to, a jump start - not the guidelines or best practices of how to use the tool.&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Install WCAT&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;Download and install &lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=56FC92EE-A71A-4C73-B628-ADE629C89499&amp;amp;displaylang=en" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=56FC92EE-A71A-4C73-B628-ADE629C89499&amp;amp;displaylang=en"&gt;Internet Information Services (IIS) 6.0 Resource Kit Tools&lt;/A&gt;. For the purpose of our exercise there is no need to install all the tools included with the resources kit, only WCAT.&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Create configuration files&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;There are three textual files one needs to create and configure (you can give any name and extension of your choice):&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;script.txt&lt;/STRONG&gt; - this file defines the requests, in other words what pages to request and how to request it. Following is an example of simple script.txt file: &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;NEW TRANSACTION &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; classId = 1 &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; NEW REQUEST HTTP &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Verb = "GET" &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; URL = "http://localhost/BankingShmanking/Default.aspx"&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;distribution.txt&lt;/STRONG&gt; - defines weights among different requests. For example, if I need to generate request to page1.aspx twice as to page2.aspx, I will define it in this file. In case of loading only one page, the file is meaningless. Following is an example of simple distribution.txt file (1 refers to classId in script.txt file, and 50 is that 50% of the load should got this file which is meaningless since there is only one page to request, thus it will get the whole 100% load): &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;1 50&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;config.txt &lt;/STRONG&gt;- determines the duration of the test, number of clients that will generate the requests against the web application. Following is the example of simple config.txt file: &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Warmuptime 5s &lt;BR&gt;Duration 30s &lt;BR&gt;CooldownTime 5s &lt;BR&gt;NumClientMachines 1 &lt;BR&gt;NumClientThreads 20&lt;/P&gt;
&lt;P&gt;Save the files in "C:\Program Files\IIS Resources\WCAT Controller" folder.&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Run the test&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;To run the stress test open command prompt by opening Run window(Windows + R) type cmd and hit Enter. Change current directory to "C:\Program Files\IIS Resources\WCAT Controller&amp;gt;" and run the following command to test the page hosted on the localhost:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;wcctl -c config.txt -d distribution.txt -s script.txt -a localhost&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;then open second command prompt, change current folder to "C:\Program Files\IIS Resources\WCAT Client" and run the following command to actually launch the virtual client's requests from local machine:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;wcclient.exe localhost&lt;/EM&gt;&lt;/P&gt;
&lt;H3&gt;&lt;STRONG&gt;Examine results&lt;/STRONG&gt;&lt;/H3&gt;
&lt;P&gt;The results are displayed interactively in the command line windows&lt;/P&gt;&lt;BR&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/StressASP.NETApplicationWithFreeWCATTool_7CE7/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/StressASP.NETApplicationWithFreeWCATTool_7CE7/image_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=383 alt=image src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/StressASP.NETApplicationWithFreeWCATTool_7CE7/image_thumb.png" width=638 border=0 mce_src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/StressASP.NETApplicationWithFreeWCATTool_7CE7/image_thumb.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;The tool also generates log file that includes logged metrics - look for it in "C:\Program Files\IIS Resources\WCAT Controller" folder.&lt;/P&gt;
&lt;P&gt;WCAT tool is actively developed by IIS team and recently they released new version of the tool - WCAT 6.3, download it from &lt;A href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1466" target=_blank mce_href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1466"&gt;here&lt;/A&gt;, free.&lt;/P&gt;
&lt;H3&gt;Related materials&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;This post was mainly based on this article - &lt;A href="http://learn.iis.net/page.aspx/154/iis-7-output-caching/" target=_blank mce_href="http://learn.iis.net/page.aspx/154/iis-7-output-caching/"&gt;IIS 7.0 Output Caching&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.iis.net/chrisad/archive/2006/07/19/WCAT_3A00_--Easy_2C00_-Magical_2C00_-Stress-Testing-for-IIS-Web-Applications.aspx" target=_blank mce_href="http://blogs.iis.net/chrisad/archive/2006/07/19/WCAT_3A00_--Easy_2C00_-Magical_2C00_-Stress-Testing-for-IIS-Web-Applications.aspx"&gt;WCAT: Easy, Magical, Stress Testing for IIS Web Applications&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1466" target=_blank mce_href="http://www.iis.net/downloads/default.aspx?tabid=34&amp;amp;g=6&amp;amp;i=1466"&gt;WCat 6.3 (x86)&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;H3&gt;My related posts&lt;/H3&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/alikl/archive/2007/03/28/performance-testing-for-the-masses.aspx" mce_href="http://blogs.msdn.com/alikl/archive/2007/03/28/performance-testing-for-the-masses.aspx"&gt;Performance Testing For The Masses&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/alikl/archive/2008/01/08/how-to-keep-asp-net-viewstate-on-the-server-revised.aspx" mce_href="http://blogs.msdn.com/alikl/archive/2008/01/08/how-to-keep-asp-net-viewstate-on-the-server-revised.aspx"&gt;How To Keep ASP.NET ViewState On The Server – Revised&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/alikl/archive/2007/11/02/identify-asp-net-web-services-and-wcf-performance-issues-by-examining-iis-logs.aspx" mce_href="http://blogs.msdn.com/alikl/archive/2007/11/02/identify-asp-net-web-services-and-wcf-performance-issues-by-examining-iis-logs.aspx"&gt;Identify ASP.NET, Web Services, And WCF Performance Issues By Examining IIS Logs&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/alikl/archive/2007/08/29/patterns-practices-performance-testing-guidance-for-web-applications-final-cut.aspx" mce_href="http://blogs.msdn.com/alikl/archive/2007/08/29/patterns-practices-performance-testing-guidance-for-web-applications-final-cut.aspx"&gt;patterns &amp;amp; practices Performance Testing Guidance for Web Applications - Final Cut&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/alikl/archive/2007/08/15/use-performance-counters-templates-to-streamline-performance-analysis.aspx" mce_href="http://blogs.msdn.com/alikl/archive/2007/08/15/use-performance-counters-templates-to-streamline-performance-analysis.aspx"&gt;Use Performance Counters Templates To Streamline Performance Analysis&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/alikl/archive/2007/06/20/performance-testing-objectives-document-template.aspx" mce_href="http://blogs.msdn.com/alikl/archive/2007/06/20/performance-testing-objectives-document-template.aspx"&gt;Performance Testing Objectives Document Template&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8116606" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/alikl/archive/tags/Test+Phase/default.aspx">Test Phase</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Tools/default.aspx">Tools</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Performance/default.aspx">Performance</category></item><item><title>Performance Sin - Using Exceptions To Control Flow</title><link>http://blogs.msdn.com/alikl/archive/2008/02/02/performance-sin-using-exceptions-to-control-flow.aspx</link><pubDate>Sat, 02 Feb 2008 16:19:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7390784</guid><dc:creator>alikl</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/alikl/comments/7390784.aspx</comments><wfw:commentRss>http://blogs.msdn.com/alikl/commentrss.aspx?PostID=7390784</wfw:commentRss><wfw:comment>http://blogs.msdn.com/alikl/rsscomments.aspx?PostID=7390784</wfw:comment><description>&lt;p&gt;Want to spot coding anti-patterns from performance perspective without actually looking in the code?&lt;/p&gt;  &lt;p&gt;One of the common performance coding anti-patterns I&amp;#8217;ve noticed lately is using Exception Handling to control program flow. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;The anti-patterns&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Most common anti-pattern is just using exception handling to control flow, in some cases it was even nested exception handling &amp;#8211; that means the exception is thrown anyway.&lt;/p&gt;  &lt;p&gt;In other cases there were empty &amp;#8220;catch&amp;#8221; exception statements. That means that precious cycles .Net consumes to handle the exception spent for nothing.&lt;/p&gt;  &lt;p&gt;The last case was where exception handling was done to catch simple types parsing. That was done on each request. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;How to identify Exception Handling anti-pattern&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;To identify exception handling anti-pattern set &amp;#8220;.NET CLR Exceptions/# of Excepts Thrown&amp;#8221; perf counter. If you see the graph constantly climbs on each request chance are Exception Handling is used to control the flow which is performance anti-pattern:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/PerformanceSinUsingExceptionsToControlFl_D5AC/clip_image002_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="126" alt="clip_image002" src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/PerformanceSinUsingExceptionsToControlFl_D5AC/clip_image002_thumb.jpg" width="221" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Look at the relevant source code to spot try/catch blocks. If the source code is not available use &lt;a href="http://www.aisto.com/roeder/dotnet/" target="_blank"&gt;Reflector&lt;/a&gt; to reverse engineer the compiled assemblies into C# sources &amp;#8211; I used it very successfully during my latest performance review.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Best practices&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Do not use exception handling to control the flow. Try to reduce catching exceptions to only most upper component/class. Catching exceptions is expensive from both CPU and memory perspective. &lt;/p&gt;  &lt;p&gt;Use TryParse method instead Parse method to avoid throwing exceptions .&lt;/p&gt;  &lt;p&gt;Use simple &amp;quot;if&amp;quot; statement to check for nulls.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Tools&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Use perfmon to spot the anti-pattern with Exception handling. Run perfmon in command line and add &amp;#8220;.NET CLR Exceptions/# of Excepts Thrown&amp;#8221; counter. Then run few scenarios to see the graph. &lt;/p&gt;  &lt;p&gt;Use Practice Checker for static code analysis. The tool scans the code and reveals excessive usage of exception handling.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;My related posts&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/alikl/archive/2008/01/21/performance-code-review-tool-practices-checker.aspx"&gt;Performance Code Review Tool &amp;#8211; Practices Checker&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7390784" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/alikl/archive/tags/Test+Phase/default.aspx">Test Phase</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Tools/default.aspx">Tools</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Development+Phase/default.aspx">Development Phase</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Practices/default.aspx">Practices</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Exception+Handling/default.aspx">Exception Handling</category></item><item><title>Security Code Review – Use Visual Studio Bookmarks To Capture Security Findings</title><link>http://blogs.msdn.com/alikl/archive/2008/01/24/security-code-review-use-visual-studio-bookmarks-to-capture-security-findings.aspx</link><pubDate>Thu, 24 Jan 2008 16:38:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7222033</guid><dc:creator>alikl</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/alikl/comments/7222033.aspx</comments><wfw:commentRss>http://blogs.msdn.com/alikl/commentrss.aspx?PostID=7222033</wfw:commentRss><wfw:comment>http://blogs.msdn.com/alikl/rsscomments.aspx?PostID=7222033</wfw:comment><description>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;How to streamline the process of capturing security flaws during security code review? How to save time and avoid switching between the tools? How to stay focused?&lt;/p&gt;  &lt;p&gt;In this post I will show my simple technique to capture security flaws using Bookmarks in Visual Studio.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Create bookmark folders. &lt;/b&gt;Hit Ctrl + K and then Ctrl + W to bring Bookmarks window up. Create 10 folders according to &lt;a href="http://blogs.msdn.com/jmeier/pages/security-frame.aspx" target="_blank"&gt;security frame&lt;/a&gt; categories:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/SecurityCodeReviewUseVisualStudioBookmar_10D47/clip_image002_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="263" alt="clip_image002" src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/SecurityCodeReviewUseVisualStudioBookmar_10D47/clip_image002_thumb.jpg" width="230" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Focus on one category. &lt;/b&gt;Grab security &lt;a href="http://blogs.msdn.com/ace_team/archive/2008/01/15/generate-your-own-security-code-review-checklist-document-using-outlook-2007.aspx" target="_blank"&gt;checklist document&lt;/a&gt; you created using Guidance Explorer. Choose one category from the security frame, Authentication for example, and inspect the code manually. Do not pay attention to anything else on your way but Authentication issues. One category a time.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Bookmark security bugs. &lt;/b&gt;Once you find security bug hit Ctrl + K and then Ctrl +K again. You just created the bookmark. Drag it into the appropriate folder in Bookmarks window. Move on. When you finish the inspection using your checklist you should have something like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/SecurityCodeReviewUseVisualStudioBookmar_10D47/clip_image001_2.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="308" alt="clip_image001" src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/SecurityCodeReviewUseVisualStudioBookmar_10D47/clip_image001_thumb.png" width="392" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Copy to the report in one run.&lt;/b&gt; Just run through the bookmarks and paste the findings to your final report. One run. Mechanical work. Done. Peace of mind.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;My related posts&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/alikl/archive/2007/06/05/visual-studio-2005-as-general-code-search-tool.aspx"&gt;Visual Studio 2005 As General Code Search Tool&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/alikl/archive/2007/03/31/security-code-inspection-eternal-search-for-sql-injection.aspx"&gt;Security Code Inspection - Eternal Search For SQL Injection&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/alikl/archive/2007/03/26/security-net-code-inspection-using-outlook-2007.aspx"&gt;Security .Net Code Inspection Using Outlook 2007&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/alikl/archive/2007/03/20/code-inspection-first-look-for-what-to-look-for.aspx"&gt;Code Inspection - First Look For What To Look For&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/alikl/archive/2007/11/21/asp-net-2-0-internet-security-reference-implementation-have-it-handy.aspx"&gt;ASP.NET 2.0 Internet Security Reference Implementation - Have It Handy&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7222033" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/alikl/archive/tags/Test+Phase/default.aspx">Test Phase</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Tools/default.aspx">Tools</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Code+Inspection/default.aspx">Code Inspection</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Practices/default.aspx">Practices</category></item><item><title>Performance Code Review Tool – Practices Checker</title><link>http://blogs.msdn.com/alikl/archive/2008/01/21/performance-code-review-tool-practices-checker.aspx</link><pubDate>Tue, 22 Jan 2008 00:37:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7188855</guid><dc:creator>alikl</dc:creator><slash:comments>8</slash:comments><comments>http://blogs.msdn.com/alikl/comments/7188855.aspx</comments><wfw:commentRss>http://blogs.msdn.com/alikl/commentrss.aspx?PostID=7188855</wfw:commentRss><wfw:comment>http://blogs.msdn.com/alikl/rsscomments.aspx?PostID=7188855</wfw:comment><description>&lt;p&gt;Care about performance? Do you write your code with performance in mind? Want little help to spot performance bottlenecks automatically?&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Practices Checker&lt;/strong&gt; to the rescue. &lt;/p&gt;  &lt;p&gt;The goal of the tool is&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;#8220;Help you perform a manual code inspection by analyzing your application for potential coding and configuration settings that do not adhere to the patterns &amp;amp; practices ASP.NET Performance Checklist.&amp;#8221;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The tool is available as free download &lt;a href="http://www.codeplex.com/PracticesChecker" target="_blank"&gt;here&lt;/a&gt;. Download, install, point to your web application solution folder and hit &amp;#8220;Analyze&amp;#8221; button. You will get the report for potential performance issues and recommendations on how to fix. I am sure you will be surprised by few findings.&lt;/p&gt;  &lt;p&gt;Performance rules:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.codeplex.com/PracticesChecker/Wiki/View.aspx?title=Rules%20List&amp;amp;referringTitle=Home" target="_blank"&gt;Rules List&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codeplex.com/PracticesChecker/Wiki/View.aspx?title=Rules%20Checked%20by%20Practices%20Checker&amp;amp;referringTitle=Home" target="_blank"&gt;Rules Checked by Practices Checker&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.codeplex.com/PracticesChecker/Wiki/View.aspx?title=Rules%20Not%20Checked%20by%20Practices%20Checker&amp;amp;referringTitle=Home" target="_blank"&gt;Rules Not Checked by Practices Checker&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;Case Study&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;I used Practices Checker with one of my recent engagements . The tool spotted in no time web pages where there were 30 loops, enormous amount of serialization issues, and few more.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;My related posts&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/alikl/archive/2007/08/16/improve-asp-net-performance-by-disabling-viewstate-and-setting-session-as-readonly.aspx"&gt;Improve ASP.NET Performance By Disabling ViewState And Setting Session As ReadOnly&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/alikl/archive/2007/07/06/typed-dataset-potential-performance-and-security-risk.aspx"&gt;Typed DataSet - Potential Performance And Security Risk&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/alikl/archive/2007/03/27/performance-gain-security-risk.aspx"&gt;Performance Gain - Security Risk&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/alikl/archive/2007/03/28/performance-testing-for-the-masses.aspx"&gt;Performance Testing For The Masses&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7188855" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/alikl/archive/tags/Test+Phase/default.aspx">Test Phase</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Tools/default.aspx">Tools</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Development+Phase/default.aspx">Development Phase</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Performance/default.aspx">Performance</category></item><item><title>Profiling JavaScript With Ajax View Tool: Spot Poor Performance Client Script In No Time</title><link>http://blogs.msdn.com/alikl/archive/2008/01/17/profiling-javascript-with-ajax-view-tool-spot-poor-performance-client-script-in-no-time.aspx</link><pubDate>Thu, 17 Jan 2008 07:19:09 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7139313</guid><dc:creator>alikl</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/alikl/comments/7139313.aspx</comments><wfw:commentRss>http://blogs.msdn.com/alikl/commentrss.aspx?PostID=7139313</wfw:commentRss><wfw:comment>http://blogs.msdn.com/alikl/rsscomments.aspx?PostID=7139313</wfw:comment><description>&lt;p&gt;Ever wondered why your application unreasonably slow? You have it all - most powerful hardware, your database is tuned, SQL queries are optimized, network is barely utilized, and .Net code is super efficient. So why on earth response time is so slow?&lt;/p&gt;  &lt;p&gt;The answer might lie in recently developing area &amp;#8211; client script. I&amp;#8217;ve witnessed few over-AJAX&amp;#8217;ed applications with poor performance and far from the best user experience. Quite the contrary what AJAX and other client script flavors are for&amp;#8230;&lt;/p&gt;  &lt;p&gt;In this post I will show how &lt;a href="http://research.microsoft.com/projects/ajaxview/"&gt;Ajax View&lt;/a&gt; &amp;#8211; JavaScript profiler project from Microsoft Research &amp;#8211; helped me to spot client side script bottlenecks in no time and make the customer happy.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;Ajax View &amp;#8211; the tool.&lt;/strong&gt; Ajax View is available for download &lt;a href="http://research.microsoft.com/research/downloads/details/e82e1a27-e500-4e91-85fd-75886242acfc/details.aspx" target="_blank"&gt;here&lt;/a&gt;. The tool's goal: &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;quot;The goal of the Ajax View project is to improve developer's visibility into and control over their web applications' behaviors on end-user's desktops.&amp;quot;&lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Profiling process.&lt;/b&gt; The creators of the tool, &lt;a href="http://research.microsoft.com/~emrek/"&gt;Emre Kıcıman&lt;/a&gt; and &lt;a href="http://research.microsoft.com/~livshits/"&gt;Ben Livshits&lt;/a&gt;, provided simple and very useful &lt;a href="http://research.microsoft.com/projects/ajaxview/AjaxViewUsage-1.htm" target="_blank"&gt;walk through&lt;/a&gt; on how to install and use the tool. &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Recommendations to improve client side script.&lt;/b&gt; &lt;a href="http://insidehttp.blogspot.com/" target="_blank"&gt;Eric Lawrence&lt;/a&gt;, &lt;a href="http://www.fiddler2.com" target="_blank"&gt;Fiddler tool&lt;/a&gt; creator, kindly pointed me to useful recommendations how to make JavaScript run faster:       &lt;ul&gt;       &lt;li&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/IETechCol/dnwebgen/IE_Fiddler2.asp" target="_blank"&gt;Fiddler PowerToy - Part 2: HTTP Performance&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://stevesouders.com/hpws/"&gt;Steve Souders' Rules for High Performance Websites&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms533021.aspx" target="_blank"&gt;High Performance DHTML&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms533020.aspx" target="_blank"&gt;High Performance HTML&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://blogs.msdn.com/ie/archive/2006/08/28/728654.aspx" target="_blank"&gt;IE + JavaScript Performance Recommendations - Part 1&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://blogs.msdn.com/ie/archive/2006/11/16/ie-javascript-performance-recommendations-part-2-javascript-code-inefficiencies.aspx" target="_blank"&gt;IE+JavaScript Performance Recommendations Part 2: JavaScript Code Inefficiencies&lt;/a&gt; &lt;/li&gt;        &lt;li&gt;&lt;a href="http://blogs.msdn.com/ie/archive/2007/01/04/ie-jscript-performance-recommendations-part-3-javascript-code-inefficiencies.aspx" target="_blank"&gt;IE+JScript Performance Recommendations Part 3: JavaScript Code Inefficiencies&lt;/a&gt; &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;strong&gt;Customer's story.&lt;/strong&gt; During recent application performance review we identified in no time the following problems using Ajax View: &lt;/li&gt; &lt;/ul&gt;  &lt;table cellspacing="3" cellpadding="3" width="400" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="192"&gt;&lt;strong&gt;Issue&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="197"&gt;&lt;strong&gt;Recommendation&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="192"&gt;1200 lines of inline JavaScript &lt;/td&gt;        &lt;td valign="top" width="197"&gt;&lt;a href="http://developer.yahoo.com/performance/rules.html#external" target="_blank"&gt;Make JavaScript and CSS External&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="192"&gt;Using XmlHttp object with its async property set to true while performing time consuming call to the server&lt;/td&gt;        &lt;td valign="top" width="197"&gt;Do not &lt;a href="http://asp.net/AJAX/AjaxControlToolkit/Samples/Default.aspx" target="_blank"&gt;re-invent the wheel&lt;/a&gt;, use ready to-go, proven AJAX Libraries like &lt;a href="http://asp.net/ajax/" target="_blank"&gt;ASP.NET AJAX&lt;/a&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="192"&gt;Manipulating large XML islands inefficiently&lt;/td&gt;        &lt;td valign="top" width="200"&gt;Do not use large XML documents - neither client side nor server side. Use lazy approach of downloading the data on demand.&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;b&gt;My related posts&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/alikl/archive/2007/11/02/identify-asp-net-web-services-and-wcf-performance-issues-by-examining-iis-logs.aspx"&gt;Identify ASP.NET, Web Services, And WCF Performance Issues By Examining IIS Logs&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/alikl/archive/2007/10/17/improve-web-application-performance-by-reducing-number-of-http-requests-fiddler-to-the-rescue.aspx"&gt;Improve Web Application Performance By Reducing Number Of Http Requests - Fiddler To The Rescue&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/alikl/archive/2007/03/28/performance-testing-for-the-masses.aspx"&gt;Performance Testing For The Masses&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7139313" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/alikl/archive/tags/Test+Phase/default.aspx">Test Phase</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Tools/default.aspx">Tools</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.msdn.com/alikl/archive/tags/AJAX/default.aspx">AJAX</category></item><item><title>Create Your Own Guidance Explorer Items Inside Outlook 2007</title><link>http://blogs.msdn.com/alikl/archive/2008/01/10/create-your-own-guidance-explorer-items-inside-outlook-2007.aspx</link><pubDate>Thu, 10 Jan 2008 07:52:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7049633</guid><dc:creator>alikl</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/alikl/comments/7049633.aspx</comments><wfw:commentRss>http://blogs.msdn.com/alikl/commentrss.aspx?PostID=7049633</wfw:commentRss><wfw:comment>http://blogs.msdn.com/alikl/rsscomments.aspx?PostID=7049633</wfw:comment><description>&lt;p&gt;Want to create your own nuggets of wisdom? Want it to look and feel like patterns&amp;amp;practices nuggets of wisdom look and feel? Want to reuse it, mix and match with existing ones? It is easy and fast with Outlook 2007.&lt;/p&gt;  &lt;p&gt;I will show how I extend my knowledge base with a snap using Outlook 2007&amp;#8217;s Quick Parts feature and predefined item templates that come with &lt;a href="http://www.codeplex.com/guidanceExplorer" target="_blank"&gt;patterns&amp;amp;practices Guidance Explorer [GE]&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I must thank &lt;a href="http://blogs.microsoft.co.il/blogs/dorr/archive/2007/12/30/quick-tip-templates-for-e-mail-messages.aspx" target="_blank"&gt;Dor Rotman&lt;/a&gt; who pointed me to Quick Parts feature.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Summary of steps&lt;/b&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Step #1 &amp;#8211; Create Quick Parts templates&lt;/b&gt; &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Step #2 &amp;#8211; Compose new items based on the templates&lt;/b&gt; &lt;/li&gt;    &lt;li&gt;&lt;b&gt;Step #3 &amp;#8211; Test your work&lt;/b&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Following section describes each step in details&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Step #1 &amp;#8211; Create Quick Parts templates.&lt;/b&gt; Start GE &amp;#8211; refer to &lt;a href="http://blogs.msdn.com/alikl/archive/2008/01/03/consume-patterns-practices-guidance-explorer-via-rss-using-outlook-2007.aspx"&gt;Consume patterns&amp;amp;practices Guidance Explorer Via RSS Using Outlook 2007&lt;/a&gt; for details. Right click on &amp;#8220;My Library&amp;#8221; node in the treevew on the left and choose &amp;#8220;Question and Answer&amp;#8221; template: &lt;a href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/CreateYourOwnGuidanceExplorerItemsInside_C12/clip_image002%5B4%5D.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="298" alt="clip_image002[4]" src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/CreateYourOwnGuidanceExplorerItemsInside_C12/clip_image002%5B4%5D_thumb.jpg" width="354" border="0" /&gt;&lt;/a&gt;       &lt;p&gt;Highlight entire text in the editor and copy it into clipboard [ctrl + C]. Switch to Outlook 2007. Click on any folder in the treeview. Press Ctrl + Shift + S to bring up new &amp;#8220;Post in This Folder&amp;#8221; and paste the text in the clipboard. Add attributes part to the end &amp;#8211; you can copy and paste it from existing GE items&lt;/p&gt;      &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/CreateYourOwnGuidanceExplorerItemsInside_C12/clip_image002%5B8%5D.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="449" alt="clip_image002[8]" src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/CreateYourOwnGuidanceExplorerItemsInside_C12/clip_image002%5B8%5D_thumb.jpg" width="323" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;      &lt;p&gt;While in the post, highlight the entire text [Ctrl + A] and click on Insert tab, then click on &amp;#8220;Quick Parts&amp;#8221; ribbon to expand it. Click &amp;#8220;Save Selection to Quick Part Gallery&amp;#8221; found in the bottom. Give it a name &amp;#8220;Question &amp;amp; Answer&amp;#8221;, create new category &amp;#8220;GE&amp;#8221; and hit OK to save it as a Quick Part template:&lt;/p&gt;      &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/CreateYourOwnGuidanceExplorerItemsInside_C12/clip_image006_2.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="194" alt="clip_image006" src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/CreateYourOwnGuidanceExplorerItemsInside_C12/clip_image006_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;      &lt;p&gt;Close the post &amp;#8211; do not save it.&lt;/p&gt;      &lt;p&gt;Create few other templates following the procedure.&lt;/p&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Step #2 &amp;#8211; Compose new items based on the templates. &lt;/b&gt;Switch to Outlook 2007. Click on &amp;#8220;Guidance Explorer Library&amp;#8221; folder found in Favorites Folder [I assume you followed instructions in &lt;a href="http://blogs.msdn.com/alikl/archive/2008/01/03/consume-patterns-practices-guidance-explorer-via-rss-using-outlook-2007.aspx"&gt;Consume patterns&amp;amp;practices Guidance Explorer Via RSS Using Outlook 2007&lt;/a&gt;]. Press Ctrl + Shift + S to bring new &amp;#8220;Post in This Folder&amp;#8221;. In the Subject line type &amp;#8220;How To Call Police&amp;#8221;. Click on Insert tab and then click on &amp;#8220;Quick Parts&amp;#8221; ribbon to expand it. Locate &amp;#8220;Question &amp;amp; Answer&amp;#8221; quick part you just created in Step #1 and click it. The content of the part fills in into the body of the post. Modify it to your needs, make sure to update the category found under Attributes:       &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/CreateYourOwnGuidanceExplorerItemsInside_C12/clip_image002%5B10%5D.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="483" alt="clip_image002[10]" src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/CreateYourOwnGuidanceExplorerItemsInside_C12/clip_image002%5B10%5D_thumb.jpg" width="252" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;      &lt;p&gt;Press Ctrl + Enter to post it to the folder.&lt;/p&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;Step #3 &amp;#8211; Test your work.&lt;/b&gt; Click on &amp;#8220;Security&amp;#8221; folder found in Favorite Folders, you should see the newly created item there:       &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/CreateYourOwnGuidanceExplorerItemsInside_C12/clip_image002%5B12%5D.jpg"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="169" alt="clip_image002[12]" src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/CreateYourOwnGuidanceExplorerItemsInside_C12/clip_image002%5B12%5D_thumb.jpg" width="425" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;You&amp;#8217;ve just created new how-to item that is part of your own GE library managed inside Outlook 2007&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7049633" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/alikl/archive/tags/Tools/default.aspx">Tools</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Practices/default.aspx">Practices</category></item><item><title>Consume patterns&amp;practices Guidance Explorer Via RSS Using Outlook 2007</title><link>http://blogs.msdn.com/alikl/archive/2008/01/03/consume-patterns-practices-guidance-explorer-via-rss-using-outlook-2007.aspx</link><pubDate>Fri, 04 Jan 2008 00:43:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:6972310</guid><dc:creator>alikl</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/alikl/comments/6972310.aspx</comments><wfw:commentRss>http://blogs.msdn.com/alikl/commentrss.aspx?PostID=6972310</wfw:commentRss><wfw:comment>http://blogs.msdn.com/alikl/rsscomments.aspx?PostID=6972310</wfw:comment><description>&lt;P&gt;patterns&amp;amp;practices recently released new version of &lt;A href="http://www.codeplex.com/guidanceExplorer/Release/ProjectReleases.aspx?ReleaseId=7150" target=_blank mce_href="http://www.codeplex.com/guidanceExplorer/Release/ProjectReleases.aspx?ReleaseId=7150"&gt;Guidance Explorer&lt;/A&gt; [GE]. One of the most important addition was enabling RSS on the online GE store. What does that mean? It means you can consume distilled security, performance, and Visual Studio wisdom in any RSS reader of your choice. It means you can leverage familiar environment to consume close to 4000 technical gold nuggets.&lt;/P&gt;
&lt;P&gt;This post describes how to set up RSS feed inside Outlook 2007 to read GE’s content.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;Summary of steps&lt;/B&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;B&gt;Step 1 – Download latest GE bits&lt;/B&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;Step 2 – Create designated offline PST file&lt;/B&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;Step 3 – Subscribe to GE’s RSS feed in Outlook 2007&lt;/B&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;Step 4 – Test drive GE’s content using Outlook 2007&lt;/B&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Next section describes each step in detail&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;B&gt;Step 1 – Download latest GE bits. &lt;/B&gt;Navigate to &lt;A href="http://www.codeplex.com/guidanceExplorer/Release/ProjectReleases.aspx?ReleaseId=7150" target=_blank mce_href="http://www.codeplex.com/guidanceExplorer/Release/ProjectReleases.aspx?ReleaseId=7150"&gt;GE’s releases page&lt;/A&gt; and review latest release notes. Also review &lt;A href="http://www.codeplex.com/guidanceExplorer/Wiki/View.aspx?title=FAQ%20-%20Release%2020071220" target=_blank mce_href="http://www.codeplex.com/guidanceExplorer/Wiki/View.aspx?title=FAQ%20-%20Release%2020071220"&gt;GE’s FAQ’s&lt;/A&gt;. Download latest release – it appears in upper right corner of the page. Extract downloaded zip file and navigate to bin folder. Double click GuidanceExplorer.exe file. GE appears on your screen. &lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;Step 2 – Create designated offline PST file. &lt;/B&gt;Switch to Outlook 2007. Open “Data File Management…” found in “File” menu. Click “Add…” in “Data Files” tab to create new PST file. Name it GE [or whatever you like]. Saving GE’s items in dedicated offline PST file will keep your Outlook’s online store from overflowing and it is easier to back up too. &lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;Step 3 – Subscribe to GE’s RSS feed in Outlook 2007.&lt;/B&gt; Switch to GE. Right click on “patterns &amp;amp; practices Library” node in GE and choose subscribe to RSS feed: &lt;BR&gt;&lt;A href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/patternspracticesGuidanceExplorerExposes_7A24/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/patternspracticesGuidanceExplorerExposes_7A24/image_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=138 alt=image src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/patternspracticesGuidanceExplorerExposes_7A24/image_thumb.png" width=280 border=0 mce_src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/patternspracticesGuidanceExplorerExposes_7A24/image_thumb.png"&gt;&lt;/A&gt; &lt;BR&gt;Internet Explorer will open and will try to display the feed. Do not get scared by the message telling you that IE cannot show the feed as follows: &lt;BR&gt;&lt;A href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/patternspracticesGuidanceExplorerExposes_7A24/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/patternspracticesGuidanceExplorerExposes_7A24/image_4.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=106 alt=image src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/patternspracticesGuidanceExplorerExposes_7A24/image_thumb_1.png" width=319 border=0 mce_src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/patternspracticesGuidanceExplorerExposes_7A24/image_thumb_1.png"&gt;&lt;/A&gt; &lt;BR&gt;Just grab the URL from the address bar – highlight it and copy it to clipboard [ctrl+C]. Switch to&lt;B&gt; &lt;/B&gt;Outlook 2007. Right click “RSS Subscriptions” node and choose “Add a New RSS Feed” as depicted below: &lt;BR&gt;&lt;A href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/patternspracticesGuidanceExplorerExposes_7A24/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/patternspracticesGuidanceExplorerExposes_7A24/image_6.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=313 alt=image src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/patternspracticesGuidanceExplorerExposes_7A24/image_thumb_2.png" width=289 border=0 mce_src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/patternspracticesGuidanceExplorerExposes_7A24/image_thumb_2.png"&gt;&lt;/A&gt; &lt;BR&gt;Paste [ctrl+V] the URL from the clip board into the dialog and hit OK. Hit “Advanced…” button in the next dialog box and configure the feed to sore the items inside the newly created PST file: &lt;BR&gt;&lt;A href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/patternspracticesGuidanceExplorerExposes_7A24/image_10.png" mce_href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/patternspracticesGuidanceExplorerExposes_7A24/image_10.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=243 alt=image src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/patternspracticesGuidanceExplorerExposes_7A24/image_thumb_4.png" width=284 border=0 mce_src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/patternspracticesGuidanceExplorerExposes_7A24/image_thumb_4.png"&gt;&lt;/A&gt; &lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;B&gt;Step 4 – Test drive GE’s content using Outlook 2007. &lt;/B&gt;After Outlook 2007 finishes downloading the items you can test drive familiar functionality such as instant searching or forwarding the items as an emails. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Heaven.&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;My related posts&lt;/B&gt;&lt;/P&gt;
&lt;P&gt;&lt;B&gt;&lt;/B&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/alikl/archive/2007/05/13/how-to-use-outlook-2007-rss-to-effectively-aggregate-and-distill-information.aspx" mce_href="http://blogs.msdn.com/alikl/archive/2007/05/13/how-to-use-outlook-2007-rss-to-effectively-aggregate-and-distill-information.aspx"&gt;How to Use Outlook 2007 RSS To Effectively Aggregate And Distill Information&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/alikl/archive/2007/05/21/generate-documents-out-of-mail-items-directly-from-outlook-2007.aspx" mce_href="http://blogs.msdn.com/alikl/archive/2007/05/21/generate-documents-out-of-mail-items-directly-from-outlook-2007.aspx"&gt;Generate Documents Out Of Mail Items Directly From Outlook 2007&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/alikl/archive/2007/03/26/security-net-code-inspection-using-outlook-2007.aspx" mce_href="http://blogs.msdn.com/alikl/archive/2007/03/26/security-net-code-inspection-using-outlook-2007.aspx"&gt;Security .Net Code Inspection Using Outlook 2007&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/alikl/archive/2007/05/15/back-up-back-up-back-up.aspx" mce_href="http://blogs.msdn.com/alikl/archive/2007/05/15/back-up-back-up-back-up.aspx"&gt;Back Up, Back Up, Back Up&lt;/A&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/alikl/archive/2007/04/12/my-pipeline-is-my-inbox.aspx" mce_href="http://blogs.msdn.com/alikl/archive/2007/04/12/my-pipeline-is-my-inbox.aspx"&gt;My Pipeline Is My Inbox&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;B&gt;Related materials&lt;/B&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;A href="http://blogs.msdn.com/jmeier/archive/tags/Guidance+Explorer/default.aspx" target=_blank mce_href="http://blogs.msdn.com/jmeier/archive/tags/Guidance+Explorer/default.aspx"&gt;JD Meier on Guidance Explorer&lt;/A&gt; &lt;/LI&gt;&lt;/UL&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=6972310" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/alikl/archive/tags/Tools/default.aspx">Tools</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Practices/default.aspx">Practices</category></item><item><title>Identify ASP.NET, Web Services, And WCF Performance Issues By Examining IIS Logs</title><link>http://blogs.msdn.com/alikl/archive/2007/11/02/identify-asp-net-web-services-and-wcf-performance-issues-by-examining-iis-logs.aspx</link><pubDate>Sat, 03 Nov 2007 00:49:33 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5845602</guid><dc:creator>alikl</dc:creator><slash:comments>10</slash:comments><comments>http://blogs.msdn.com/alikl/comments/5845602.aspx</comments><wfw:commentRss>http://blogs.msdn.com/alikl/commentrss.aspx?PostID=5845602</wfw:commentRss><wfw:comment>http://blogs.msdn.com/alikl/rsscomments.aspx?PostID=5845602</wfw:comment><description>&lt;p&gt;Simple examination of IIS logs can reveal potential performance issues related to ASP.NET web applications, ASP.NET web services, and IIS hosted WCF services. Fast, easy, cheap.&lt;/p&gt; &lt;p&gt;These are the simple steps I take:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Time-Taken &amp;amp; W3C Logs: Turn it on...&lt;/strong&gt;  &lt;li&gt;&lt;strong&gt;Collect the data in the IIS logs&lt;/strong&gt;  &lt;li&gt;&lt;strong&gt;Open IIS logs in MS Excel 2007&lt;/strong&gt;  &lt;li&gt;&lt;strong&gt;Analyze the logged data using Excel 2007 Data Filtering and Pivot Tables&lt;/strong&gt; &lt;li&gt;&lt;strong&gt;Pitfalls&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The following are the detailed explanation for each step&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;&lt;a href="http://blogs.iis.net/chrisad/archive/2006/08/22/1377993.aspx" target="_blank"&gt;Time-Taken &amp;amp; W3C Logs: Turn it on...&lt;/a&gt;&amp;nbsp;by &lt;a href="http://blogs.iis.net/members/chrisad.aspx"&gt;Chris Adams&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt; &lt;blockquote&gt; &lt;p&gt;The most valuable friend to an IT Professional or Developer who uses IIS is a little-bitty check-mark field that is not enabled by default...  &lt;p&gt;1).&amp;nbsp; Open IIS Manager (Start – Run&amp;nbsp;– Inetmgr)  &lt;p&gt;2).&amp;nbsp; Right-click on the Web Sites tab (IIS 6 only — IIS 5 customers right-click on Server)  &lt;p&gt;3).&amp;nbsp; Choose Properties  &lt;p&gt;4).&amp;nbsp; On the General tab, select the Properties for Logging  &lt;p&gt;5).&amp;nbsp; On the advanced tab, scroll down and check “Time-Taken”  &lt;p&gt;6).&amp;nbsp; Click Ok, Ok&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/Ide.NETWebServicesAndWCFPerformanceEarly_8C9F/image.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="306" alt="image" src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/Ide.NETWebServicesAndWCFPerformanceEarly_8C9F/image_thumb.png" width="327" border="0"&gt;&lt;/a&gt;&amp;nbsp;  &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Collect the data in the IIS logs.&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The most easiest way would be collecting the data in QA environment. When a new app version is deployed to QA environment the application is used constantly and there is no special logistics needed to conduct the test. QA team runs its scenarios and IIS logs the data. &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Open IIS logs in MS Excel 2007. &lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;At the end of the QA test collect the log files and copy them to your place of choice - I copy it locally to my laptop. The log files are usually located in C:\Windows\System32\LogFiles\W3SVC1. The location, of course, is customizable though IIS MMC:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/Ide.NETWebServicesAndWCFPerformanceEarly_8C9F/image_1.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="319" alt="image" src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/Ide.NETWebServicesAndWCFPerformanceEarly_8C9F/image_thumb_1.png" width="337" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Start Excel 2007, hit ctrl+O [for Open] to open the log file. Chose "Delimited" for file type in the "Text Import Wizard" and hit Next button:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/Ide.NETWebServicesAndWCFPerformanceEarly_8C9F/image_2.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="136" alt="image" src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/Ide.NETWebServicesAndWCFPerformanceEarly_8C9F/image_thumb_2.png" width="263" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;Tick "Space" on for "Delimiters" in the next step of the wizard and hit Next button:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/Ide.NETWebServicesAndWCFPerformanceEarly_8C9F/image_5.png" atomicselection="true"&gt;&lt;img height="175" alt="image" src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/Ide.NETWebServicesAndWCFPerformanceEarly_8C9F/image_thumb_5.png" width="319" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;After the log file is opened in Excel it should look something&amp;nbsp;like this:&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/Ide.NETWebServicesAndWCFPerformanceEarly_8C9F/image_6.png" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="230" alt="image" src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/Ide.NETWebServicesAndWCFPerformanceEarly_8C9F/image_thumb_6.png" width="370" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Analyze the logged data using Excel 2007 Data Filtering and Pivot Tables&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Following are the&amp;nbsp;properties that deserve most attention&amp;nbsp;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;sc-bytes&lt;/strong&gt; - The number of bytes that the server sent.&lt;br&gt;&lt;strong&gt;cs-bytes &lt;/strong&gt;- The number of bytes that the server received.&lt;br&gt;&lt;strong&gt;time-taken &lt;/strong&gt;- The length of time that the action took, in milliseconds. &lt;p&gt;Use Excel's Data Sort functionality immediately spot the trouble makers: &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/Ide.NETWebServicesAndWCFPerformanceEarly_8C9F/image_7.png" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" alt="image" src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/Ide.NETWebServicesAndWCFPerformanceEarly_8C9F/image_thumb_7.png" border="0"&gt;&lt;/a&gt;  &lt;p&gt;Check the corresponding &lt;strong&gt;cs-uri-stem &lt;/strong&gt;property values that contains the URL (usually ASPX, ASMX, or SVC file). In the above sample first row shows acceptable network utilization - client sent about 3Kb and server sent back about 2 Kb. But it took quite a lot to process it - almost 2 minutes.&amp;nbsp;Seems like IIS consumes time (for example, authentication can take quite a lot of time in case where communication to DC is not the best) or ASP.NET code is written inefficiently (for example dynamically built server controls, nested loops and recursion, or inefficient DB access). Second to fourth rows show that the server returns about 9 Mb of data - it naturally takes quite a lot of time to process it - about 35 seconds. &lt;p&gt;Excel 2007 has even cooler functionality - pivot tables. Insert pivot table into the spread sheet: &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/Ide.NETWebServicesAndWCFPerformanceEarly_8C9F/image_8.png" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" alt="image" src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/Ide.NETWebServicesAndWCFPerformanceEarly_8C9F/image_thumb_8.png" border="0"&gt;&lt;/a&gt;  &lt;p&gt;Drag &lt;strong&gt;cs-uri-stem&lt;/strong&gt; to "Row Labels" area and time-taken to "Values" area twice. Configure to show average and count for time-taken property: &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/Ide.NETWebServicesAndWCFPerformanceEarly_8C9F/image_9.png" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="215" alt="image" src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/Ide.NETWebServicesAndWCFPerformanceEarly_8C9F/image_thumb_9.png" width="239" border="0"&gt;&lt;/a&gt;  &lt;p&gt;The end result is nice summary table: &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/Ide.NETWebServicesAndWCFPerformanceEarly_8C9F/image_10.png" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="141" alt="image" src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/Ide.NETWebServicesAndWCFPerformanceEarly_8C9F/image_thumb_10.png" width="263" border="0"&gt;&lt;/a&gt;  &lt;p&gt;&amp;nbsp; &lt;p&gt;Same can be done with &lt;strong&gt;sc-bytes&lt;/strong&gt; or &lt;strong&gt;cs-bytes&lt;/strong&gt; to examine the http traffic averages. &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Pitfalls&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Be careful when calculating averages for time-taken property. Double click on any row in the pivot table presents the detailed tabular data. For example, here is the data behind the first row in the above example: &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/Ide.NETWebServicesAndWCFPerformanceEarly_8C9F/image_11.png" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="191" alt="image" src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/Ide.NETWebServicesAndWCFPerformanceEarly_8C9F/image_thumb_11.png" width="271" border="0"&gt;&lt;/a&gt;  &lt;p&gt;Notice &lt;strong&gt;sc-status&lt;/strong&gt; column. It is the HTTP status code. 401 is out of our interest thus must be filtered out to calculate the actual response processing time. Use Excel Data Filter functionality to do so. Finally, the more realistic average - about 27 seconds -&amp;nbsp;calculated for HTTP 200 responses: &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/Ide.NETWebServicesAndWCFPerformanceEarly_8C9F/image_12.png" atomicselection="true"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="215" alt="image" src="http://blogs.msdn.com/blogfiles/alikl/WindowsLiveWriter/Ide.NETWebServicesAndWCFPerformanceEarly_8C9F/image_thumb_12.png" width="284" border="0"&gt;&lt;/a&gt;  &lt;p&gt;Enjoy. &lt;p&gt;&lt;strong&gt;My related posts&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/alikl/archive/2007/07/06/typed-dataset-potential-performance-and-security-risk.aspx"&gt;&lt;strong&gt;Typed DataSet - Potential Performance And Security Risk&lt;/strong&gt;&lt;/a&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/alikl/archive/2007/06/20/performance-testing-objectives-document-template.aspx"&gt;&lt;strong&gt;Performance Testing Objectives Document Template&lt;/strong&gt;&lt;/a&gt;  &lt;li&gt;&lt;a href="http://blogs.msdn.com/alikl/archive/2007/03/28/performance-testing-for-the-masses.aspx"&gt;&lt;strong&gt;Performance Testing For The Masses&lt;/strong&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;Related resources&lt;/strong&gt;&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2007/10/27/now-on-msdn-patterns-practices-performance-testing-guidance-for-web-applications.aspx" target="_blank"&gt;Now on MSDN: patterns &amp;amp; practices Performance Testing Guidance for Web Applications&lt;/a&gt; &lt;/strong&gt; &lt;li&gt;&lt;strong&gt;&lt;a href="http://blogs.msdn.com/jmeier/archive/2007/10/27/performance-testing-videos-posted-to-codeplex.aspx" target="_blank"&gt;Performance Testing Videos Posted to CodePlex&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5845602" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/alikl/archive/tags/Test+Phase/default.aspx">Test Phase</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Tools/default.aspx">Tools</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Performance/default.aspx">Performance</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Practices/default.aspx">Practices</category></item><item><title>Security Tools From Microsoft ACE Team</title><link>http://blogs.msdn.com/alikl/archive/2007/10/25/security-tools-from-microsoft-ace-team.aspx</link><pubDate>Thu, 25 Oct 2007 17:35:34 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:5669473</guid><dc:creator>alikl</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/alikl/comments/5669473.aspx</comments><wfw:commentRss>http://blogs.msdn.com/alikl/commentrss.aspx?PostID=5669473</wfw:commentRss><wfw:comment>http://blogs.msdn.com/alikl/rsscomments.aspx?PostID=5669473</wfw:comment><description>&lt;p&gt;&lt;a href="http://securitybuddha.com/2007/10/25/a-sneak-peak-at-some-cool-software-security-tools/" target="_blank"&gt;Mark covers arsenal of security tools&lt;/a&gt; available from &lt;a href="http://blogs.msdn.com/ace_team/" target="_blank"&gt;Microsoft ACE team&lt;/a&gt;. The tools are:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Threat Analysis &amp;amp; Modeling Enterprise (TAM-E)&lt;/strong&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;CAT.NET (Code Analysis Tool)&lt;/strong&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Spider TCM (Assessment and compliance tool)&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=5669473" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/alikl/archive/tags/Security/default.aspx">Security</category><category domain="http://blogs.msdn.com/alikl/archive/tags/Tools/default.aspx">Tools</category></item></channel></rss>