﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-圣炎￠天乐</title><link>http://www.cnblogs.com/zmsx/</link><description>专注于.NET技术</description><language>zh-cn</language><lastBuildDate>Fri, 05 Sep 2008 15:30:22 GMT</lastBuildDate><pubDate>Fri, 05 Sep 2008 15:30:22 GMT</pubDate><ttl>60</ttl><item><title>Eds 公司 武汉 2008.2招聘</title><link>http://www.cnblogs.com/zmsx/archive/2008/02/21/1076167.html</link><dc:creator>圣炎￠天乐</dc:creator><author>圣炎￠天乐</author><pubDate>Thu, 21 Feb 2008 02:54:00 GMT</pubDate><guid>http://www.cnblogs.com/zmsx/archive/2008/02/21/1076167.html</guid><wfw:comment>http://www.cnblogs.com/zmsx/comments/1076167.html</wfw:comment><comments>http://www.cnblogs.com/zmsx/archive/2008/02/21/1076167.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/zmsx/comments/commentRss/1076167.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/zmsx/services/trackbacks/1076167.html</trackback:ping><description><![CDATA[<span>&nbsp;
<table style="border-right: silver 1pt solid; border-top: silver 1pt solid; margin-left: 0.5in; border-left: silver 1pt solid; width: 524.8pt; border-bottom: silver 1pt solid" cellspacing="0" cellpadding="0" width="700" border="1">
    <tbody>
        <tr>
            <td style="border-right: medium none; padding-right: 7.5pt; border-top: medium none; padding-left: 7.5pt; background: #00344d; padding-bottom: 7.5pt; border-left: medium none; width: 18.56%; padding-top: 7.5pt; border-bottom: medium none" width="18%" bgcolor="#00344d">
            <p><font face="Verdana" color="white" size="1"><span style="font-size: 9pt; color: white; font-family: Verdana"><img id="_x0000_i1049" height="62" alt="EDS logo" src="outbind://2-00000000507F6437A14C414CBD823FF6C81031CB0700AF43EF1ECEC3A24CB48CBA1790FAE55D0000012540240000AF43EF1ECEC3A24CB48CBA1790FAE55D0000019330EA0000/image001.gif" width="103" /></span></font></p>
            </td>
            <td style="border-right: medium none; padding-right: 7.5pt; border-top: medium none; padding-left: 7.5pt; background: #00344d; padding-bottom: 7.5pt; border-left: medium none; width: 81.44%; padding-top: 7.5pt; border-bottom: medium none"  noWrap width="81%" bgcolor="#00344d">
            <div style="border-right: medium none; padding-right: 0in; border-top: medium none; padding-left: 9pt; padding-bottom: 0in; border-left: #c8db00 4.5pt solid; padding-top: 0in; border-bottom: medium none">
            <p><font face="Verdana" color="#c8db00" size="1"><span style="font-size: 9pt; color: #c8db00; font-family: Verdana"><font color="#000000" size="2">&nbsp;<font color="#00ff00"><font size="5"><strong>Wuhan GSC :&nbsp;</strong><font color="#000000">&nbsp;<strong><font color="#00ff00">Weekly</font></strong>&nbsp;</font><strong>Hot Jobs</strong></font></font></font><br />
            <font color="#00ff00">...&nbsp;<font size="2">&nbsp;&nbsp;Thursday,&nbsp;&nbsp;21&nbsp;Feb&nbsp;</font>2008 </font></span></font></p>
            </div>
            </td>
        </tr>
        <tr style="height: 369.15pt" height="492">
            <td style="border-right: medium none; padding-right: 7.5pt; border-top: medium none; padding-left: 15pt; padding-bottom: 15pt; border-left: medium none; width: 100%; padding-top: 7.5pt; border-bottom: medium none; height: 369.15pt" valign="top" width="100%" colspan="2" height="492">
            <div style="border-right: medium none; padding-right: 0in; border-top: medium none; padding-left: 9pt; padding-bottom: 0in; border-left: #c8db00 4.5pt solid; padding-top: 0in; border-bottom: medium none">
            <h2><span style="font-size: 18pt; color: windowtext"><font size="4">&nbsp;<strong>&nbsp;<font color="#0000ff">Positions</font></strong><font size="3"><font color="#0000ff">&nbsp;</font></font>&nbsp;</font></span><font color="#ff2d2d" size="1"><span style="font-weight: bold; font-size: 9pt; color: #ff2d2d; font-family: Verdana"></h2>
            </div>
            <p><span style="font-size: 10pt; color: blue; font-family: Verdana"><font color="#000000"></font></span></span></font></p>
            <font face="Verdana" color="#ff2d2d" size="1"><span style="font-weight: bold; font-size: 9pt; color: #ff2d2d; font-family: Verdana">
            <div align="center"><font color="#0000ff" size="2">
            <div align="center">
            <table style="border-right: medium none; border-top: medium none; border-left: medium none; width: 446.7pt; border-bottom: medium none; border-collapse: collapse" cellspacing="0" cellpadding="0" width="596" border="1">
                <tbody>
                    <tr style="height: 48.6pt">
                        <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 223.35pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 48.6pt; background-color: transparent" width="298">
                        <p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; color: black"><font face="Verdana">Internal Position Title: Analyst/Specialist</font></span></p>
                        <p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; color: black"><font face="Verdana">Job Code: 34200/34210</font></span></p>
                        <p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><font face="Verdana"><strong><span style="font-size: 10pt; color: black">External Position Title:&nbsp;&nbsp;</span></strong></font></p>
                        <p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><font face="Verdana"><strong><span style="font-size: 10pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;</span></strong><strong><span style="font-size: 10pt; color: blue">Cobol/Mainframe</span></strong></font></p>
                        <p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; color: black"><font face="Verdana">Recruiter: Kelly/Yaya/Nancy/Victor</font></span></p>
                        </td>
                        <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: windowtext 1pt solid; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #ece9d8; width: 223.35pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 48.6pt; background-color: transparent" width="298">
                        <p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><font face="Verdana"><span style="font-size: 10pt; color: black">ITO Positions:</span>&nbsp;</font></p>
                        <p style="margin: 0cm 0cm 0pt; text-align: center" align="center"><strong><span style="font-size: 10pt; color: blue"><font face="Verdana">Asset Mgmt</font></span></strong></p>
                        <p style="margin: 0cm 0cm 0pt; text-align: center" align="center"><strong><span style="font-size: 10pt; color: blue"><font face="Verdana">Service Level Mgmt</font></span></strong></p>
                        <p style="margin: 0cm 0cm 0pt; text-align: center" align="center"><strong><span style="font-size: 10pt; color: blue"><font face="Verdana">Admin Ass.</font></span></strong></p>
                        <p style="margin: 0cm 0cm 0pt; text-align: center" align="center"><strong><span style="font-size: 10pt; color: red"><font face="Verdana">(Excellent English)</font></span></strong></p>
                        <p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><font face="Verdana"><span style="font-size: 10pt; color: black">Recruiter: Kelly/Yaya/Nancy</span></font></p>
                        </td>
                    </tr>
                    <tr style="height: 48.6pt">
                        <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #ece9d8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 223.35pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 48.6pt; background-color: transparent" width="298">
                        <p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; color: black"><font face="Verdana">Internal Position Title: Analyst/Specialist</font></span></p>
                        <p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; color: black"><font face="Verdana">Job Code: 34260/34270</font></span></p>
                        <p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><strong><span style="font-size: 10pt; color: black"><font face="Verdana">External Position Title:&nbsp;&nbsp;</font></span></strong></p>
                        <p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><font face="Verdana"><strong><span style="font-size: 10pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;</span></strong><strong><span style="font-size: 10pt; color: blue">Windows System&nbsp;Engineer</span></strong>&nbsp;<strong><span style="font-size: 10pt; color: blue">(MCSE)</span></strong>&nbsp;</font></p>
                        <p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><strong><span style="font-size: 12pt; color: black; font-family: 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></strong><font face="Verdana">&nbsp;<strong><span style="font-size: 10pt; color: red">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Excellent English)</span></strong></font></p>
                        <p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><font face="Verdana"><span style="font-size: 10pt; color: black">Recruiter: Kelly Zhang</span></font></p>
                        </td>
                        <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #ece9d8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #ece9d8; width: 223.35pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 48.6pt; background-color: transparent" width="298">
                        <p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; color: black"><font face="Verdana">Internal Position Title: Specialist</font></span></p>
                        <p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; color: black"><font face="Verdana">Job Code: 34210</font></span></p>
                        <p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><font face="Verdana"><strong><span style="font-size: 10pt; color: black">External Position Title:&nbsp;&nbsp;</span></strong></font></p>
                        <p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><font face="Verdana"><strong><span style="font-size: 10pt; color: black">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></strong><strong><span style="font-size: 10pt; color: blue">.Net Developer</span></strong></font></p>
                        <p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; color: black"><font face="Verdana">Recruiter: Yaya Lu</font></span></p>
                        </td>
                    </tr>
                    <tr style="height: 48.6pt">
                        <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #ece9d8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: windowtext 1pt solid; width: 223.35pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 48.6pt; background-color: transparent" width="298">
                        <p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; color: black"><font face="Verdana">Internal Position Title: Analyst/Specialist</font></span></p>
                        <p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; color: black"><font face="Verdana">Job Code: 34200/34210</font></span></p>
                        <p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><strong><span style="font-size: 10pt; color: black"><font face="Verdana">External Position Title:&nbsp;</font></span></strong></p>
                        <p style="margin: 0cm 0cm 0pt; text-align: center" align="center"><strong><span style="font-size: 10pt; color: blue"><font face="Verdana">PERL/C++(with PL/SQL) Developer</font></span></strong></p>
                        <p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; color: black"><font face="Verdana">Recruiter: Nancy Jiang</font></span></p>
                        </td>
                        <td style="border-right: windowtext 1pt solid; padding-right: 5.4pt; border-top: #ece9d8; padding-left: 5.4pt; padding-bottom: 0cm; border-left: #ece9d8; width: 223.35pt; padding-top: 0cm; border-bottom: windowtext 1pt solid; height: 48.6pt; background-color: transparent" width="298">
                        <p style="margin: 0cm 0cm 0pt"><span style="font-size: 10pt; color: black"><font face="Verdana">Internal Position Title: Analyst/Specialist</font></span></p>
                        <p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; color: black"><font face="Verdana">Job Code: 34200/34210</font></span></p>
                        <p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><font face="Verdana"><strong><span style="font-size: 10pt; color: black">External Position Title:&nbsp;&nbsp;</span></strong></font></p>
                        <p style="margin: 0cm 0cm 0pt; text-align: center" align="center"><strong><span style="font-size: 10pt; color: blue"><font face="Verdana">Tester </font></span></strong></p>
                        <p style="margin: 0cm 0cm 0pt; text-align: center" align="center"><font face="Verdana"><strong><span style="font-size: 10pt; color: red">(Excellent English)</span></strong></font></p>
                        <p style="margin: 0cm 0cm 0pt; text-align: left" align="left"><span style="font-size: 10pt; color: black"><font face="Verdana">Recruiter: Kelly Zhang</font></span></p>
                        </td>
                    </tr>
                </tbody>
            </table>
            </div>
            </font></div>
            <div align="center">&nbsp;</span></font>&nbsp;</div>
            <div style="text-align: center" align="center"><font face="Times New Roman" size="3"><span style="font-size: 12pt">
            <hr align="center" width="100%" color="#aca899" noShade size="1" />
            </span></font></div>
            <div style="border-right: medium none; padding-right: 0in; border-top: medium none; padding-left: 9pt; padding-bottom: 0in; border-left: #c8db00 4.5pt solid; padding-top: 0in; border-bottom: medium none">
            <h2><span style="font-size: 18pt; color: windowtext"><span style="font-size: 10pt; color: black; font-family: Verdana"><font color="#008080" size="4"><font color="#00ff00">&nbsp; </font><font color="#0000ff">ERP</font>&nbsp;</font></span></span><font face="Verdana" color="#ff2d2d" size="1"><span style="font-weight: bold; font-size: 9pt; color: #ff2d2d; font-family: Verdana"><span style="font-size: 10pt; color: black; font-family: Verdana"><span><font size="2"><font face="Verdana"></h2>
            </div>
            <div style="margin: 0in 0in 0pt; color: black">
            <p style="margin: 0in 0in 0pt"><font size="2"><font face="Verdana"><span style="color: black">If you are interested&nbsp;in the above positions, kindly email your resume to </span><span style="color: blue"><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#99;&#105;&#110;&#100;&#121;&#46;&#99;&#97;&#111;&#64;&#101;&#100;&#115;&#46;&#99;&#111;&#109;">cindy.cao@eds.com</a></span></font></font></p>
            <p style="margin: 0in 0in 0pt"></font></font></span></span></span></font></p>
            </div>
            </td>
        </tr>
    </tbody>
</table>
</span>
<img src ="http://www.cnblogs.com/zmsx/aggbug/1076167.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42116/" target="_blank">[新闻]消息称MySQL创始人已向Sun提交辞呈</a>]]></description></item><item><title>EDS 公司专用英文简历模板</title><link>http://www.cnblogs.com/zmsx/archive/2008/01/09/1031946.html</link><dc:creator>圣炎￠天乐</dc:creator><author>圣炎￠天乐</author><pubDate>Wed, 09 Jan 2008 06:38:00 GMT</pubDate><guid>http://www.cnblogs.com/zmsx/archive/2008/01/09/1031946.html</guid><wfw:comment>http://www.cnblogs.com/zmsx/comments/1031946.html</wfw:comment><comments>http://www.cnblogs.com/zmsx/archive/2008/01/09/1031946.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/zmsx/comments/commentRss/1031946.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/zmsx/services/trackbacks/1031946.html</trackback:ping><description><![CDATA[&nbsp;
<p><span style="font-size: 14pt; font-family: Arial">Your Name</span></p>
<br clear="all" />
<p><em><span style="font-size: 14pt; font-family: Arial">Summary of Qualifications</span></em></p>
<p><span style="color: black; font-family: Verdana">I was born in XXXX, in XX province. I have more than 5 years experience with .NET development. I had participated in many large-scale .Net application design development, which make me &nbsp;to accumulate a lot of experience in development. I have a deep understand in technology&nbsp;and business. I have very strong learning capability and innovation ability.</span></p>
<p><em><span style="font-size: 14pt; font-family: Arial">Education</span></em></p>
<p><strong>&nbsp;</strong></p>
<p style="tab-stops: list .25in left .5in"><span style="color: windowtext; font-family: Symbol">&#183;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-size: 12pt; color: windowtext; font-family: Arial">XXXX.9 </span></strong><strong><span style="font-size: 12pt; font-family: Arial">&#8211;</span></strong><strong><span style="font-size: 12pt; color: windowtext; font-family: Arial"> XXXX.7</span></strong>&nbsp;Master of XXXX, XXXX University of XXXX, Wuhan, China</p>
<p style="tab-stops: list .25in left .5in"><span style="font-size: 11pt; color: windowtext; font-family: Symbol">&#183;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="font-size: 12pt; color: windowtext; font-family: Arial">XXXX.9 </span></strong><strong><span style="font-size: 12pt; font-family: Arial">&#8211;</span></strong><strong><span style="font-size: 12pt; color: windowtext; font-family: Arial"> XXXX.7 &nbsp;</span></strong>Bachelor of XXXX , China</p>
<p><em>&nbsp;</em></p>
<p><em><span style="font-size: 14pt; font-family: Arial">Work Experience </span></em></p>
<p><strong>&nbsp;</strong></p>
<p><strong><span style="font-size: 12pt; font-family: Arial">XXXX.XX &#8211; XXXX.XX &nbsp;&nbsp;&nbsp;</span></strong><strong><span style="color: black; font-family: Verdana">XXXX Company</span></strong></p>
<p><span style="color: black; font-family: Verdana">Industry<strong> :</strong> </span></p>
<p><span style="color: black; font-family: Verdana">Department: </span></p>
<p><span style="color: black; font-family: Verdana">Role: </span></p>
<p><span style="color: black; font-family: Verdana">Responsibility:&nbsp;</span></p>
<p><strong><span style="font-size: 12pt; font-family: Arial">XXXX.XX &#8211; XXXX.XX&nbsp;&nbsp;&nbsp; </span></strong><strong><span style="color: black; font-family: Verdana">XXXX Company</span></strong></p>
<p><span style="color: black; font-family: Verdana">Industry<strong> :</strong> </span></p>
<p><span style="color: black; font-family: Verdana">Department: </span></p>
<p><span style="color: black; font-family: Verdana">Role: </span></p>
<p><span style="color: black; font-family: Verdana">Responsibility:&nbsp;</span></p>
<p><span style="color: black; font-family: Verdana">The following are the projects I had participated in this company:</span></p>
<p style="margin-left: 0.25in; text-indent: -0.25in; tab-stops: .25in"><span style="font-size: 11pt; color: black; font-family: Symbol">&#183;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="color: black; font-family: Verdana">XXXX</span></strong><span style="color: black; font-family: Verdana"> <br />
Time Period: <br />
Description</span><span style="color: black; font-family: 'Arial Unicode MS'">：</span><span style="color: black; font-family: Verdana"> <br />
Technology</span><span style="color: black; font-family: 'Arial Unicode MS'">：</span><span style="color: black; font-family: Verdana"> <br />
Responsibility</span><span style="color: black; font-family: 'Arial Unicode MS'">：</span></p>
<p style="margin-left: 0.25in; text-indent: -0.25in; tab-stops: .25in"><span style="font-size: 11pt; color: black; font-family: Symbol">&#183;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><strong><span style="color: black; font-family: Verdana">XXXX</span></strong><span style="color: black; font-family: Verdana"> <br />
Time Period: <br />
Description</span><span style="color: black; font-family: 'Arial Unicode MS'">：</span><span style="color: black; font-family: Verdana"> <br />
Technology</span><span style="color: black; font-family: 'Arial Unicode MS'">：</span><span style="color: black; font-family: Verdana"> <br />
Responsibility</span><span style="color: black; font-family: 'Arial Unicode MS'">：</span></p>
<p><em><span style="font-size: 14pt; font-family: Arial">Skill Set:</span></em></p>
<p style="margin-left: 76pt; text-indent: -0.25in; line-height: 15pt; tab-stops: list 76.0pt"><span style="font-size: 11pt; font-family: Wingdings">&#167;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 11pt; font-family: Arial">Analyst&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; expert&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6 years</span></p>
<p style="margin-left: 76pt; text-indent: -0.25in; line-height: 15pt; tab-stops: list 76.0pt"><span style="font-size: 11pt; font-family: Wingdings">&#167;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 11pt; font-family: Arial">Oracle&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; understanding&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1 year</span></p>
<p style="margin-left: 76pt; text-indent: -0.25in; line-height: 15pt; tab-stops: list 76.0pt"><span style="font-size: 11pt; font-family: Wingdings">&#167;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 11pt; font-family: Arial">SQL Server&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; expert&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8 years </span></p>
<p style="margin-left: 76pt; text-indent: -0.25in; line-height: 15pt; tab-stops: list 76.0pt"><span style="font-size: 11pt; font-family: Wingdings">&#167;<span style="font: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 11pt; font-family: Arial">c/C++&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; expert&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 years<br />
<br />
如果您收到了EDS公司的自动回执邮件，请按以上格式撰写您的英文简历并发送到指定的网页。</span></p>
<img src ="http://www.cnblogs.com/zmsx/aggbug/1031946.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42115/" target="_blank">[新闻]谷歌Chrome浏览器即将更换LOGO颜色？</a>]]></description></item><item><title>GAT&amp;GAX群</title><link>http://www.cnblogs.com/zmsx/archive/2007/06/02/768667.html</link><dc:creator>圣炎￠天乐</dc:creator><author>圣炎￠天乐</author><pubDate>Sat, 02 Jun 2007 05:53:00 GMT</pubDate><guid>http://www.cnblogs.com/zmsx/archive/2007/06/02/768667.html</guid><wfw:comment>http://www.cnblogs.com/zmsx/comments/768667.html</wfw:comment><comments>http://www.cnblogs.com/zmsx/archive/2007/06/02/768667.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/zmsx/comments/commentRss/768667.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/zmsx/services/trackbacks/768667.html</trackback:ping><description><![CDATA[<p>新近建了一个QQ群23023537,用于讨论GAT与GAX.</p><img src ="http://www.cnblogs.com/zmsx/aggbug/768667.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42101/" target="_blank">[新闻]淘宝网合并阿里妈妈 专家称阿里巴巴或有新战略</a>]]></description></item><item><title>如何写自己的Guidance Packages（一）</title><link>http://www.cnblogs.com/zmsx/archive/2007/06/02/768651.html</link><dc:creator>圣炎￠天乐</dc:creator><author>圣炎￠天乐</author><pubDate>Sat, 02 Jun 2007 05:35:00 GMT</pubDate><guid>http://www.cnblogs.com/zmsx/archive/2007/06/02/768651.html</guid><wfw:comment>http://www.cnblogs.com/zmsx/comments/768651.html</wfw:comment><comments>http://www.cnblogs.com/zmsx/archive/2007/06/02/768651.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/zmsx/comments/commentRss/768651.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/zmsx/services/trackbacks/768651.html</trackback:ping><description><![CDATA[<p>开发一个guidance package的步骤如下：
<ul>
    <li>定义 recipes ，包括定义参数（arguments）, 向导页面（wizards） 和 所执行的操作（actions）
    <li>定义 Visual Studio 模板文件（Template）。
    <li>设计 actions 。
    <li>书写参数类型编辑器和转换器，即editors 和 converters 。
    <li>定义 T4 模板 (如果一个 action 需要使用 T4 template 生成代码) 。
    <li>测试 package。
    <li>绑定 package 安装文件。</li>
</ul>
<p>一个guidance package 包含下面的部分或者全部的文件:
<ul>
    <li>Guidance package 配置文件(是一个XML文档,必须)
    <li>Visual Studio 模板文件(可使用VS自动生成,然后对生成的模板再做稍微更改即可)
    <li>T4 模板(以.T4结尾,用于生成代码)
    <li>一些DLL文件,包括 actions, type editors, value providers和type converters (建议使用单一的DLL) </li>
</ul>
<p>&nbsp;</p>
<p>以下是一份Guidance package 配置文件，其中有注释：</p>
<p>&nbsp;</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">&lt;?</span><span style="COLOR: #ff00ff">xml&nbsp;version="1.0"&nbsp;encoding="utf-8"&nbsp;</span><span style="COLOR: #0000ff">?&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">GuidancePackage&nbsp;</span><span style="COLOR: #ff0000">xmlns</span><span style="COLOR: #0000ff">="http://schemas.microsoft.com/pag/gax-core"</span><span style="COLOR: #ff0000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;Name</span><span style="COLOR: #0000ff">="这里是Guidance&nbsp;package的名字"</span><span style="COLOR: #ff0000">&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;Caption</span><span style="COLOR: #0000ff">="这里是标题"</span><span style="COLOR: #ff0000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;Description</span><span style="COLOR: #0000ff">="这里是描述"</span><span style="COLOR: #ff0000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;Guid</span><span style="COLOR: #0000ff">="51FCD4D0-B90C-4f11-B868-E9D71D8B7746"</span><span style="COLOR: #ff0000">&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BindingRecipe</span><span style="COLOR: #0000ff">="BindingRecipe"</span><span style="COLOR: #ff0000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;SchemaVersion</span><span style="COLOR: #0000ff">="1.0"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Recipes</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Recipe&nbsp;</span><span style="COLOR: #ff0000">Name</span><span style="COLOR: #0000ff">="这里是Recipe&nbsp;名"</span><span style="COLOR: #ff0000">&nbsp;Bound</span><span style="COLOR: #0000ff">="是否有限制可以是true或false"</span><span style="COLOR: #ff0000">&nbsp;Recurrent</span><span style="COLOR: #0000ff">="执行后是否重新呈现，可以是true或者false"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Caption</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">这里是Recipe&nbsp;标题</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Caption</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Description</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">这里是Recipe&nbsp;的描述.</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Description</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">HostData</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Icon&nbsp;</span><span style="COLOR: #ff0000">ID</span><span style="COLOR: #0000ff">="1046"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">CommandBar&nbsp;</span><span style="COLOR: #ff0000">Name</span><span style="COLOR: #0000ff">="这里是该Recipe&nbsp;可以绑定的位置，可供选择的有Solution，Solution&nbsp;Folder，Solution&nbsp;Add，Solution&nbsp;Folder&nbsp;Add，Project，Project&nbsp;Add，Folder，Item，Web&nbsp;Project，Web&nbsp;Item，Web&nbsp;Folder"</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">HostData</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">GatheringServiceData</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Wizard&nbsp;</span><span style="COLOR: #ff0000">xmlns</span><span style="COLOR: #0000ff">="http://schemas.microsoft.com/pag/gax-wizards"</span><span style="COLOR: #ff0000">&nbsp;SchemaVersion</span><span style="COLOR: #0000ff">="1.0"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Pages</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Page</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Title</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">这里是Page的标题</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Title</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">LinkTitle</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">这里是收集参数的向导页面的左侧显示的标题</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">LinkTitle</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Fields</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Field&nbsp;</span><span style="COLOR: #ff0000">ValueName</span><span style="COLOR: #0000ff">="参数名"</span><span style="COLOR: #ff0000">&nbsp;Label</span><span style="COLOR: #0000ff">="显示名"</span><span style="COLOR: #ff0000">&nbsp;&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;InvalidValueMessage</span><span style="COLOR: #0000ff">="无效输入时显示的信息."</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Tooltip</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">提示信息</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Tooltip</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Field</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Fields</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Page</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Pages</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Wizard</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">GatheringServiceData</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Actions</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">Action&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #ff0000">Name</span><span style="COLOR: #0000ff">="Action名"</span><span style="COLOR: #ff0000">&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type</span><span style="COLOR: #0000ff">="HoLPackage.Actions.HelloWorldAction,&nbsp;HoLPackage"</span><span style="COLOR: #ff0000">&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Actions</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Recipe</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">Recipes</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">GuidancePackage</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<img src ="http://www.cnblogs.com/zmsx/aggbug/768651.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42101/" target="_blank">[新闻]淘宝网合并阿里妈妈 专家称阿里巴巴或有新战略</a>]]></description></item><item><title>(转)聚簇索引与非聚簇索引的区别以及SQL Server查询优化技术</title><link>http://www.cnblogs.com/zmsx/archive/2007/05/27/761468.html</link><dc:creator>圣炎￠天乐</dc:creator><author>圣炎￠天乐</author><pubDate>Sun, 27 May 2007 04:58:00 GMT</pubDate><guid>http://www.cnblogs.com/zmsx/archive/2007/05/27/761468.html</guid><wfw:comment>http://www.cnblogs.com/zmsx/comments/761468.html</wfw:comment><comments>http://www.cnblogs.com/zmsx/archive/2007/05/27/761468.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/zmsx/comments/commentRss/761468.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/zmsx/services/trackbacks/761468.html</trackback:ping><description><![CDATA[<p>在《数据库原理》里面，对聚簇索引的解释是:聚簇索引的顺序就是数据的物理存储顺序，而对非聚簇索引的解释是:索引顺序与数据物理排列顺序无关。正式因为如此，所以一个表最多只能有一个聚簇索引。</p>
<p>不过这个定义太抽象了。在SQL Server中，索引是通过二叉树的数据结构来描述的，我们可以这么理解聚簇索引：索引的叶节点就是数据节点。而非聚簇索引的叶节点仍然是索引节点，只不过有一个指针指向对应的数据块。如下图：</p>
<p align=center><img height=490 src="http://www.cnblogs.com/images/cnblogs_com/zhenyulu/Pic10.JPG" width=658 border=0><br><font color=#000080>非聚簇索引</font></p>
<p>&nbsp;</p>
<p align=center><img height=488 src="http://www.cnblogs.com/images/cnblogs_com/zhenyulu/Pic11.JPG" width=652 border=0><br><font color=#000080>聚簇索引<br></font></p>
<p><br>聚簇索引与非聚簇索引的本质区别到底是什么？什么时候用聚簇索引，什么时候用非聚簇索引？</p>
<p>这是一个很复杂的问题，很难用三言两语说清楚。我在这里从SQL Server索引优化查询的角度简单谈谈(如果对这方面感兴趣的话，可以读一读微软出版的《Microsoft SQL Server 2000数据库编程》第3单元的数据结构引论以及第6、13、14单元)。</p>
<p><strong><font size=4><br>一、索引块与数据块的区别</font></strong></p>
<p>大家都知道，索引可以提高检索效率，因为它的二叉树结构以及占用空间小，所以访问速度块。让我们来算一道数学题：如果表中的一条记录在磁盘上占用1000字节的话，我们对其中10字节的一个字段建立索引，那么该记录对应的索引块的大小只有10字节。我们知道，SQL Server的最小空间分配单元是&#8220;页（Page）&#8221;，一个页在磁盘上占用8K空间，那么这一个页可以存储上述记录8条，但可以存储索引800条。现在我们要从一个有8000条记录的表中检索符合某个条件的记录，如果没有索引的话，我们可能需要遍历8000条&#215;1000字节/8K字节=1000个页面才能够找到结果。如果在检索字段上有上述索引的话，那么我们可以在8000条&#215;10字节/8K字节=10个页面中就检索到满足条件的索引块，然后根据索引块上的指针逐一找到结果数据块，这样IO访问量要少的多。</p>
<p><font size=4><strong><br>二、索引优化技术</strong></font></p>
<p>是不是有索引就一定检索的快呢？答案是否。有些时候用索引还不如不用索引快。比如说我们要检索上述表中的所有记录，如果不用索引，需要访问8000条&#215;1000字节/8K字节=1000个页面，如果使用索引的话，首先检索索引，访问8000条&#215;10字节/8K字节=10个页面得到索引检索结果，再根据索引检索结果去对应数据页面，由于是检索所有数据，所以需要再访问8000条&#215;1000字节/8K字节=1000个页面将全部数据读取出来，一共访问了1010个页面，这显然不如不用索引快。</p>
<p>SQL Server内部有一套完整的数据检索优化技术，在上述情况下，SQL Server的查询计划（Search Plan）会自动使用表扫描的方式检索数据而不会使用任何索引。那么SQL Server是怎么知道什么时候用索引，什么时候不用索引的呢？SQL Server除了日常维护数据信息外，还维护着数据统计信息，下图是数据库属性页面的一个截图：</p>
<p><img height=490 src="http://www.cnblogs.com/images/cnblogs_com/zhenyulu/Pic12.JPG" width=506 border=0></p>
<p>从图中我们可以看到，SQL Server自动维护统计信息，这些统计信息包括数据密度信息以及数据分布信息，这些信息帮助SQL Server决定如何制定查询计划以及查询是是否使用索引以及使用什么样的索引（这里就不再解释它们到底如何帮助SQL Server建立查询计划的了）。我们还是来做个实验。建立一张表：tabTest(<u>ID</u>, unqValue，intValue)，其中ID是整形自动编号主索引，unqValue是uniqueidentifier类型，在上面建立普通索引，intValue 是整形，不建立索引。之所以挂上一个没有索引的intValue字段，就是防止SQL Server使用索引覆盖查询优化技术，这样实验就起不到作用了。向表中录入10000条随机记录，代码如下：</p>
<div style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 80%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
<div><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">CREATE</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">TABLE</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #ff0000">[</span><span style="COLOR: #ff0000">dbo</span><span style="COLOR: #ff0000">]</span><span style="COLOR: #000000">.</span><span style="COLOR: #ff0000">[</span><span style="COLOR: #ff0000">tabTest</span><span style="COLOR: #ff0000">]</span><span style="COLOR: #000000">&nbsp;(<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;</span><span style="COLOR: #ff0000">[</span><span style="COLOR: #ff0000">ID</span><span style="COLOR: #ff0000">]</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #ff0000">[</span><span style="COLOR: #ff0000">int</span><span style="COLOR: #ff0000">]</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #ff00ff">IDENTITY</span><span style="COLOR: #000000">&nbsp;(</span><span style="FONT-WEIGHT: bold; COLOR: #800000">1</span><span style="COLOR: #000000">,&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #800000">1</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #808080">NOT</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">NULL</span><span style="COLOR: #000000">&nbsp;,<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;</span><span style="COLOR: #ff0000">[</span><span style="COLOR: #ff0000">unqValue</span><span style="COLOR: #ff0000">]</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #ff0000">[</span><span style="COLOR: #ff0000">uniqueidentifier</span><span style="COLOR: #ff0000">]</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #808080">NOT</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">NULL</span><span style="COLOR: #000000">&nbsp;,<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;</span><span style="COLOR: #ff0000">[</span><span style="COLOR: #ff0000">intValue</span><span style="COLOR: #ff0000">]</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #ff0000">[</span><span style="COLOR: #ff0000">int</span><span style="COLOR: #ff0000">]</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #808080">NOT</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">NULL</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>)&nbsp;</span><span style="COLOR: #0000ff">ON</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #ff0000">[</span><span style="COLOR: #ff0000">PRIMARY</span><span style="COLOR: #ff0000">]</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">GO</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">ALTER</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">TABLE</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #ff0000">[</span><span style="COLOR: #ff0000">dbo</span><span style="COLOR: #ff0000">]</span><span style="COLOR: #000000">.</span><span style="COLOR: #ff0000">[</span><span style="COLOR: #ff0000">tabTest</span><span style="COLOR: #ff0000">]</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">WITH</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">NOCHECK</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">ADD</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">CONSTRAINT</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #ff0000">[</span><span style="COLOR: #ff0000">PK_tabTest</span><span style="COLOR: #ff0000">]</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">PRIMARY</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">KEY</span><span style="COLOR: #000000">&nbsp;&nbsp;</span><span style="COLOR: #0000ff">CLUSTERED</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;(<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #ff0000">[</span><span style="COLOR: #ff0000">ID</span><span style="COLOR: #ff0000">]</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;)&nbsp;&nbsp;</span><span style="COLOR: #0000ff">ON</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #ff0000">[</span><span style="COLOR: #ff0000">PRIMARY</span><span style="COLOR: #ff0000">]</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">GO</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">ALTER</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">TABLE</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #ff0000">[</span><span style="COLOR: #ff0000">dbo</span><span style="COLOR: #ff0000">]</span><span style="COLOR: #000000">.</span><span style="COLOR: #ff0000">[</span><span style="COLOR: #ff0000">tabTest</span><span style="COLOR: #ff0000">]</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">ADD</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;</span><span style="COLOR: #0000ff">CONSTRAINT</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #ff0000">[</span><span style="COLOR: #ff0000">DF_tabTest_unqValue</span><span style="COLOR: #ff0000">]</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">DEFAULT</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #ff00ff">newid</span><span style="COLOR: #000000">())&nbsp;</span><span style="COLOR: #0000ff">FOR</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #ff0000">[</span><span style="COLOR: #ff0000">unqValue</span><span style="COLOR: #ff0000">]</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">GO</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">CREATE</span><span style="COLOR: #000000">&nbsp;&nbsp;</span><span style="COLOR: #0000ff">INDEX</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #ff0000">[</span><span style="COLOR: #ff0000">IX_tabTest_unqValue</span><span style="COLOR: #ff0000">]</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">ON</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #ff0000">[</span><span style="COLOR: #ff0000">dbo</span><span style="COLOR: #ff0000">]</span><span style="COLOR: #000000">.</span><span style="COLOR: #ff0000">[</span><span style="COLOR: #ff0000">tabTest</span><span style="COLOR: #ff0000">]</span><span style="COLOR: #000000">(</span><span style="COLOR: #ff0000">[</span><span style="COLOR: #ff0000">unqValue</span><span style="COLOR: #ff0000">]</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #0000ff">ON</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #ff0000">[</span><span style="COLOR: #ff0000">PRIMARY</span><span style="COLOR: #ff0000">]</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">GO</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">declare</span><span style="COLOR: #000000">&nbsp;@i&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">int</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">declare</span><span style="COLOR: #000000">&nbsp;@v&nbsp;</span><span style="FONT-WEIGHT: bold; COLOR: #000000">int</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">set</span><span style="COLOR: #000000">&nbsp;@i</span><span style="COLOR: #808080">=</span><span style="FONT-WEIGHT: bold; COLOR: #800000">0</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;@i</span><span style="COLOR: #808080">&lt;</span><span style="FONT-WEIGHT: bold; COLOR: #800000">10000</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">begin</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">set</span><span style="COLOR: #000000">&nbsp;@v</span><span style="COLOR: #808080">=</span><span style="COLOR: #ff00ff">rand</span><span style="COLOR: #000000">()</span><span style="COLOR: #808080">*</span><span style="FONT-WEIGHT: bold; COLOR: #800000">1000</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">insert</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">into</span><span style="COLOR: #000000">&nbsp;tabTest&nbsp;(</span><span style="COLOR: #ff0000">[</span><span style="COLOR: #ff0000">intValue</span><span style="COLOR: #ff0000">]</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #0000ff">values</span><span style="COLOR: #000000">&nbsp;(@v)<br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">set</span><span style="COLOR: #000000">&nbsp;@i</span><span style="COLOR: #808080">=</span><span style="COLOR: #000000">@i</span><span style="COLOR: #808080">+</span><span style="FONT-WEIGHT: bold; COLOR: #800000">1</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">end</span><span style="COLOR: #000000"><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnblogs.com/Images/OutliningIndicators/None.gif" align=top></span></div>
</div>
<p>然后我们执行两个查询并查看执行计划，如图：（在查询分析器的查询菜单中可以打开查询计划，同时图上第一个查询的GUID是我从数据库中找的，大家做实验的时候可以根据自己数据库中的值来定）：</p>
<p><img height=522 src="http://www.cnblogs.com/images/cnblogs_com/zhenyulu/Pic13.JPG" width=668 border=0><br><br>从图中可以看出，在第一个查询中，SQL Server使用了IX_tabTest_unqValue索引，根据箭头方向，计算机先在索引范围内找，找到后，使用Bookmark Lookup将索引节点映射到数据节点上，最后给出SELECT结果。在第二个查询中，系统直接遍历表给出结果，不过它使用了聚簇索引，为什么呢？不要忘了，聚簇索引的页节点就是数据节点！这样使用聚簇索引会更快一些（不受数据删除、更新留下的存储空洞的影响，直接遍历数据是要跳过这些空洞的）。</p>
<p>下面，我们在SQL Server中将ID字段的聚簇索引更改为非聚簇索引，然后再执行select * from tabTest，这回我们看到的执行计划变成了：</p>
<p><img height=320 src="http://www.cnblogs.com/images/cnblogs_com/zhenyulu/Pic14.JPG" width=668 border=0></p>
<p>SQL Server没有使用任何索引，而是直接执行了Table Scan，因为只有这样，检索效率才是最高的。</p>
<p><font size=4><strong><br>三、聚簇索引与非聚簇索引的本质区别</strong></font></p>
<p>现在可以讨论聚簇索引与非聚簇索引的本质区别了。正如本文最前面的两个图所示，聚簇索引的叶节点就是数据节点，而非聚簇索引的页节点仍然是索引检点，并保留一个链接指向对应数据块。</p>
<p>还是通过一道数学题来看看它们的区别吧：假设有一8000条记录的表，表中每条记录在磁盘上占用1000字节，如果在一个10字节长的字段上建立非聚簇索引主键，需要二叉树节点16000个（这16000个节点中有8000个叶节点，每个页节点都指向一个数据记录），这样数据将占用8000条&#215;1000字节/8K字节=1000个页面；索引将占用16000个节点&#215;10字节/8K字节=20个页面，共计1020个页面。</p>
<p>同样一张表，如果我们在对应字段上建立聚簇索引主键，由于聚簇索引的页节点就是数据节点，所以索引节点仅有8000个，占用10个页面，数据仍然占有1000个页面。</p>
<p>下面我们看看在执行插入操作时，非聚簇索引的主键为什么比聚簇索引主键要快。主键约束要求主键不能出现重复，那么SQL Server是怎么知道不出现重复的呢？唯一的方法就是检索。对于非聚簇索引，只需要检索20个页面中的16000个节点就知道是否有重复，因为所有主键键值在这16000个索引节点中都包含了。但对于聚簇索引，索引节点仅仅包含了8000个中间节点，至于会不会出现重复必须检索另外1000个页数据节点才知道，那么相当于检索10+1000=1010个页面才知道是否有重复。所以聚簇索引主键的插入速度要比非聚簇索引主键的插入速度慢很多。</p>
<p>让我们再来看看数据检索的效率，如果对上述两表进行检索，在使用索引的情况下（有些时候SQL Server执行计划会选择不使用索引，不过我们这里姑且假设一定使用索引），对于聚簇索引检索，我们可能会访问10个索引页面外加1000个数据页面得到结果（实际情况要比这个好），而对于非聚簇索引，系统会从20个页面中找到符合条件的节点，再映射到1000个数据页面上（这也是最糟糕的情况），比较一下，一个访问了1010个页面而另一个访问了1020个页面，可见检索效率差异并不是很大。所以不管非聚簇索引也好还是聚簇索引也好，都适合排序，聚簇索引仅仅比非聚簇索引快一点。</p>
<p><font size=4><strong><br>结语</strong></font></p>
<p>好了，写了半天，手都累了。关于聚簇索引与非聚簇索引效率问题的实验就不做了，感兴趣的话可以自己使用查询分析器对查询计划进行分析。SQL Server是一个很复杂的系统，尤其是索引以及查询优化技术，Oracle就更复杂了。了解索引以及查询背后的事情不是什么坏事，它可以帮助我们更为深刻的了解我们的系统。</p>
<img src ="http://www.cnblogs.com/zmsx/aggbug/761468.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42096/" target="_blank">[新闻]微软研究院发布 AutoCollage - 整理并融合照片</a>]]></description></item><item><title>GAT &amp; GAX 简介</title><link>http://www.cnblogs.com/zmsx/archive/2007/05/26/760854.html</link><dc:creator>圣炎￠天乐</dc:creator><author>圣炎￠天乐</author><pubDate>Sat, 26 May 2007 09:09:00 GMT</pubDate><guid>http://www.cnblogs.com/zmsx/archive/2007/05/26/760854.html</guid><wfw:comment>http://www.cnblogs.com/zmsx/comments/760854.html</wfw:comment><comments>http://www.cnblogs.com/zmsx/archive/2007/05/26/760854.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cnblogs.com/zmsx/comments/commentRss/760854.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/zmsx/services/trackbacks/760854.html</trackback:ping><description><![CDATA[使用<font face=Calibri>Guidance Automation Toolkit</font><span>工具和方法，你将能够在</span><font face=Calibri>Visual Studio 2005 </font><span>中创建可重用的代码及模式。</span>
<p>&#160;</p>
<p><font face=Calibri color=#1f497d>&nbsp;</font></p>
<p><font color=#1f497d><span>这套工具旨在简化将可重用的代码集成到应用程序的过程，使架构师能将通常需手动执行的一系列开发工作自动化起来。</span><span><font face=Calibri> </font></span><span>使用此工具，还能确保重复性的、易出错的开发工作以合理、一致的方式完成，并能缩短软件开发时间。</span></font></p>
<p><font face=Calibri color=#1f497d>&nbsp;</font></p>
<p><strong><font color=#1f497d><span>安装</span><font face=Calibri>Guidance Automation Toolkit</font></font></strong></p>
<p><font color=#1f497d><span>使用</span><font face=Calibri>Guidance Automation Toolkit</font><span>，需要先安装一个叫做</span><font face=Calibri>Guidance Automation Extensions </font><span>的</span><font face=Calibri>runtime</font><span>组件，然后下载并安装</span><font face=Calibri>Guidance Automation Toolkit</font><span>。更多信息，请参见</span></font><a href="http://msdn2.microsoft.com/en-us/teamsystem/bb229214"><font face=Calibri color=#0000ff>Guidance Automation Toolkit and Guidance Automation Extensions Download</font></a><font color=#1f497d><font face=Calibri>.</font></font></p>
<p><font face=Calibri color=#1f497d>&nbsp;</font></p>
<p><font face=Calibri color=#1f497d>&nbsp;</font></p>
<p><strong><font color=#1f497d><span>了解</span><font face=Calibri>Guidance Automation Toolkit</font></font></strong></p>
<p><font color=#1f497d><font face=Calibri>Guidance Automation Toolkit </font><span>由以下一系列的元素组成，这些元素共同工作以实现自动化功能：</span></font></p>
<p><font face=Calibri color=#1f497d>&nbsp;</font></p>
<p><font color=#1f497d><span><span>&#183;<span><font size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span></span><font face=Calibri>Recipes: Recipe </font><span>将开发人员通常需按照一系列指示手动执行的开发动作自动化起来。你可以通过使用</span><font face=Calibri>Recipe</font><span>来确保重复性的、易出错的开发工作以合理、一致的方式完成，并能够简化复杂或重复性的开发工作。</span><font face=Calibri>Recipe</font><span>可以运行在某个特定的解决方案元素上，或运行在一组有共同特点的解决方案元素上（例如，所有的</span><font face=Calibri>C#</font><span>项目）。</span></font></p>
<p><font color=#1f497d><span><span>&#183;<span><font size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span></span><font face=Calibri>Actions</font><span>：</span><font face=Calibri>Action</font><span>是一个原子单位的操作，以一定的顺序被</span><font face=Calibri>Recipe</font><span>调用。这个顺序在</span><font face=Calibri>Recipe</font><span>的定义中指定。一个</span><font face=Calibri>Action</font><span>首先接受一定的输入，输入既可以来自</span><font face=Calibri>Recipe</font><span>收集到的参数，也可以是前面的</span><font face=Calibri>Action</font><span>执行完的输出结果。每个</span><font face=Calibri>Recipe</font><span>包含的</span><font face=Calibri>Action</font><span>在</span><font face=Calibri>Recipe</font><span>的定义中指定。</span></font></p>
<p><font color=#1f497d><span><span>&#183;<span><font size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span></span><font face=Calibri>Text Template Transformation Templates</font><span>：一个</span><font face=Calibri>Text Template Transformation Template</font><span>由文本和脚本组成。脚本用</span><font face=Calibri>VB</font><span>或</span><font face=Calibri>C#</font><span>写，运行的时候将会返回一个字符串，且这个字符串会被直接插入到</span><font face=Calibri>Template</font><span>输出流中。</span><font face=Calibri>Guidance Automation Toolkit</font><span>中的</span><font face=Calibri>Text Template Transformation </font><span>引擎对</span><font face=Calibri>Template</font><span>进行了扩展。</span></font></p>
<p><font color=#1f497d><span><span>&#183;<span><font size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span></span><font face=Calibri>Wizards</font><span>：</span><font face=Calibri>Wizard</font><span>用来收集</span><font face=Calibri>Recipe</font><span>的参数的值。每个</span><font face=Calibri>Recipe</font><span>可以有一个与之相关的</span><font face=Calibri>Wizard</font><span>，</span><font face=Calibri>Wizard</font><span>通过一个或多个页面来引导开发人员进行参数值的收集。</span></font></p>
<p><font color=#1f497d><span><span>&#183;<span><font size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span></span><font face=Calibri>Type Converters</font><span>：</span><font face=Calibri>Type Converter</font><span>验证收集到的值的正确性，并将这些值由用户界面表达形式转换为类型表达形式。</span></font></p>
<p><font color=#1f497d><span><span>&#183;<span><font size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></span></span></span><font face=Calibri>Visual Studio Templates</font><span>：</span><font face=Calibri>Visual Studio Template</font><span>是以</span><font face=Calibri>XML</font><span>格式构成的文件，</span><font face=Calibri>Visual Studio</font><span>使用</span><font face=Calibri>Template</font><span>文件来创建解决方案或向已有的解决方案中添加一个或多个项目。</span><font face=Calibri>Visual Studio template</font><span>引擎扩展了这些</span><font face=Calibri>template</font><span>。在</span><font face=Calibri>Guidance Automation Toolkit</font><span>中，可以将</span><font face=Calibri>Visual Studio template</font><span>和</span><font face=Calibri>Recipe</font><span>关联起来。关联意味着，当一个</span><font face=Calibri>Template</font><span>被打开时，</span><font face=Calibri>Wizard Extension</font><span>会通知</span><font face=Calibri>Recipe</font><span>让</span><font face=Calibri>Wizard</font><span>收集参数值。在</span><font face=Calibri>Template</font><span>被打开后，通知</span><font face=Calibri>Recipe</font><span>执行可能有的</span><font face=Calibri>Action</font><span>，对</span><font face=Calibri>template</font><span>创建的解决方案项目进行进一步的转换操作。</span></font></p>
<p><font face=Calibri color=#1f497d>&nbsp;</font></p>
<p><font color=#1f497d><span>以上的每个元素被收集后和配置文件一同放入</span><font face=Calibri>Guidance Package</font><span>中，作为一个单元进行安装。这些</span><font face=Calibri>Guidance Package</font><span>在</span><font face=Calibri>Visual Studio 2005</font><span>里可以用</span><font face=Calibri>Guidance Package Manager</font><span>进行管理。当</span><font face=Calibri>Guidance Package</font><span>完成安装并在解决方案中</span><font face=Calibri>Enable</font><span>之后，就可以运行</span><font face=Calibri>Recipe</font><span>来执行特定的开发工作了。<br><br><br>GAT&amp;GAX这是两个不错的架构师工具,一般来说,由架构师制作一些Recipes供开发人员使用。本人近期正在学习ＧＡＴ的开发，并准备做一些Recipes，希望希望学习的朋友一起交流。</span></font></p>
<img src ="http://www.cnblogs.com/zmsx/aggbug/760854.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42100/" target="_blank">[新闻]2008年9月5日科技博客精选</a>]]></description></item><item><title>技巧/诀窍：在ASP.NET中重写URL</title><link>http://www.cnblogs.com/zmsx/archive/2007/05/20/753201.html</link><dc:creator>圣炎￠天乐</dc:creator><author>圣炎￠天乐</author><pubDate>Sun, 20 May 2007 07:16:00 GMT</pubDate><guid>http://www.cnblogs.com/zmsx/archive/2007/05/20/753201.html</guid><wfw:comment>http://www.cnblogs.com/zmsx/comments/753201.html</wfw:comment><comments>http://www.cnblogs.com/zmsx/archive/2007/05/20/753201.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/zmsx/comments/commentRss/753201.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/zmsx/services/trackbacks/753201.html</trackback:ping><description><![CDATA[<h5><strong>为什么URL映射和重写很重要？</strong></h5>
<p>下面是开发人员想要对URL有更大的灵活性的最常见的场景： </p>
<p>1) 处理这样的情形：你要更改你的web应用中网页的结构，但你同时也要确保在你移动网页后，那些被人收藏的老URL不会成为死链接。重写URL允许你透明地将请求转交到新的网页地址而不出错。 </p>
<p>2) 在象Google，Yahoo 和 Live 这样的搜索引擎中提高你网站上网页的搜索相关性。具体地来说，URL重写经常能使你在你网站上网页的URL里更加容易地嵌入关键词，这么做往往会增加别人点击你的链接的机会。从使用查询字符串参数到使用完全限定(fully qualified)的URL也能在某些情形下提高你在搜索引擎结果中的优先顺序。使用强制referring链接使用同样的大小写(same case)和URL入口(譬如，使用weblogs.asp.net/scottgu 而不是 weblogs.asp.net/scottgu/default.aspx)的技术也能避免因跨越多个URL而造成的网页排名(pagerank)的降低(avoid diluting your pagerank across multiple URLs)，从而增加你的搜索结果。 </p>
<p>在一个搜索引擎日渐驱动网站访问量的世界里，在你的网页排名上稍微得到一些提高就能给你的业务带来不错的投资回报(ROI)。逐渐地，这驱使开发人员使用URL重写以及其他SEO(搜索引擎优化 )技术来优化网站(注，SEO是个步调很快的空间，增加你的搜索相关性的建议月月在演变)。想了解一些关于搜索引擎优化方面好的建议的话，我建议你阅读一下《<a href="http://www.ssw.com.au/SSW/Standards/Rules/RulesToBetterGoogleRankings.aspx" target=_blank><font color=#002c99>SSW Rules to Better Google Rankings (SSW的提高Google排名之要领)</font></a>》，以及MarketPosition关于《<a href="http://www.marketposition.com/blog/archives/2006/04/how_urls_can_af.html" target=_blank><font color=#002c99>how URLs can affect top search engine ranking (URL会如何影响顶级搜索引擎排名)</font></a>》的文章。 </p>
<h5><strong>例程的URL重写场景</strong></h5>
<p>为这个博客贴子起见，我将假设我们将在一个应用里建造一套电子商务的产品目录网页，产品是按种类来组织的(譬如，图书，录像，CD，DVD等等)。 </p>
<p>让我们假定一开始我们有个网页叫Products.aspx，通过查询字符串参数接受一个类别名称，相应地过滤显示的产品。与这个Products.aspx网页对应类别的URL看上去象这样：</p>
<div style="BORDER-RIGHT: white 2px ridge; PADDING-RIGHT: 10px; BORDER-TOP: white 2px ridge; PADDING-LEFT: 10px; FONT-SIZE: 10pt; PADDING-BOTTOM: 10px; MARGIN: 10px; BORDER-LEFT: white 2px ridge; PADDING-TOP: 10px; BORDER-BOTTOM: white 2px ridge; FONT-FAMILY: courier new; BACKGROUND-COLOR: #eeeeee; WORD-WRAP: break-word">http://www.store.com/products.aspx?category=books<br>http://www.store.com/products.aspx?category=DVDs<br>http://www.store.com/products.aspx?category=CDs </div>
<p>&nbsp;</p>
<p>但我们不想使用查询字符串来呈示每个类别，我们想修改应用，让每个产品类别对搜索引擎来说看上去象是一个独特的URL，并且在实际的URL中嵌入关键词(而不是通过查询字符串参数)。我们将在这个博客帖子剩下来的篇幅里，讨论一下达成这个目的我们可以采取的4种不同方法。 </p>
<p><strong>方法一：使用Request.PathInfo 参数而不是查询字符串</strong></p>
<p>我将示范的第一个方法根本不使用URL重写，而是使用ASP.NET中不太为人所知的一个特性，Request的PathInfo属性。为帮助解释这个属性的有用之处，考虑一下我们电子商店下面这些URL的情形： </p>
<div style="BORDER-RIGHT: white 2px ridge; PADDING-RIGHT: 10px; BORDER-TOP: white 2px ridge; PADDING-LEFT: 10px; FONT-SIZE: 10pt; PADDING-BOTTOM: 10px; MARGIN: 10px; BORDER-LEFT: white 2px ridge; PADDING-TOP: 10px; BORDER-BOTTOM: white 2px ridge; FONT-FAMILY: courier new; BACKGROUND-COLOR: #eeeeee; WORD-WRAP: break-word">http://www.store.com/products.aspx/Books<br>http://www.store.com/products.aspx/DVDs<br>http://www.store.com/products.aspx/CDs</div>
<p>你会在上面这些URL中注意到的一个东西是，他们不再含有查询字符串值，取而代之的是，类别参数的值是附加到URL上的，是以Products.aspx网页处理器名称之后的/参数 值的方式出现的。然后，一个自动化的搜索引擎爬虫(search engine crawler)会把这些URL解释成三个不同的URL，而不是一个URL带有三个不同的输入值 (搜索引擎是不理会文件扩展名的，只把它当作URL中的另一个字符而已)。 </p>
<p>你也许很想知道怎么在ASP.NET中处理这个附加的参数的情形。好消息是，这非常简单。只要使用Request的PathInfo属性就可以了，该属性返回URL中紧随 products.aspx 后面的那部分内容。所以，对上面这些URL， Request.PathInfo会分别返回 &#8220;/Books&#8221;， &#8220;/DVDs&#8221;，和 &#8220;/CDs&#8221;(万一你想知道的话， Request的Path 属性返回&#8220;/products.aspx&#8221; )。 </p>
<p>然后，你可以轻易地编写一个函数来获取产品类别，象这样(下面这个函数去除前面的斜杠字符，只返回&#8220;Books&#8221;，&#8220;DVDs&#8221;，或 &#8220;CDs&#8221;)： </p>
<p>&nbsp;</p>
<div style="BORDER-RIGHT: white 2px ridge; PADDING-RIGHT: 10px; BORDER-TOP: white 2px ridge; PADDING-LEFT: 10px; FONT-SIZE: 10pt; PADDING-BOTTOM: 10px; MARGIN: 10px; BORDER-LEFT: white 2px ridge; PADDING-TOP: 10px; BORDER-BOTTOM: white 2px ridge; FONT-FAMILY: courier new; BACKGROUND-COLOR: #eeeeee; WORD-WRAP: break-word">&nbsp;&nbsp;&nbsp;&nbsp;<font color=#0000ff>Function&nbsp;</font><font color=#000000>GetCategory()&nbsp;</font><font color=#0000ff>As&nbsp;String<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;</font><font color=#000000>(Request.PathInfo.Length&nbsp;</font><font color=#0000ff>=&nbsp;</font><font color=#800000>0</font><font color=#000000>)&nbsp;</font><font color=#0000ff>Then<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return&nbsp;</font><font color=#808080>""<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>Else<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return&nbsp;</font><font color=#000000>Request.PathInfo.Substring(</font><font color=#800000>1</font><font color=#000000>)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>End&nbsp;If<br><br>&nbsp;&nbsp;&nbsp;&nbsp;End&nbsp;Function</font> </div>
<p>&nbsp;</p>
<p><u>样例下载</u>：我建立的一个展示这个技术的样例应用可以<a href="http://www.scottgu.com/blogposts/urlrewrite/UrlRewrite_PathInfoApproach.zip" target=_blank><font color=#002c99>在这里下载</font></a>。这个样例和这个技术的很好的地方在于，为部署使用这个方法的ASP.NET应用，不需作任何服务器配置改动。在共享主机的环境里，这个技术也行之有效。 </p>
<h5><strong>方法二：使用HttpModule实现URL重写 </strong></h5>
<p>上述Request.PathInfo技术的替换方法是，利用ASP.NET提供的HttpContext.RewritePath方法。这个方法允许开发人员动态地重写收到的URL的处理路径，然后让ASP.NET使用刚重写过后的路径来继续执行请求。 </p>
<p>譬如，我们可以选择向大众呈示下列URL：</p>
<p>&nbsp;</p>
<div style="BORDER-RIGHT: white 2px ridge; PADDING-RIGHT: 10px; BORDER-TOP: white 2px ridge; PADDING-LEFT: 10px; FONT-SIZE: 10pt; PADDING-BOTTOM: 10px; MARGIN: 10px; BORDER-LEFT: white 2px ridge; PADDING-TOP: 10px; BORDER-BOTTOM: white 2px ridge; FONT-FAMILY: courier new; BACKGROUND-COLOR: #eeeeee; WORD-WRAP: break-word">http://www.store.com/products/Books.aspx<br>http://www.store.com/products/DVDs.aspx<br>http://www.store.com/products/CDs.aspx </div>
<p>&nbsp;</p>
<p>在外界看来，网站上有三个单独的网页(对搜索爬虫而言，这看上去很棒)。通过使用 HttpContext的RewritePath方法，我们可以在这些请求刚进入服务器时，动态地把收到的URL重写成单个Products.aspx网页接受一个查询字符串的类别名称或者PathInfo参数。譬如，我们可以使用Global.asax中的Application_BeginRequest事件，来这么做： </p>
<div style="BORDER-RIGHT: white 2px ridge; PADDING-RIGHT: 10px; BORDER-TOP: white 2px ridge; PADDING-LEFT: 10px; FONT-SIZE: 10pt; PADDING-BOTTOM: 10px; MARGIN: 10px; BORDER-LEFT: white 2px ridge; PADDING-TOP: 10px; BORDER-BOTTOM: white 2px ridge; FONT-FAMILY: courier new; BACKGROUND-COLOR: #eeeeee; WORD-WRAP: break-word">&nbsp;&nbsp;&nbsp;&nbsp;<font color=#0000ff>void&nbsp;</font><font color=#000000>Application_BeginRequest(</font><font color=#0000ff>object&nbsp;</font><font color=#000000>sender,&nbsp;EventArgs&nbsp;e)&nbsp;{<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>string&nbsp;</font><font color=#000000>fullOrigionalpath&nbsp;</font><font color=#0000ff>=&nbsp;</font><font color=#000000>Request.Url.ToString()</font><font color=#0000ff>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;</font><font color=#000000>(fullOrigionalpath.Contains(</font><font color=#808080>"/Products/Books.aspx"</font><font color=#000000>))&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Context.RewritePath(</font><font color=#808080>"/Products.aspx?Category=Books"</font><font color=#000000>)</font><font color=#0000ff>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#000000>}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>else&nbsp;if&nbsp;</font><font color=#000000>(fullOrigionalpath.Contains(</font><font color=#808080>"/Products/DVDs.aspx"</font><font color=#000000>))&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Context.RewritePath(</font><font color=#808080>"/Products.aspx?Category=DVDs"</font><font color=#000000>)</font><font color=#0000ff>;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#000000>}<br>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</font> </div>
<p>&nbsp;</p>
<p>手工编写象上面这样的编码的坏处是，很枯燥乏味，而且容易犯错。我建议你别自己写，而是使用网上现成的HttpModule来完成这项工作。这有几个你现在就可以下载和使用的免费的HttpModule： </p>
<ul>
    <li><a href="http://urlrewriter.net/" target=_blank><font color=#002c99>UrlRewriter.net</font></a> </li>
    <li><a href="http://www.urlrewriting.net/en/Default.aspx" target=_blank><font color=#002c99>UrlRewriting.net</font></a></li>
</ul>
<p>这些模块允许你用声明的方式在你应用的web.config文件里表达匹配规则。譬如，在你应用的web.config文件里使用<a href="http://urlrewriter.net/" target=_blank><font color=#002c99>UrlRewriter.Net模块</font></a>来把上面的那些URL映射到单个Products.aspx页上，我们只要把这个web.config文件添加到我们的应用里去就可以了(不用任何编码)： </p>
<p>&nbsp;</p>
<div style="BORDER-RIGHT: white 2px ridge; PADDING-RIGHT: 10px; BORDER-TOP: white 2px ridge; PADDING-LEFT: 10px; FONT-SIZE: 10pt; PADDING-BOTTOM: 10px; MARGIN: 10px; BORDER-LEFT: white 2px ridge; PADDING-TOP: 10px; BORDER-BOTTOM: white 2px ridge; FONT-FAMILY: courier new; BACKGROUND-COLOR: #eeeeee; WORD-WRAP: break-word"><font color=#0000ff>&lt;</font><font color=#800000>?xml</font><font color=#ff0000>&nbsp;version</font><font color=#0000ff>="1.0"?&gt;</font><font color=#000000><br><br></font><font color=#0000ff>&lt;</font><font color=#800000>configuration</font><font color=#0000ff>&gt;</font><font color=#000000><br><br>&nbsp;&nbsp;</font><font color=#0000ff>&lt;</font><font color=#800000>configSections</font><font color=#0000ff>&gt;</font><font color=#000000><br>&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>&lt;</font><font color=#800000>section</font><font color=#ff0000>&nbsp;name</font><font color=#0000ff>="rewriter"</font><font color=#ff0000>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;requirePermission</font><font color=#0000ff>="false"</font><font color=#ff0000>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type</font><font color=#0000ff>="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler,&nbsp;Intelligencia.UrlRewriter"</font><font color=#ff0000>&nbsp;</font><font color=#0000ff>/&gt;<br>&nbsp;&nbsp;&lt;/</font><font color=#800000>configSections</font><font color=#0000ff>&gt;</font><font color=#000000><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;</font><font color=#0000ff>&lt;</font><font color=#800000>system.web</font><font color=#0000ff>&gt;</font><font color=#000000><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>&lt;</font><font color=#800000>httpModules</font><font color=#0000ff>&gt;</font><font color=#000000><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>&lt;</font><font color=#800000>add</font><font color=#ff0000>&nbsp;name</font><font color=#0000ff>="UrlRewriter"</font><font color=#ff0000>&nbsp;type</font><font color=#0000ff>="Intelligencia.UrlRewriter.RewriterHttpModule,&nbsp;Intelligencia.UrlRewriter"/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/</font><font color=#800000>httpModules</font><font color=#0000ff>&gt;</font><font color=#000000><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;</font><font color=#0000ff>&lt;/</font><font color=#800000>system.web</font><font color=#0000ff>&gt;</font><font color=#000000><br><br>&nbsp;&nbsp;</font><font color=#0000ff>&lt;</font><font color=#800000>rewriter</font><font color=#0000ff>&gt;</font><font color=#000000><br>&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>&lt;</font><font color=#800000>rewrite</font><font color=#ff0000>&nbsp;url</font><font color=#0000ff>="~/products/books.aspx"</font><font color=#ff0000>&nbsp;to</font><font color=#0000ff>="~/products.aspx?category=books"</font><font color=#ff0000>&nbsp;</font><font color=#0000ff>/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;</font><font color=#800000>rewrite</font><font color=#ff0000>&nbsp;url</font><font color=#0000ff>="~/products/CDs.aspx"</font><font color=#ff0000>&nbsp;to</font><font color=#0000ff>="~/products.aspx?category=CDs"</font><font color=#ff0000>&nbsp;</font><font color=#0000ff>/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;</font><font color=#800000>rewrite</font><font color=#ff0000>&nbsp;url</font><font color=#0000ff>="~/products/DVDs.aspx"</font><font color=#ff0000>&nbsp;to</font><font color=#0000ff>="~/products.aspx?category=DVDs"</font><font color=#ff0000>&nbsp;</font><font color=#0000ff>/&gt;<br>&nbsp;&nbsp;&lt;/</font><font color=#800000>rewriter</font><font color=#0000ff>&gt;</font><font color=#000000>&nbsp;&nbsp;<br>&nbsp;&nbsp;<br></font><font color=#0000ff>&lt;/</font><font color=#800000>configuration</font><font color=#0000ff>&gt;</font><font color=#000000>&nbsp;</font> </div>
<p>&nbsp;</p>
<p>上面的HttpModule URL重写模块还支持正则表达式和URL模式匹配(以避免你在web.config 文件里硬写每个URL)。所以，不用写死类别名称，你可以象下面这样重写匹配规则，把类别名称动态地从任何/products/[类别].aspx组合的URL里取出来： </p>
<p>&nbsp;</p>
<div style="BORDER-RIGHT: white 2px ridge; PADDING-RIGHT: 10px; BORDER-TOP: white 2px ridge; PADDING-LEFT: 10px; FONT-SIZE: 10pt; PADDING-BOTTOM: 10px; MARGIN: 10px; BORDER-LEFT: white 2px ridge; PADDING-TOP: 10px; BORDER-BOTTOM: white 2px ridge; FONT-FAMILY: courier new; BACKGROUND-COLOR: #eeeeee; WORD-WRAP: break-word">&nbsp;&nbsp;<font color=#0000ff>&lt;</font><font color=#800000>rewriter</font><font color=#0000ff>&gt;</font><font color=#000000><br>&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>&lt;</font><font color=#800000>rewrite</font><font color=#ff0000>&nbsp;url</font><font color=#0000ff>="~/products/(.+).aspx"</font><font color=#ff0000>&nbsp;to</font><font color=#0000ff>="~/products.aspx?category=$1"</font><font color=#ff0000>&nbsp;</font><font color=#0000ff>/&gt;<br></font><font color=#0000ff>&nbsp;&nbsp;&lt;/</font><font color=#800000>rewriter</font><font color=#0000ff>&gt;</font><font color=#000000>&nbsp;&nbsp;<br></font></div>
<p>&nbsp;</p>
<p>这使得你的编码极其干净，并且扩展性非常之好。</p>
<p><u>样例下载</u>：我建立的一个使用UrlRewriter.Net模块展示这个技术的样例应用可以<a href="http://www.scottgu.com/blogposts/urlrewrite/UrlRewrite_HttpModule1.zip" target=_blank><font color=#002c99>在这里下载</font></a>。 </p>
<p>这个样例和这个技术的很好的地方在于，为部署使用这个方法的ASP.NET应用，不需作任何服务器配置改动。在设置为中等信任安全等级(medium trust)的共享主机的环境里，这个技术也行之有效 (只要把文件FTP/XCOPY到远程服务器就可以了，不需要安装)。 </p>
<h5><strong>方法三：在IIS7中使用HttpModule 实现无扩展名的URL重写</strong></h5>
<p>上述的HttpModule方法在你要重写的URL含有.aspx 扩展名或者包含另一个被设置为ASP.NET处理的扩展名的情形下一切都工作。你这么做的话，不需要任何特定的服务器配置，你只要把你的应用拷贝到远程服务器，它会正常工作的。 </p>
<p>但有的时候，你要重写的URL要么拥有一个不为ASP.NET处理的文件扩展名(譬如， .jpg， .gif， 或 .htm)，要么根本没有扩展名。譬如，我们也许要把这些URL呈示成公开的产品目录网页(注意，它们没有 .aspx 扩展名)： </p>
<p>&nbsp;</p>
<div style="BORDER-RIGHT: white 2px ridge; PADDING-RIGHT: 10px; BORDER-TOP: white 2px ridge; PADDING-LEFT: 10px; FONT-SIZE: 10pt; PADDING-BOTTOM: 10px; MARGIN: 10px; BORDER-LEFT: white 2px ridge; PADDING-TOP: 10px; BORDER-BOTTOM: white 2px ridge; FONT-FAMILY: courier new; BACKGROUND-COLOR: #eeeeee; WORD-WRAP: break-word">http://www.store.com/products/Books<br>http://www.store.com/products/DVDs<br>http://www.store.com/products/CDs</div>
<p>在 IIS5 和 IIS6 中，使用ASP.NET处理上面这样的URL不是很容易。 IIS 5/6 使得在ISAPI扩展(ASP.NET就是这样一个扩展)里非常难以重写这些类型的URLS。你需要做的是使用ISAPI过滤器在IIS请求管道(request pipeline)的较早期实现重写。我将在下面的第四个方法里示范如何在 IIS5/6 实现这样的重写。 </p>
<p>但好消息是， <a href="http://www.iis.net/" target=_blank><font color=#002c99>IIS 7.0</font></a>使得处理这类情形容易之极。你现在可以在 IIS 请求管道的任何地方执行一个HttpModule，这意味着你可以使用上面的<a href="http://urlrewriter.net/" target=_blank><font color=#002c99>URLRewriter 模块</font></a> 来处理和重写无扩展名的URL(甚至是带有 .asp，.php，或 .jsp 扩展名的URL)。下面示范了你在IIS7中该如何配置： </p>
<p>&nbsp;</p>
<div style="BORDER-RIGHT: white 2px ridge; PADDING-RIGHT: 10px; BORDER-TOP: white 2px ridge; PADDING-LEFT: 10px; FONT-SIZE: 10pt; PADDING-BOTTOM: 10px; MARGIN: 10px; BORDER-LEFT: white 2px ridge; PADDING-TOP: 10px; BORDER-BOTTOM: white 2px ridge; FONT-FAMILY: courier new; BACKGROUND-COLOR: #eeeeee; WORD-WRAP: break-word"><font color=#0000ff>&lt;</font><font color=#800000>?xml</font><font color=#ff0000>&nbsp;version</font><font color=#0000ff>="1.0"</font><font color=#ff0000>&nbsp;encoding</font><font color=#0000ff>="UTF-8"?&gt;</font><font color=#000000><br><br></font><font color=#0000ff>&lt;</font><font color=#800000>configuration</font><font color=#0000ff>&gt;</font><font color=#000000><br><br>&nbsp;&nbsp;</font><font color=#0000ff>&lt;</font><font color=#800000>configSections</font><font color=#0000ff>&gt;</font><font color=#000000><br>&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>&lt;</font><font color=#800000>section</font><font color=#ff0000>&nbsp;name</font><font color=#0000ff>="rewriter"</font><font color=#ff0000>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;requirePermission</font><font color=#0000ff>="false"</font><font color=#ff0000>&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type</font><font color=#0000ff>="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler,&nbsp;Intelligencia.UrlRewriter"</font><font color=#ff0000>&nbsp;</font><font color=#0000ff>/&gt;<br>&nbsp;&nbsp;&lt;/</font><font color=#800000>configSections</font><font color=#0000ff>&gt;</font><font color=#000000><br>&nbsp;&nbsp;<br>&nbsp;&nbsp;</font><font color=#0000ff>&lt;</font><font color=#800000>system.web</font><font color=#0000ff>&gt;</font><font color=#000000><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>&lt;</font><font color=#800000>httpModules</font><font color=#0000ff>&gt;</font><font color=#000000><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>&lt;</font><font color=#800000>add</font><font color=#ff0000>&nbsp;name</font><font color=#0000ff>="UrlRewriter"</font><font color=#ff0000>&nbsp;type</font><font color=#0000ff>="Intelligencia.UrlRewriter.RewriterHttpModule,&nbsp;Intelligencia.UrlRewriter"</font><font color=#ff0000>&nbsp;</font><font color=#0000ff>/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/</font><font color=#800000>httpModules</font><font color=#0000ff>&gt;</font><font color=#000000><br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;</font><font color=#0000ff>&lt;/</font><font color=#800000>system.web</font><font color=#0000ff>&gt;</font><font color=#000000><br><br>&nbsp;&nbsp;</font><font color=#0000ff>&lt;</font><font color=#800000>system.webServer</font><font color=#0000ff>&gt;</font><font color=#000000><br><br>&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>&lt;</font><font color=#800000>modules</font><font color=#ff0000>&nbsp;runAllManagedModulesForAllRequests</font><font color=#0000ff>="true"&gt;</font><font color=#000000><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>&lt;</font><font color=#800000>add</font><font color=#ff0000>&nbsp;name</font><font color=#0000ff>="UrlRewriter"</font><font color=#ff0000>&nbsp;type</font><font color=#0000ff>="Intelligencia.UrlRewriter.RewriterHttpModule"</font><font color=#ff0000>&nbsp;</font><font color=#0000ff>/&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&lt;/</font><font color=#800000>modules</font><font color=#0000ff>&gt;</font><font color=#000000><br><br>&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>&lt;</font><font color=#800000>validation</font><font color=#ff0000>&nbsp;validateIntegratedModeConfiguration</font><font color=#0000ff>="false"</font><font color=#ff0000>&nbsp;</font><font color=#0000ff>/&gt;<br><br>&nbsp;&nbsp;&lt;/</font><font color=#800000>system.webServer</font><font color=#0000ff>&gt;</font><font color=#000000><br><br>&nbsp;&nbsp;</font><font color=#0000ff>&lt;</font><font color=#800000>rewriter</font><font color=#0000ff>&gt;</font><font color=#000000><br>&nbsp;&nbsp;&nbsp;&nbsp;</font><font color=#0000ff>&lt;</font><font color=#800000>rewrite</font><font color=#ff0000>&nbsp;url</font><font color=#0000ff>="~/products/(.+)"</font><font color=#ff0000>&nbsp;to</font><font color=#0000ff>="~/products.aspx?category=$1"</font><font color=#ff0000>&nbsp;</font><font color=#0000ff>/&gt;<br>&nbsp;&nbsp;&lt;/</font><font color=#800000>rewriter</font><font color=#0000ff>&gt;</font><font color=#000000><br>&nbsp;&nbsp;<br></font><font color=#0000ff>&lt;/</font><font color=#800000>configuration</font><font color=#0000ff>&gt;</font><font color=#000000></font> </div>
<p>&nbsp;</p>
<p>注意一下&lt;system.webServer&gt;内&lt;modules&gt;部分设置为true的runAllManagedModulesForAllRequests属性。这个属性确保来自Intelligencia的UrlRewriter.Net模块(是在IIS7正式发布前编写的)，会被调用，有机会重写到服务器的所有URL请求(包括文件夹)。上面的web.config文件非常酷之处在于： </p>
<p>1) 它在任何IIS7机器上都会工作，你不需要管理员在远程主机上启用任何东西，它也能在设置为中等信任安全等级(medium trust)的共享主机的环境场景下工作。 </p>
<p>2) 因为我在&lt;httpModules&gt;和 IIS7 的&lt;modules&gt; 部分同时配置了UrlRewriter，我既能在 VS内置的web服务器(即Cassini)中，也能在IIS7下使用同样的URL重写规则。两者完全支持无扩展名的URL重写。这使得测试和开发非常容易。 </p>
<p>IIS 7.0 将在今年的晚些时候作为Windows Longhorn服务器的一部分发布，将在几个星期内随Beta3版本的发布支持go-live许可。由于添加到IIS7中的所有的新宿主(hosting)特性，我们预期主机供应商将会非常快地开始积极提供IIS7账号，这意味着你应该很快就可以开始利用上述的无扩展名的URL重写支持。我们将在 IIS7 RTM 时段里发布一个为微软所支持的URL重写模块，该模板是免费的，你可以在IIS7上使用，并且这模块将对你web服务器上的所有内容的高级URL重写场景提供很好的支持。 </p>
<p>样例下载：我建立的一个使用IIS7和UrlRewriter.Net模块展示无扩展名URL重写技术的样例应用可以<a href="http://www.scottgu.com/blogposts/urlrewrite/UrlRewrite_HttpModule2.zip" target=_blank><font color=#002c99>在这里下载</font></a>。 </p>
<h5><strong>方法四：在IIS5和IIS6中使用 ISAPIRewrite 来实现无扩展名的URL重写 </strong></h5>
<p>如果你不想等到IIS7出来才利用无扩展名的URL重写，那么你最好的措施是使用ISAPI过滤器来重写URL。我知道有2个ISAPI过滤器方案，你也许要去看一下： </p>
<ul>
    <li><a href="http://www.isapirewrite.com/" target=_blank><font color=#002c99>Helicon Tech's ISAPI Rewrite</font></a>: 他们提供一个99美元(可免费试用30天)的ISAPI URL重写产品完整版，以及一个免费的轻量级版本。 </li>
    <li><a href="http://cheeso.members.winisp.net/IIRF.aspx" target=_blank><font color=#002c99>Ionic's ISAPI Rewrite</font></a>: 这可以免费下载(源码和可执行文件都可以下载)</li>
</ul>
<p>我没亲手用过上面的产品，虽然我听过到对这2个产品的好评。<a href="http://www.hanselman.com/blog/CommentView.aspx?guid=91da8c0a-537e-4bbf-abac-c6652dee7057" target=_blank><font color=#002c99>Scott Hanselman</font></a>和 <a href="http://www.codinghorror.com/blog/archives/000797.html" target=_blank><font color=#002c99>Jeff Atwood</font></a> 最近都写了精彩的博客贴子讲述使用这些产品的体验，同时提供了一些如何在这些产品中配置匹配规则的例子。Helicon Tech的ISAPI Rewrite的规则使用跟 Apache的mod_rewrite同样的句法，譬如(<a href="http://www.codinghorror.com/blog/archives/000797.html" target=_blank><font color=#002c99>取自Jeff的博客贴子</font></a>)： </p>
<p>&nbsp;</p>
<div style="BORDER-RIGHT: white 2px ridge; PADDING-RIGHT: 10px; BORDER-TOP: white 2px ridge; PADDING-LEFT: 10px; FONT-SIZE: 10pt; PADDING-BOTTOM: 10px; MARGIN: 10px; BORDER-LEFT: white 2px ridge; PADDING-TOP: 10px; BORDER-BOTTOM: white 2px ridge; FONT-FAMILY: courier new; BACKGROUND-COLOR: #eeeeee; WORD-WRAP: break-word">[ISAPI_Rewrite]<br>#&nbsp;fix&nbsp;missing&nbsp;slash&nbsp;on&nbsp;folders<br>#&nbsp;note,&nbsp;this&nbsp;assumes&nbsp;we&nbsp;have&nbsp;no&nbsp;folders&nbsp;with&nbsp;periods!<br>RewriteCond&nbsp;Host:&nbsp;(.*)<br>RewriteRule&nbsp;([^.?]+[^.?/])&nbsp;http\://$1$2/&nbsp;[RP]<br><br>#&nbsp;remove&nbsp;index&nbsp;pages&nbsp;from&nbsp;URLs<br>RewriteRule&nbsp;(.*)/default.htm$&nbsp;$1/&nbsp;[I,RP]<br>RewriteRule&nbsp;(.*)/default.aspx$&nbsp;$1/&nbsp;[I,RP]<br>RewriteRule&nbsp;(.*)/index.htm$&nbsp;$1/&nbsp;[I,RP]<br>RewriteRule&nbsp;(.*)/index.html$&nbsp;$1/&nbsp;[I,RP]<br><br>#&nbsp;force&nbsp;proper&nbsp;www.&nbsp;prefix&nbsp;on&nbsp;all&nbsp;requests<br>RewriteCond&nbsp;%HTTP_HOST&nbsp;^test\.com&nbsp;[I]<br>RewriteRule&nbsp;^/(.*)&nbsp;http://www.test.com/$1&nbsp;[RP]<br><br>#&nbsp;only&nbsp;allow&nbsp;whitelisted&nbsp;referers&nbsp;to&nbsp;hotlink&nbsp;images<br>RewriteCond&nbsp;Referer:&nbsp;(?!http://(?:www\.good\.com|www\.better\.com)).+<br>RewriteRule&nbsp;.*\.(?:gif|jpg|jpeg|png)&nbsp;/images/block.jpg&nbsp;[I,O] </div>
<p>&nbsp;</p>
<p>一定要去读一下<a href="http://www.hanselman.com/blog/CommentView.aspx?guid=91da8c0a-537e-4bbf-abac-c6652dee7057" target=_blank><font color=#002c99>Scott</font></a>和<a href="http://www.codinghorror.com/blog/archives/000797.html" target=_blank><font color=#002c99>Jeff的贴子</font></a>以了解这些ISAPI 模块的详情，以及你都能用它们做些什么。 </p>
<p>注：使用ISAPI过滤器的一个坏处是，共享主机环境一般不允许你安装这样的组件，所以你要用它们的话，你要么需要一个专用的虚拟主机服务器，要么需要一个专用的主机服务器。但，如果你有一个主机计划允许你安装ISAPI的话，这会在IIS5/6下会提供最大的灵活性，让你过渡到IIS7推出为止。 </p>
<h5><strong>在URL重写里处理ASP.NET PostBack</strong></h5>
<p>大家在使用ASP.NET和重写URL时经常遇到的一个疑难杂症跟处理postback场景有关。具体地来说，当你在一个网页上放置一个 &lt;form runat="server"&gt; 控件时，ASP.NET 会自动地默认输出标识的action属性指向当前所在页面。当使用URL重写时，会出现这样的问题，&lt;form&gt; 控件显示的URL不是原先请求的URL(譬如，/products/books)，而是重写过后的URL(譬如，/products.aspx?category=books)。这意味着，当你做一个postback到服务器时，URL不再是你原先干净利落的那个了。 </p>
<p>在 ASP.NET 1.0 和1.1 中，大家经常诉诸于继承&lt;form&gt; 控件生成他们自己的控件，来正确地输出要使用的action属性。虽然这可以工作，但结果有点乱，因为这意味着你需要更新你所有的页面来使用这个另外的表单控件，而且有时在Visual Studio所见即所得设计器里也会遇上问题。 </p>
<p>好消息是，在ASP.NET 2.0中，有个比较干净的诀窍你可以用来重写&lt;form&gt;控件的action属性。具体地来说，你可利用新的<a href="http://blog.joycode.com/scottgu/archive/2006/12/01/88374.aspx" target=_blank><font color=#002c99>ASP.NET 2.0控件适配器</font></a>扩展架构来定制控件的输出，用你提供的值来覆盖action属性的值。<u>这不要求在你的.aspx页面里做任何编码改动</u>，而只要在你的/app_browsers文件夹里添加一个.browser文件，注册使用一个控件适配类即可输出新的action属性。
<form>
    </p>
    <p>&nbsp;<img height=268 alt="" src="http://www.cnblogs.com/images/cnblogs_com/zmsx/step1.jpg" width=228 border=0></p>
    <p>&nbsp;</p>
    <p>你可在这里查看一个我创建的样例实现，其展示了该<a href="http://www.scottgu.com/blogposts/urlrewrite/UrlRewrite_HttpModule1.zip" target=_blank><font color=#002c99>如何实现与URL重写协作的表单控件适配器(Form Control Adapter)</font></a> 。它在我上面使用的第一个(Request.PathInfo)，第二个方法(UrlRewriter.Net 模块)中都工作，它使用Request的RawUrl属性获取原先没改写过的 URL来显示。而在第四个方法(ISAPIRewrite过滤器)中，你可以获取ISAPI过滤器保存在Request.ServerVariables["HTTP_X_REWRITE_URL"] 中的原先的URL值。 </p>
    <p>我上面的FormRewriter类实现在标准的ASP.NET和ASP.NET AJAX 1.0网页上应该都工作(如果你遇上问题的话，告诉我一声)。</p>
    <h5><strong>正确地处理CSS和图像引用</strong></h5>
    <p>不少人在第一次使用URL重写时，有时会遇上一个疑难杂症，就是他们发现他们的图像和CSS样式表引用有时会停止工作。这是因为他们在HTML网页里有对这些文件的相对引用，当你开始在应用里重写URL时，你需要意识到浏览器经常会在不同的逻辑层次结构层上(logical hierarchy levels)请求文件，而不是实际存储在服务器上的东西。 </p>
    <p>譬如，如果我们上面的/products.aspx网页对.aspx 网页里的logo.jpg有一个相对引用，但是通过 /products/books.aspx这个URL来请求的，那么浏览器在显示网页时，将会发出一个对/products/logo.jpg的请求，而不是对/logo.jpg的请求。要正确地引用这个文件，确认你用根目录限定了(root qualify)CSS和图像引用(&#8220;/style.css&#8221;，而不是 &#8220;style.css&#8221;)。对于ASP.NET控件，你也可以使用&#8220;~&#8221;句法从你应用的根目录来引用文件(譬如，&lt;asp:image imageurl="~/images/logo.jpg" runat="server"/&gt;) 。 </p>
</form>
<img src ="http://www.cnblogs.com/zmsx/aggbug/753201.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42099/" target="_blank">[新闻]SNS网站风靡影响工作效率 公司下令封杀</a>]]></description></item><item><title>微软发布WF教程及大量示例</title><link>http://www.cnblogs.com/zmsx/archive/2007/05/20/753199.html</link><dc:creator>圣炎￠天乐</dc:creator><author>圣炎￠天乐</author><pubDate>Sun, 20 May 2007 07:12:00 GMT</pubDate><guid>http://www.cnblogs.com/zmsx/archive/2007/05/20/753199.html</guid><wfw:comment>http://www.cnblogs.com/zmsx/comments/753199.html</wfw:comment><comments>http://www.cnblogs.com/zmsx/archive/2007/05/20/753199.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/zmsx/comments/commentRss/753199.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/zmsx/services/trackbacks/753199.html</trackback:ping><description><![CDATA[<div class=postbody>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体">继前面<span lang=EN-US><a href="http://www.cnblogs.com/dflying/archive/2006/12/01/578715.html"><font color=#002c99><span lang=EN-US><span lang=EN-US>微软公司发布Windows Communication Foundation (WCF)</span></span><span lang=EN-US><span lang=EN-US>和Windows CardSpace</span></span><span lang=EN-US><span lang=EN-US>的示例程序</span></span></font></a></span>之后，微软今天又发布了<span lang=EN-US>WF</span>的教程和大量示例，对于学习<span lang=EN-US>WF</span>的朋友来说，是一份很好的学习资料。下载包括教程和示例两个压缩包，在示例部分包括如下的<span lang=EN-US>Application</span>：<span lang=EN-US><o:p></o:p></span></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt; LINE-HEIGHT: 200%; mso-list: l0 level1 lfo1; tab-stops: list 42.0pt"><span lang=EN-US style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang=EN-US style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体">OrderingStateMachine<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt; LINE-HEIGHT: 200%; mso-list: l0 level1 lfo1; tab-stops: list 42.0pt"><span lang=EN-US style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang=EN-US style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体">OutlookWorkflowWizard<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt; LINE-HEIGHT: 200%; mso-list: l0 level1 lfo1; tab-stops: list 42.0pt"><span lang=EN-US style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang=EN-US style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体">SpeechApplication<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt; LINE-HEIGHT: 200%; mso-list: l0 level1 lfo1; tab-stops: list 42.0pt"><span lang=EN-US style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang=EN-US style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体">TerminationTrackingService<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt; LINE-HEIGHT: 200%; mso-list: l0 level1 lfo1; tab-stops: list 42.0pt"><span lang=EN-US style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang=EN-US style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体">TrackingProfileDesigner<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt; LINE-HEIGHT: 200%; mso-list: l0 level1 lfo1; tab-stops: list 42.0pt"><span lang=EN-US style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang=EN-US style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体">WorkflowMonitor<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 42pt; TEXT-INDENT: -21pt; LINE-HEIGHT: 200%; mso-list: l0 level1 lfo1; tab-stops: list 42.0pt"><span lang=EN-US style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: Wingdings; mso-fareast-font-family: Wingdings; mso-bidi-font-family: Wingdings"><span style="mso-list: Ignore">l<span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang=EN-US style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体">WorkflowReflectionUtility<o:p></o:p></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体"><span lang=EN-US><o:p></o:p></span></span>&nbsp;</p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"><span lang=EN-US style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体"><v:shapetype id=_x0000_t75 coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype><o:p></o:p></span></p>
<span lang=EN-US style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体">
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: 200%"><span style="FONT-SIZE: 10pt; LINE-HEIGHT: 200%; FONT-FAMILY: 宋体">下载地址：<span lang=EN-US><a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c1863e23-482c-4b79-9f3c-417a92d8d1d9&amp;DisplayLang=en"><font color=#002c99>http://www.microsoft.com/downloads/details.aspx?FamilyID=c1863e23-482c-4b79-9f3c-417a92d8d1d9&amp;DisplayLang=en</font></a><o:p></o:p></span></span></p>
</span></div>
<img src ="http://www.cnblogs.com/zmsx/aggbug/753199.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42099/" target="_blank">[新闻]SNS网站风靡影响工作效率 公司下令封杀</a>]]></description></item><item><title>Web Service Software Factory </title><link>http://www.cnblogs.com/zmsx/archive/2007/05/20/753197.html</link><dc:creator>圣炎￠天乐</dc:creator><author>圣炎￠天乐</author><pubDate>Sun, 20 May 2007 07:10:00 GMT</pubDate><guid>http://www.cnblogs.com/zmsx/archive/2007/05/20/753197.html</guid><wfw:comment>http://www.cnblogs.com/zmsx/comments/753197.html</wfw:comment><comments>http://www.cnblogs.com/zmsx/archive/2007/05/20/753197.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/zmsx/comments/commentRss/753197.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/zmsx/services/trackbacks/753197.html</trackback:ping><description><![CDATA[<div class=postText>
<p><img height=400 alt="" src="http://www.cnblogs.com/images/cnblogs_com/zmsx/ServiceFactory.gif" width=424 border=0>Microsoft曾经大肆鼓吹Software Factory，而在SOA(Service-Oriented Architecture)在大型项目开发中崭露头角时，我们就不能忽略Web Service Software Factory，尤其是在Microsoft重磅推出WCF(Windows Communication Foundation)的前提下。</p>
<p>Web Service Software Factory通常简称为Service Factory，它不仅仅是一种软件设计思想，准确地说它集成了开发工具、模式、设计向导、文档以及源代码。通过它，能够帮助开发者通过架构设计、模式以及WCF等快速地创建Web Service。Service Factory的架构如图所示：</p>
<p align=center>&nbsp;</p>
<p>主要内容包含：<br>1、设计ASMX和WCF消息和服务接口；<br>2、建立统一的异常处理机制；<br>3、为领域模型创建业务实体对象；<br>4、完成业务实体对象与消息的转换；<br>5、设计、创建、调用数据访问层；<br>6、服务的实现、配置与安全；<br>7、项目向WCF的迁移；<br>8、为WCF服务实施安全；<br>9、提供消息的验证；</p>
<p>有关Service Factory的详细情况可以访问<a href="http://msdn.com/servicefactory" mce_href="http://msdn.com/servicefactory"><font color=#002c99>http://msdn.com/servicefactory</font></a>。</p>
<p>为了更好地帮助开发者理解Service Factory，Microsoft还提供了Service Factory Hands-on Lab。它提供了一套完整的练习，分别包括：<br>练习1：创建解决方案；<br>练习2：创建数据类型；<br>练习3：创建消息类型；<br>练习4：创建服务操作（Service Operation，类似于Web Service的Web方法）；<br>练习5：创建业务实体对象；<br>练习6：完成业务实体对象与消息的转换；<br>练习7：创建存储过程；<br>练习8：创建数据访问类；<br>练习9：调用数据访问层；<br>练习10：测试与客户端调用；</p>
<p>Service Factory Hands-on Lab是以一个实际的例子来开展的，其目的是为一个虚拟的酒业零售商Coho Winery提供会员服务。通过该练习，你可以从中体会到分层式架构设计、SOA的&#8220;服务自治&#8221;、基于消息的分布式处理系统、WCF、数据与消息以及单元测试、设计模式等诸多具有价值的技术与思想。</p>
<p>如欲了解Service Factory Hands-on Lab，并下载相关工具与代码，请访问<a href="http://www.codeplex.com/servicefactory/Wiki/View.aspx?title=HolStartHere" mce_href="http://www.codeplex.com/servicefactory/Wiki/View.aspx?title=HolStartHere"><font color=#002c99>What you'll see inside the lab</font></a> 。此外，要了解与关注Service Factory，可以访问<a href="http://www.codeplex.com/servicefactory" mce_href="http://www.codeplex.com/servicefactory"><font color=#002c99>http://www.codeplex.com/servicefactory</font></a>。</p>
</div>
<img src ="http://www.cnblogs.com/zmsx/aggbug/753197.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42099/" target="_blank">[新闻]SNS网站风靡影响工作效率 公司下令封杀</a>]]></description></item><item><title>SEO课程笔记(二)</title><link>http://www.cnblogs.com/zmsx/archive/2007/05/20/753195.html</link><dc:creator>圣炎￠天乐</dc:creator><author>圣炎￠天乐</author><pubDate>Sun, 20 May 2007 07:07:00 GMT</pubDate><guid>http://www.cnblogs.com/zmsx/archive/2007/05/20/753195.html</guid><wfw:comment>http://www.cnblogs.com/zmsx/comments/753195.html</wfw:comment><comments>http://www.cnblogs.com/zmsx/archive/2007/05/20/753195.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/zmsx/comments/commentRss/753195.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/zmsx/services/trackbacks/753195.html</trackback:ping><description><![CDATA[摘要: 标题（Title）： 网页优化可以说是从Title开始的。在搜索结果中，每个抓取内容的第一行显示的文字就是该页的Title，同样在浏览器中打开一个页面，地址栏上方显示的也是该页的Title。因此，Title可谓一个页面的核心。对Title的书写要注意以下问题： 1、title简短精炼，高度概括，含有关键词，而不是只有一个公司名。但关键词不宜过多，不要超过3个词组。企业网站的title通常以公司名+&nbsp;&nbsp;<a href='http://www.cnblogs.com/zmsx/archive/2007/05/20/753195.html'>阅读全文</a><img src ="http://www.cnblogs.com/zmsx/aggbug/753195.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42099/" target="_blank">[新闻]SNS网站风靡影响工作效率 公司下令封杀</a>]]></description></item><item><title>SEO课程笔记</title><link>http://www.cnblogs.com/zmsx/archive/2007/05/20/753193.html</link><dc:creator>圣炎￠天乐</dc:creator><author>圣炎￠天乐</author><pubDate>Sun, 20 May 2007 07:04:00 GMT</pubDate><guid>http://www.cnblogs.com/zmsx/archive/2007/05/20/753193.html</guid><wfw:comment>http://www.cnblogs.com/zmsx/comments/753193.html</wfw:comment><comments>http://www.cnblogs.com/zmsx/archive/2007/05/20/753193.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/zmsx/comments/commentRss/753193.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/zmsx/services/trackbacks/753193.html</trackback:ping><description><![CDATA[<p>PR值算法原理总体上基于下面2个前提： </p>
<p>1、一个网页被多次引用，则它可能是很重要的； <br>一个网页虽然没有被多次引用，但是被重要的网页引用，则它也可能是很重要的；一个网页的重要性被平均的传递到它所引用的网页。这种重要的网页称为权威（Authoritive）网页。 <font color=#ffffff></font></p>
<p>2、假定用户一开始随机的访问网页集合中的一个网页，然后跟随网页的链接向前浏览网页，不回退浏览，那么浏览下一个网页的概率就是被浏览网页的PageRank值 <br>影响PR值的因素 <br>PR值体现为从0到10的11个数值，在Google的工具栏上以一条横向绿色柱状图显示，0级情况下呈白色。它是针对网页而不是<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>，因此一个<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>的首页和内页往往有着迥然不同的PR值。由于Google市场拓展进程的原因，中文网页的PR值整体上低于英文网页。对中文<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>来说，拥有3级PR是基础， 4级PR算达标，5级PR可谓良好，而6、7级PR就算相当优秀的<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>。当然，由于PR最直接的影响因素是来自链接，因此这种评级并不代表内容的级别水准，<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>内容质量对PR的影响是间接的、长期的。根据PR值的算法原理，可知影响一个<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>（首页）PR值的因素主要包括： </p>
<p class=Zun726>&nbsp;</p>
<p>&nbsp;</p>
<p>1、<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>的导入链接质量： <br>根据前文对高质量导入链接的分析，则获得高PR值需要获得来自以下<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>的链接： </p>
<div class=Zun726></div>
<p>&nbsp;</p>
<p>◆ 加入<a class=wordstyle href="http://www.kuziyuan.com/article/6/" target=_blank>搜索</a>引擎分类目录与已经加入目录的<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>交换链接 <br>◆ 获得来自PR值不低于4并与你的主题相关或互补的<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>的链接 <br>◆ 你的链接出现在流量大、知名度高、频繁更新的重要<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>上（如新闻源） <br>◆ 与你交换链接的<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>具有很少导出链接 <br>◆ 与内容质量高的<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>链接（PR值上升潜力大） </p>
<div class=Zun726></div>
<p>&nbsp;</p>
<p>2、 导出链接数量： <br>根据PR计算原理，由于"一个网页的重要性被平均的传递到它所引用的网页"，因此反过来看，一个页面内过多的导出链接将潜在引起该页PR值的流失。但从内容的角度看，适当数量的与主题有关联的导出链接给<a class=wordstyle href="http://www.kuziyuan.com/article/6/" target=_blank>搜索</a>引擎带来良好的印象。因此，一个页面，尤其是首页的导出链接数量的把握，应该兼顾到PR值和关键词内容二者之间的平衡，即控制导出链接数量，以不超过10个为宜。 <font color=#ffffff></font></p>
<p>3、<a class=wordstyle href="http://www.kuziyuan.com/article/6/" target=_blank>搜索</a>引擎收录一个<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>的页面数量 <br>在探讨SEO的时候，人们过多关注核心关键词排名以及首页的表现情况，却往往忽略了一个极其重要的问题：即<a class=wordstyle href="http://www.kuziyuan.com/article/6/" target=_blank>搜索</a>引擎对一个<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>收录的页面数量。后者在SEO中也有着极其重要的意义。一个用核心关键词查询排名不佳的<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>，可能由于被抓取大量网页而在用户使用其它关键词查询时，内页获得前三甲排名。由于用户<a class=wordstyle href="http://www.kuziyuan.com/article/6/" target=_blank>搜索</a>时使用的关键词具有分散性，使得这种情况往往给<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>带来极大访问量。 <span class=Zun726></span></p>
<p>正因为收录页面的数量直接影响访问量，因此对PR值的影响也是很大的。被收录页面越多，主页PR越高。不过需要强调的是，此处所指的数量是指被收录数与<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>页面总数的比值，而不是收录页面的绝对数值。比如一个拥有50个页面的<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>被收录了10个页面，<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>的被收录比值是1/5，一个拥有5000个页面的<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>被收录了500个页面，比值是1/10，结果是收录10个页面比收录500个页面的<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>还更具排名优势。但对各个<a class=wordstyle href="http://www.kuziyuan.com/article/6/" target=_blank>搜索</a>引擎来说，究竟达到多大的比值算是良好，目前还没有相关的数据。 <font color=#ffffff></font></p>
<p>附：查询<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>收录页面数量：在<a class=wordstyle href="http://www.kuziyuan.com/article/6/" target=_blank>搜索</a>引擎中输入：site:www.kuziyuan.com（如果输入：site:admin5.com，则获得的是在admin5.com域名下所有二级域名的网页数量）。 </p>
<div class=Zun726></div>
<p>&nbsp;</p>
<p><br>第一部分：域名和主机对SEO的影响 <br>域名与主机是<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>的基础，商业<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>选择域名与主机尤其应注重形象和质量，为<a class=wordstyle href="http://www.kuziyuan.com/softdevp/25/" target=_blank>网络</a>营销开展打好坚实基础。同时，选择好域名与主机也是<a class=wordstyle href="http://www.kuziyuan.com/article/6/" target=_blank>搜索</a>引擎优化开始的第一步。 </p>
<p class=Zun726>&nbsp;</p>
<p>&nbsp;</p>
<p>域名选择与SEO <br>域名与IP：每一个<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>的域名对应一个IP地址，IP 地址是在<a class=wordstyle href="http://www.kuziyuan.com/softdevp/25/" target=_blank>网络</a>上分配给每台计算机或<a class=wordstyle href="http://www.kuziyuan.com/softdevp/25/" target=_blank>网络</a>设备的数字标识。域名必须经过域名服务器（DNS）进行解析，转换成数字IP，才能让计算机理解辨认，如：219.136.248.149 大部分中小企业<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>都存放在由一台服务器划分出来的若干虚拟主机上，由多个<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>共享一台服务器和IP地址，一些WEB服务器中有成百上千个域名共享一个IP地址的情况。这样对站长来说成本较低，但对<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>的<a class=wordstyle href="http://www.kuziyuan.com/article/6/" target=_blank>搜索</a>引擎排名带来以下潜在风险： <span class=Zun726></span></p>
<p>1、共享主机的其他<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>如果被<a class=wordstyle href="http://www.kuziyuan.com/article/6/" target=_blank>搜索</a>引擎惩罚，将或多或少波及你的<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>。如果同一IP下有一个<a class=wordstyle href="http://www.kuziyuan.com/article/" target=_blank>网站</a>作弊，那么我们的<a class=wordstyle href="h