﻿<?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/Dragonpro/</link><description>面对自己，寻找真我，战胜自我，摆脱自我</description><language>zh-cn</language><lastBuildDate>Sat, 04 Jul 2009 10:43:19 GMT</lastBuildDate><pubDate>Sat, 04 Jul 2009 10:43:19 GMT</pubDate><ttl>60</ttl><item><title>分享一组红白机音乐Remix</title><link>http://www.cnblogs.com/Dragonpro/archive/2008/11/16/1334476.html</link><dc:creator>dragonpro</dc:creator><author>dragonpro</author><pubDate>Sun, 16 Nov 2008 05:03:00 GMT</pubDate><guid>http://www.cnblogs.com/Dragonpro/archive/2008/11/16/1334476.html</guid><wfw:comment>http://www.cnblogs.com/Dragonpro/comments/1334476.html</wfw:comment><comments>http://www.cnblogs.com/Dragonpro/archive/2008/11/16/1334476.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dragonpro/comments/commentRss/1334476.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dragonpro/services/trackbacks/1334476.html</trackback:ping><description><![CDATA[<embed src="http://www.8box.cn/topics/mxplayer.swf?XmlUrl=http%3A%2F%2Fwww.8box.cn%2Ftopics%2Ffc-remix080303%2Ffc-remix.xml&amp;Auto=no&amp;MyColor=0xff9900" width="500" height="500" type="application/x-shockwave-flash"></embed><img src ="http://www.cnblogs.com/Dragonpro/aggbug/1334476.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47970/" target="_blank">19岁天才黑客发布首个iPhone 3GS破解软件</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>google.cn为何在中国竞争不过百度？</title><link>http://www.cnblogs.com/Dragonpro/archive/2008/10/15/googlebaidu.html</link><dc:creator>dragonpro</dc:creator><author>dragonpro</author><pubDate>Wed, 15 Oct 2008 10:10:00 GMT</pubDate><guid>http://www.cnblogs.com/Dragonpro/archive/2008/10/15/googlebaidu.html</guid><wfw:comment>http://www.cnblogs.com/Dragonpro/comments/1312035.html</wfw:comment><comments>http://www.cnblogs.com/Dragonpro/archive/2008/10/15/googlebaidu.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dragonpro/comments/commentRss/1312035.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dragonpro/services/trackbacks/1312035.html</trackback:ping><description><![CDATA[摘要: <img src="http://www.google.cn/intl/zh-CN/images/logo_cn.gif" width="150" class="desc_img"/>
当然，我是使用Google的，而且比较热衷使用Google的各种服务，但我并不能代表全国的网民。。。
我承认，这样分析有点事后诸葛亮的感觉，但问题终究是问题，百度在国内的搜索市场份额是Google的6倍，其中总是有原由的：
当然还有很多原由，这里只探讨一点点页面的问题 &nbsp;&nbsp;<a href='http://www.cnblogs.com/Dragonpro/archive/2008/10/15/googlebaidu.html'>阅读全文</a><img src ="http://www.cnblogs.com/Dragonpro/aggbug/1312035.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47969/" target="_blank">新浪邮箱大本营粉墨登场！Sina.cn开放注册</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>初识北京</title><link>http://www.cnblogs.com/Dragonpro/archive/2008/10/15/1311823.html</link><dc:creator>dragonpro</dc:creator><author>dragonpro</author><pubDate>Wed, 15 Oct 2008 07:41:00 GMT</pubDate><guid>http://www.cnblogs.com/Dragonpro/archive/2008/10/15/1311823.html</guid><wfw:comment>http://www.cnblogs.com/Dragonpro/comments/1311823.html</wfw:comment><comments>http://www.cnblogs.com/Dragonpro/archive/2008/10/15/1311823.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dragonpro/comments/commentRss/1311823.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dragonpro/services/trackbacks/1311823.html</trackback:ping><description><![CDATA[<p>话说话说就来了北京，长期在南方生活惯了，来这里还真有点不习惯。。。</p> <p>1.、北京不算整洁的城市，作为一个有历史的城市，电线乱牵，路面邋遢，当然，对于一贯低要求的中国人来说问题也不是很严重；</p> <p>2.、这里北方人很多，由于需要保暖，北方人普遍比较大块头，一般一眼就能认出，无论怎样，要适应北方的人文还是需要一定时间；</p> <p>3、秋冬季气候太干燥，每天要不停的喝水，鼻子有点塞，最近，常处在感冒的边缘；</p> <p>4、当然与天府之国的四川盆地来比较，这里的环境还是比较不利于生物生存的，当然，太利于生物生存也不一定是好事，因为细菌也是生物；</p> <p>5、貌似美女没南方大城市多，风景应该也没有南方的漂亮 - -！</p> <p>6、对于我来说，来北京的唯一理由就是为了寻找适合自己的圈子，结交志同道合的朋友；</p> <p>7、相对于生活惯了的深圳，这边还很陌生，环境差异也很大，不过人是具有高适应性的，就让我适应它吧</p> <p>写这些作为备忘，看看过一阵子会不会有不一样的感觉。</p><img src ="http://www.cnblogs.com/Dragonpro/aggbug/1311823.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47969/" target="_blank">新浪邮箱大本营粉墨登场！Sina.cn开放注册</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>2008，再会，深圳</title><link>http://www.cnblogs.com/Dragonpro/archive/2008/02/24/1079783.html</link><dc:creator>dragonpro</dc:creator><author>dragonpro</author><pubDate>Sun, 24 Feb 2008 13:53:00 GMT</pubDate><guid>http://www.cnblogs.com/Dragonpro/archive/2008/02/24/1079783.html</guid><wfw:comment>http://www.cnblogs.com/Dragonpro/comments/1079783.html</wfw:comment><comments>http://www.cnblogs.com/Dragonpro/archive/2008/02/24/1079783.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dragonpro/comments/commentRss/1079783.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dragonpro/services/trackbacks/1079783.html</trackback:ping><description><![CDATA[<p>2008年2月，我打包好行李，离开这工作了四年的城市，回来的时间，待定。。。</p> <p>我希望这是我的一个阶段、一种状态的结束。</p> <p>在深圳工作的这几年里，从稚嫩的毛头小子，经过战战兢兢的摸爬滚打，到现在不伦不类的自己，我只能说，Change me！</p> <p>一直以追求完美的性格要求自己，现在发现越是追求，越不能称心如意……也许，这个世界本身就不完美，目标性太强会缺少快乐，适可而止，以出世的态度面对人生……</p> <p>朋友不多，不过我相信我真正的朋友都是最铁的，因为我知道……，我爱你们！！</p> <p>深圳是个移民城市，大伙儿都是来自五湖四海，都很务实，这很好，我们这个国度，需要更多这样具有实干的精神的人，这种精神也将陪伴着我继续向前……</p> <p>-- 俺不要这么虚 --</p> <p>简单总结一下：</p> <p>第一年：初生牛犊，努力的干活，感觉比较充实，埋头做事，第一次与女孩子你来我往，oh～～</p> <p>第二年：矛盾的一年，混沌的一年，无奈的一年，认识到制度和管理才是公司的命脉……</p> <p>第三年：换了新工作，工作内容很喜欢，对技术的提高帮助很大，做了不少尝试，并成功，经常自己夸奖自己“你真是太聪明了”，同时熬夜也比较多，经历了一个多月的心理斗真，也许这一次让我知道，命运需要妥协……</p> <p>第四年：矛盾的一年，混沌的一年，无奈的一年，也是一晃而过的一年，我感觉我应该转移重点，更多关注业务，迫切的希望有自己的事业，已经准备就绪，我需要迈出第一步……</p> <p>简单的四年，没有任何值得赞许的经历，没错，这就是平淡庸俗的我，只是我很确信，自己一直在努力！</p> <p>2004年1月，我打包好行李，来到了这个既陌生又向往的城市，一切都是那么待定。。。</p><img src ="http://www.cnblogs.com/Dragonpro/aggbug/1079783.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47968/" target="_blank">IE市场份额首次跌破60%</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>顾客想要的和说的不一样</title><link>http://www.cnblogs.com/Dragonpro/archive/2006/11/13/1308922.html</link><dc:creator>dragonpro</dc:creator><author>dragonpro</author><pubDate>Mon, 13 Nov 2006 00:48:00 GMT</pubDate><guid>http://www.cnblogs.com/Dragonpro/archive/2006/11/13/1308922.html</guid><wfw:comment>http://www.cnblogs.com/Dragonpro/comments/1308922.html</wfw:comment><comments>http://www.cnblogs.com/Dragonpro/archive/2006/11/13/1308922.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dragonpro/comments/commentRss/1308922.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dragonpro/services/trackbacks/1308922.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在软件开发过程中也许我们天天要与客户打交道，什么样的产品才是受用户欢迎的，也许并不是那么好琢磨。  </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 举个例子，比如产品制造商在调查顾客需求的时候了解到客户想要一把粗一点的剃须刀，这个需求很明确。不过当我们制造出了粗一点的剃须刀后，顾客对这样的剃须刀也许并不感兴趣，顾客真的想要一把粗的剃须刀吗？？在软件设计开发过程中同样如此，客户想让你按照它的想法去实现一系列的需求，但是，往往你按照客户的想法设计出来了却并不能让客户满意，导致跟着客户一改再改，问题究竟出在哪里呢？  </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在实际的工作中，我们经常会被提醒一定要以需求来指导我们的设计，当然这没有什么问题，但如果没意识到这里的内涵将会使软件开发面临头疼的无休止的变数。在上面的例子中，客户真的需要一把粗一点的剃须刀吗？？当然不是，当我们继续问一个为什么后真相才会显现出来，原来，客户不想让剃须刀从手里滑掉，也许粗的剃须刀并不是好的设计方案，但在这里客户却误导了未继续询问为什么的需求者，从而导致产品开发的失败。所以，只要多问一个为什么后我们的需求就由<strong>客户导向变成了客户目标导向</strong>。知道客户最终想要什么的方式除了<strong>多问为什么</strong>外还有很多其它方式，我认为最重要的方式是需求者真正的<strong>理解客户业务</strong>，真正把自己当作客户，当然，这对某些项目也许并不是很容易，但我们能多理解一点客户就离成功更进一步，而不是整天抱怨客户这样或那要的需求有多变态，要知道客户也是想把工作做好。要知道，在这个行业，我们是专业的，让我们理解了客户之后为客户设计更易用的软件也许更合适。所以，对于实现什么和怎样实现顾客真正想要的也许和说的并不一致。 </p><img src ="http://www.cnblogs.com/Dragonpro/aggbug/1308922.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47965/" target="_blank">Google App Engine宕机6小时——云的安全在哪里？</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>从String到enum的互换（string to enum to string）</title><link>http://www.cnblogs.com/Dragonpro/archive/2006/07/02/stringtoenumtostring.html</link><dc:creator>dragonpro</dc:creator><author>dragonpro</author><pubDate>Sun, 02 Jul 2006 12:39:00 GMT</pubDate><guid>http://www.cnblogs.com/Dragonpro/archive/2006/07/02/stringtoenumtostring.html</guid><wfw:comment>http://www.cnblogs.com/Dragonpro/comments/440962.html</wfw:comment><comments>http://www.cnblogs.com/Dragonpro/archive/2006/07/02/stringtoenumtostring.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dragonpro/comments/commentRss/440962.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dragonpro/services/trackbacks/440962.html</trackback:ping><description><![CDATA[<p>Convert a string to an enumerated (enum) value.</p>
<p>Using the Enum.Parse method, you can easily convert a string value to an enumerated value.&nbsp; Doing this requires the type of the enum and string value.&nbsp; Adding the&nbsp;<em>true</em> argument will cause the case to be ignored.</p>
<p>Using the following enum for this example:</p>
<p><font color=#006400>private enum Aircraft<br>{<br>&nbsp;&nbsp; Beech,<br>&nbsp;&nbsp; Cessna,<br>&nbsp;&nbsp; Piper<br>}</font></p>
<p>You can easily convert the string to an enum value like this:</p>
<div>
<p>&#160;</p>
<p><font color=#006400>Aircraft air = (Aircraft) Enum.Parse(typeof(Aircraft), "Cessna", true); </font></p>
</div>
<p>&#160;</p>
<p>Ideally you should wrap a try-catch around the Enum.Parse statement.<br><br>
<hr width="100%">
<p>&#160;</p>
string s;<br>s = <font color=#006400>air </font>.ToString();<br>s = Enum.GetName(typeof(<font color=#006400>Aircraft</font>), <font color=#006400>air.Beech</font>);<br><br>后者比前者性能高<br><br>
<img src ="http://www.cnblogs.com/Dragonpro/aggbug/440962.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47961/" target="_blank">微软新推社交网站Windows Live Planet</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>CommunityServer系列之十一：优秀的URL重写机制</title><link>http://www.cnblogs.com/Dragonpro/archive/2006/06/27/436486.html</link><dc:creator>dragonpro</dc:creator><author>dragonpro</author><pubDate>Mon, 26 Jun 2006 16:01:00 GMT</pubDate><guid>http://www.cnblogs.com/Dragonpro/archive/2006/06/27/436486.html</guid><wfw:comment>http://www.cnblogs.com/Dragonpro/comments/436486.html</wfw:comment><comments>http://www.cnblogs.com/Dragonpro/archive/2006/06/27/436486.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dragonpro/comments/commentRss/436486.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dragonpro/services/trackbacks/436486.html</trackback:ping><description><![CDATA[<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最近激情于对</span><span>CS2</span><span>的改造，疏于本系列的更新，一方面本身文章的受众比较有限，另一方面是自己的业余时间有限，着重于对</span><span>CS</span><span>的改造就必须放慢另外一方面的事情。</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 长话短说，简单说一下在</span><span>CS2</span><span>中的</span><span>URL</span><span>重写机制，</span><span>CS2</span><span>中的</span><span>URL</span><span>重写机制或者叫</span><span>URL</span><span>解决放案更贴切，我感觉是非常优秀的，虽然处理上复杂了些，但严格按照好的架构思想出来的应用具有非常好的扩展性。</span></p>
<p><span>不熟悉</span><span>URLRewrite</span><span>的可以参看<a href="http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx?mfr=true">http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx?mfr=true</a></span></p>
<p><span>本文假设您已经基本了解了</span><span>URL</span><span>重写机制的基础上展开的。</span></p>
<p><span>通过</span><span>web.config</span><span>中的</span><span>httpModules</span><span>配置节我们了解到</span><span>CS</span><span>处理</span><span>HttpModules</span><span>的处理程序，在这里是当一个请求建立时最开始的事件，在这里，</span><span>HttpModule</span><span>处理程序不仅处理请求有关的操作还操作</span><span>URLRewrite</span><span>，具体的架构参见下面的</span><span>UML</span><span>图：<br /><img src="http://www.cnblogs.com/images/cnblogs_com/dragonpro/CommunityServer/UrlReWrite_UML.jpg" border="0" alt="" width="541" height="493" /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从此图了解一个大概即可，现简单描述一下处理过程：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当客户端请求到达IIS后，通过IIS把处理递交给HTTP处理程序（HttpModule），通过在HttpModule中注册的BeginRequest事件处理URLWrite，不过这里还使用了委托，委托CSContext来执行重写方法，在CSHttpModule中的方法调用UrlWriteProvider里的抽象函数获取匹配替换后的新的URL，要执行匹配，需要根据配置文件来筛选，在CS中有很多应用，如果在每个请求到达时都执行匹配，执行效率会很低的，CS在这里做了筛选，先根据URL判断其属于那个应用，这里叫Location，在配置节里的Locations就是设置这个的，这样判断了其所属的location后只需要匹配此Location下的URL即可，大大减少了匹配次数，当然这里还有一个URLMapping对应配置节的mappings（默认CSSDK中未配置这一项），这可以把一种location映射成为另一种location，这在扩展中也很有用，执行URL匹配时，通过正则表达式匹配配置节URL里的pattern，遇到匹配成功即可替换为vanity，当然生成URL的适合也是使用同一配置里的path，这样三个属性就构成了一个完整的URL配置。当然transformers配置节里是执行替换，这在最初读取配置的时候循环替换每个URL配置节里的Path和pattern，比如把##blogdirectory##替换为Pages/{0}/blog/，这样就使配置更灵活，如果需要修改Location的值将是很简单的一件事情。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 举例来说，如果需要把CS中默认的URL（.aspx）改为.html结尾的URL，理论上只需要修改各URL中的path和pattern两个属性，注意：只能这两个属性同时出现的URL配置才能修改其扩展名，因为这样的URL才能执行重写。</span></p><img src ="http://www.cnblogs.com/Dragonpro/aggbug/436486.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47960/" target="_blank">火狐3.5版被指推出太匆忙：存在50多个漏洞</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>Community Server系列之十：让CS2支持中文搜索</title><link>http://www.cnblogs.com/Dragonpro/archive/2006/06/10/CS2ChineseSearch.html</link><dc:creator>dragonpro</dc:creator><author>dragonpro</author><pubDate>Sat, 10 Jun 2006 07:21:00 GMT</pubDate><guid>http://www.cnblogs.com/Dragonpro/archive/2006/06/10/CS2ChineseSearch.html</guid><wfw:comment>http://www.cnblogs.com/Dragonpro/comments/422504.html</wfw:comment><comments>http://www.cnblogs.com/Dragonpro/archive/2006/06/10/CS2ChineseSearch.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dragonpro/comments/commentRss/422504.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dragonpro/services/trackbacks/422504.html</trackback:ping><description><![CDATA[摘要:  前面几节里有朋友提到CS2对中文搜索支持的不好，那么这一节就提前到这里来讲讲怎样解决CS2对中文搜索的问题。 我们都知道，英文和中文语言上的不同导致了处理英文和中文的不同方法，最明显的不同就是英文是以单词为最小单位，而中文则是以字为最小单位，这样造成了程序上的不一样，而在CS2中默认的搜索模块只考虑到英文这一方面，对中文相当于不认识了，怎样让其认识中文呢，这就需要我们来分析CS2处理搜索的机制。&nbsp;&nbsp;<a href='http://www.cnblogs.com/Dragonpro/archive/2006/06/10/CS2ChineseSearch.html'>阅读全文</a><img src ="http://www.cnblogs.com/Dragonpro/aggbug/422504.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47959/" target="_blank">Google对手机搜索进行优化升级</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>Community Server系列之九：CS2中的用户管理1（MemberRole）</title><link>http://www.cnblogs.com/Dragonpro/archive/2006/06/07/420116.html</link><dc:creator>dragonpro</dc:creator><author>dragonpro</author><pubDate>Wed, 07 Jun 2006 15:51:00 GMT</pubDate><guid>http://www.cnblogs.com/Dragonpro/archive/2006/06/07/420116.html</guid><wfw:comment>http://www.cnblogs.com/Dragonpro/comments/420116.html</wfw:comment><comments>http://www.cnblogs.com/Dragonpro/archive/2006/06/07/420116.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dragonpro/comments/commentRss/420116.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dragonpro/services/trackbacks/420116.html</trackback:ping><description><![CDATA[<p align="left"><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 近期由于身心不适，一直没更新，现又拿起笔，继续这个系列&hellip;&hellip;</em><br />&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CS中的用户及权限管理是比较复杂的，了解其中的用户及权限有关的机制对掌握CS的核心是至关重要的，现就对CS中的用户管理机制作一个简要介绍。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CS是在Asp.Net1.1时代出现的，固然，在CS1系列中使用的权限机制是建立在微软MemberRole1.0之上的，那么在CS2中仍然沿袭了这一模块。不过我们可以看到CS2针对ASP1.1和Asp2.0做了两套方案，这样我们就可以在.net1.1状态下用MemberRole1.0在.net2.0状态下用ASP.NET2.0自带的MemberRole。那么CS2中是怎样做到这么灵活的配置的呢，下面就一一道来：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 前面一系列的文章提到在CS2中运用的一种很常见的模式－代理模式，代理模式诸多优点我就不在这里细说了，最突出的那就是可以在自己的规则里使用第三方组建，而不会直接依赖第三方组建，当第三方组建变动的时候，只需要改代理层即可，同样，在CS2处理MemberRole的时候也用到了此模式，下面我们就看看此模式带来了什么。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 让我们先来看看CommunityServerComponents这个项目，这个项目为CS的核心，里面定义了CS运行所需要的抽象类、接口、公用方法、实体类等等，显然要定义MemberRole的接口当然也应该在此定义了，这也符合接口倒置原则，接口的使用者定义接口，而不是提供者。打开项目里的\Components\Provider\User\文件夹，此文件夹内就是全部接口的定义和调用规则了：</p>
<div><img src="http://www.cnblogs.com/images/cnblogs_com/dragonpro/CommunityServer/CS_9_1.gif" border="0" alt="" width="557" height="526" /></div>
<div>
<div><img src="http://www.cnblogs.com/images/cnblogs_com/dragonpro/CommunityServer/CS_9_2.gif" border="0" alt="" width="483" height="271" /></div>
<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 上图调用MemberRole组建的所有接口定义，可以看出这里除了MemberRoleProfileProvider这个抽象类有实体方法外，其他都为接口定义，调用的时候当然是调用MemberRoleProfileProvider里面的实体方法了，这里的方法告诉我们通过配置找到需要加载的代理组建并适时加载：<br />
<div style="padding-right: 5px; padding-left: 4px; font-size: 13px; padding-bottom: 4px; width: 98%; word-break: break-all; padding-top: 4px; background-color: #eeeeee; border: #cccccc 1px solid;"><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;MemberRoleProfileProvider()<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CSConfiguration&nbsp;config&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;CSConfiguration.GetConfig();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Provider&nbsp;provider&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;config.Providers[</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">MemberRoleProfileProvider</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">]&nbsp;</span><span style="COLOR: #0000ff">as</span><span style="COLOR: #000000">&nbsp;Provider;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(provider&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&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">if</span><span style="COLOR: #000000">(Globals.IsNullorEmpty(provider.Type))<br />&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">throw</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Exception(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">MemberUserRoleProvider&nbsp;provider&nbsp;found,&nbsp;but&nbsp;no&nbsp;type&nbsp;attribute&nbsp;was&nbsp;specified</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type&nbsp;type&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Type.GetType(provider.Type);<br />&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">if</span><span style="COLOR: #000000">(type&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)<br />&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">throw</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Exception(</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">.Format(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">MemberUserRoleProvider&nbsp;Provider&nbsp;Type&nbsp;{0}&nbsp;could&nbsp;not&nbsp;be&nbsp;loaded</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,provider.Type));<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;murp&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Activator.CreateInstance(type)&nbsp;</span><span style="COLOR: #0000ff">as</span><span style="COLOR: #000000">&nbsp;MemberRoleProfileProvider;<br />&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">if</span><span style="COLOR: #000000">(murp&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)<br />&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">throw</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Exception(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">MemberUserRoleProvider&nbsp;could&nbsp;not&nbsp;be&nbsp;loaded&nbsp;from&nbsp;the&nbsp;type&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;provider.Type);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span></div>
<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这个静态方法就是为了完成此项工作的了。<br />配置节点在CommunityServer.config里的providers的MemberRoleProfileProvider，这就告诉CS2需要使用哪个代理来处理MemberRole。<br />
<div style="padding-right: 5px; padding-left: 4px; font-size: 13px; padding-bottom: 4px; width: 98%; word-break: break-all; padding-top: 4px; background-color: #eeeeee; border: #cccccc 1px solid;"><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">add&nbsp;<br />&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&nbsp;</span><span style="COLOR: #0000ff">=&nbsp;"MemberRoleProfileProvider"</span><span style="COLOR: #ff0000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;type&nbsp;</span><span style="COLOR: #0000ff">=&nbsp;"CommunityServer.MemberRole.CSMemberRoleProfileProvider,&nbsp;CommunityServer.MemberRole"</span><span style="COLOR: #ff0000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">/&gt;</span><span style="COLOR: #000000"><br /></span></div>
<span style="FONT-SIZE: 10pt; FONT-FAMILY: 宋体; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA; mso-ascii-font-family: 'Courier New'; mso-hansi-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'; mso-no-proof: yes">&nbsp;&nbsp;&nbsp; 好了，看完了接口我们不难猜到代理层应该做什么了，当然是实现这些接口了：<br />
<div><img src="http://www.cnblogs.com/images/cnblogs_com/dragonpro/CommunityServer/CS_9_3.gif" border="0" alt="" width="265" height="46" /></div>
</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我们可以看到在CS2中有两个MemberRole代理层，一个是针对MemberRole1的，另一个则是针对ASP.NET2.0的MemberRole，这两个组件我们选择一个就行，具体选择什么我们就在配置文件里填上相应的组件的代理程序集（也就是上图显示的项目）就OK了，因为他们都正确的实现了CS定义的接口，需要说明的是，CS2默认使用MemberRole1.0，如果需要使用Asp.net2.0中的MemberRole则还需要运行项目里面的SQL脚本升级数据库。现在我们着重看看CommunityServer.MemberRole这个实现了MemberRole1.0的代理层：<br /><img src="http://www.cnblogs.com/images/cnblogs_com/dragonpro/CommunityServer/CS_9_4.gif" border="0" alt="" width="699" height="461" /><br /><img src="http://www.cnblogs.com/images/cnblogs_com/dragonpro/CommunityServer/CS_9_5.gif" border="0" alt="" /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这里我们可以看到，在主要的CSMemberRoleProfileProvider里只引用了CSRoles、CSProfiles、CSMembership，那么其余的实现MemberRole怎样知道呢，这就需要在WEB.config中进行指定，打开WEB.config文件我们可以看到在configSections节点有如下的配置：<br />
<div style="padding-right: 5px; padding-left: 4px; font-size: 13px; padding-bottom: 4px; width: 98%; word-break: break-all; padding-top: 4px; background-color: #eeeeee; border: #cccccc 1px solid;"><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">sectionGroup&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="memberrolesprototype"</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" 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">section&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="membership"</span><span style="COLOR: #ff0000">&nbsp;type</span><span style="COLOR: #0000ff">="Microsoft.ScalableHosting.Configuration.MembershipConfigHandler,&nbsp;MemberRole,&nbsp;Version=1.0.0.0,&nbsp;Culture=neutral,&nbsp;PublicKeyToken=b7c773fb104e7562"</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" alt="" 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">section&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="roleManager"</span><span style="COLOR: #ff0000">&nbsp;type</span><span style="COLOR: #0000ff">="Microsoft.ScalableHosting.Configuration.RolesConfigHandler,&nbsp;MemberRole,&nbsp;Version=1.0.0.0,&nbsp;Culture=neutral,&nbsp;PublicKeyToken=b7c773fb104e7562"</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" alt="" 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">section&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="profile"</span><span style="COLOR: #ff0000">&nbsp;type</span><span style="COLOR: #0000ff">="Microsoft.ScalableHosting.Configuration.ProfileConfigHandler,&nbsp;MemberRole,&nbsp;Version=1.0.0.0,&nbsp;Culture=neutral,&nbsp;PublicKeyToken=b7c773fb104e7562"</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" alt="" 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">section&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="anonymousIdentification"</span><span style="COLOR: #ff0000">&nbsp;type</span><span style="COLOR: #0000ff">="Microsoft.ScalableHosting.Configuration.AnonymousIdConfigHandler,&nbsp;MemberRole,&nbsp;Version=1.0.0.0,&nbsp;Culture=neutral,&nbsp;PublicKeyToken=b7c773fb104e7562"</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" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">&lt;/</span><span style="COLOR: #800000">sectionGroup</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />还有在profile节点的<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="COLOR: #0000ff">&lt;</span><span style="COLOR: #800000">providers</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" 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">add&nbsp;</span><span style="COLOR: #ff0000">name</span><span style="COLOR: #0000ff">="CommunityServerSqlProvider"</span><span style="COLOR: #ff0000">&nbsp;type</span><span style="COLOR: #0000ff">="CommunityServer.MemberRole.CSProfileProvider,&nbsp;CommunityServer.MemberRole"</span><span style="COLOR: #ff0000">&nbsp;connectionStringName</span><span style="COLOR: #0000ff">="SiteSqlServer"</span><span style="COLOR: #ff0000">&nbsp;applicationName</span><span style="COLOR: #0000ff">="dev"</span><span style="COLOR: #ff0000">&nbsp;description</span><span style="COLOR: #0000ff">="Stores&nbsp;and&nbsp;retrieves&nbsp;profile&nbsp;data&nbsp;from&nbsp;the&nbsp;local&nbsp;Microsoft&nbsp;SQL&nbsp;Server&nbsp;database"</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" alt="" 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">providers</span><span style="COLOR: #0000ff">&gt;</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /></span></div>
<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这些就是告诉系统需要怎样调用MemberRole了<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;通过配置好上面的各项，就可以在系统里实现其基本的用户管理了，当然我们会看到CS2在处理用户管理的时候还做了非常多的工作，这也不是一时半会儿能讨论清楚的，先在这里抛砖一下，更多高级应用还得需要大家慢慢体会。</div><img src ="http://www.cnblogs.com/Dragonpro/aggbug/420116.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47958/" target="_blank">风声又起 Windows 7 RTM版7月13日完成</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>Community Server系列之八：CS2中的CSContext</title><link>http://www.cnblogs.com/Dragonpro/archive/2006/05/17/402044.html</link><dc:creator>dragonpro</dc:creator><author>dragonpro</author><pubDate>Tue, 16 May 2006 16:45:00 GMT</pubDate><guid>http://www.cnblogs.com/Dragonpro/archive/2006/05/17/402044.html</guid><wfw:comment>http://www.cnblogs.com/Dragonpro/comments/402044.html</wfw:comment><comments>http://www.cnblogs.com/Dragonpro/archive/2006/05/17/402044.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dragonpro/comments/commentRss/402044.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dragonpro/services/trackbacks/402044.html</trackback:ping><description><![CDATA[摘要:  由于WEB请求是无状态的，在请求过程中需要保存的共享信息保存在HttpContext中，在Http请求过程中HttpContext始终贯穿整个请求过程，在CS2中相当于对HTTPContext进行了扩展，除了包含HTTPContext中的信息外，CSContext还包含了在CS的整个请求过程中需要共享的自己的数据，如当前请求的用户、Section、Post等等公用数据。 在CS中，一个页面往往涉&nbsp;&nbsp;<a href='http://www.cnblogs.com/Dragonpro/archive/2006/05/17/402044.html'>阅读全文</a><img src ="http://www.cnblogs.com/Dragonpro/aggbug/402044.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47957/" target="_blank">乔布斯和埃利森</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>Community Server系列之七：快速找到需要修改的文件[技巧]</title><link>http://www.cnblogs.com/Dragonpro/archive/2006/05/07/393475.html</link><dc:creator>dragonpro</dc:creator><author>dragonpro</author><pubDate>Sun, 07 May 2006 15:16:00 GMT</pubDate><guid>http://www.cnblogs.com/Dragonpro/archive/2006/05/07/393475.html</guid><wfw:comment>http://www.cnblogs.com/Dragonpro/comments/393475.html</wfw:comment><comments>http://www.cnblogs.com/Dragonpro/archive/2006/05/07/393475.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dragonpro/comments/commentRss/393475.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dragonpro/services/trackbacks/393475.html</trackback:ping><description><![CDATA[<p><span lang="EN-US"><span>
<p><span lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>CS</span><span>中的模板几乎遍布整个应用，当我们利用</span><span lang="EN-US">SDK</span><span>做二次开发的时候，我们需要很长的熟悉过程，而这个过程大部分时间被烦躁的检索所占据，检索模板、检索类文件，检索类文件我们可以使用类视图快速定位到类所在的文件。然而确定需要修改的模板或需要修改的类却不是那么方便的事情。</span><span lang="EN-US">CS</span><span>在这里为我们做了一些工作，但并不是特别方便，按照下面的方法即可直观的找到需要修改的文件。</span></p>
<p><span lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>在</span><span lang="EN-US">CS</span><span>中，如果是调试项目，在生成的</span><span lang="EN-US">HTML</span><span>代码里会嵌入页面所使用的模板的类名及模板文件路径，但它是以</span><span lang="EN-US">HTML</span><span>注释的方式体现出来的，我们要确定某个模块的信息还需要查看源文件并繁琐的检索，这里我们只需要稍微改造一下便能让这些注释更直观一眼就可以快速了解模块的相关信息。</span></span></p>
<p><span>让我们打开</span><span lang="EN-US">\src\Controls\BaseClasses\TemplatedWebControl.cs</span><span>和</span><span lang="EN-US">\src\Controls\BaseClasses\SkinnedWebControl.cs</span><span>这两个文件，这两个类是系统模板控件的基类，它们都有这样一个方法：<br /></span></p>
<div style="padding-right: 5px; padding-left: 4px; font-size: 13px; padding-bottom: 4px; width: 98%; word-break: break-all; padding-top: 4px; background-color: #eeeeee; border: #cccccc 1px solid;"><span style="COLOR: #000000">[System.Diagnostics.Conditional(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">DEBUG</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)]<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;SourceMarker(</span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000">&nbsp;isStart,&nbsp;HtmlTextWriter&nbsp;writer)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(isStart)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.WriteLine(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;!--&nbsp;Start:&nbsp;{0}&nbsp;--&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.GetType());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(System.IO.File.Exists(HttpContext.Current.Server.MapPath(</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.SkinPath)))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.WriteLine(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;!--&nbsp;Skin&nbsp;Path:&nbsp;{0}&nbsp;--&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.SkinPath);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(SkinTemplate&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.WriteLine(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;!--&nbsp;Inline&nbsp;Skin:&nbsp;{0}&nbsp;--&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.WriteLine(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;!--&nbsp;Skin&nbsp;Path:&nbsp;{0}&nbsp;--&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.DefaultSkinPath);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.WriteLine(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;!--&nbsp;End:&nbsp;{0}&nbsp;--&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.GetType());<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /></span></div>
<br />这个方法的目的即是，在Debug编译环境下，控件输出的时候记录控件所属于的类名和控件所使用的skin路径，方便客户端通过HTML代码找到相应的代码进行修改，然而这里使用的是HTML注释，我们在查找的时候很不方便，那么我们把它转换成HTML隐藏的标签并在需要的时候让其制动显示在浏览器上不是更方便吗，这就进行改造，修改此方法如下：<br />
<div style="padding-right: 5px; padding-left: 4px; font-size: 13px; padding-bottom: 4px; width: 98%; word-break: break-all; padding-top: 4px; background-color: #eeeeee; border: #cccccc 1px solid;"><img id="Code_Closed_Image_230937" onclick="this.style.display='none'; Code_Closed_Text_230937.style.display='none'; Code_Open_Image_230937.style.display='inline'; Code_Open_Text_230937.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" alt="" width="11" height="16" align="top" /><img id="Code_Open_Image_230937" style="DISPLAY: none" onclick="this.style.display='none'; Code_Open_Text_230937.style.display='none'; Code_Closed_Image_230937.style.display='inline'; Code_Closed_Text_230937.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" alt="" width="11" height="16" align="top" /><span id="Code_Closed_Text_230937" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">SourceMarker</span><span id="Code_Open_Text_230937" style="DISPLAY: none"><br /><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /><span style="COLOR: #000000">[System.Diagnostics.Conditional(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">DEBUG</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)]<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">protected</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;SourceMarker(</span><span style="COLOR: #0000ff">bool</span><span style="COLOR: #000000">&nbsp;isStart,&nbsp;HtmlTextWriter&nbsp;writer)<br /><img id="Codehighlighter1_123_1157_Open_Image" onclick="this.style.display='none'; Codehighlighter1_123_1157_Open_Text.style.display='none'; Codehighlighter1_123_1157_Closed_Image.style.display='inline'; Codehighlighter1_123_1157_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" alt="" align="top" /><img id="Codehighlighter1_123_1157_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_123_1157_Closed_Text.style.display='none'; Codehighlighter1_123_1157_Open_Image.style.display='inline'; Codehighlighter1_123_1157_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_123_1157_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/images/dot.gif" alt="" /></span><span id="Codehighlighter1_123_1157_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Edit&nbsp;by&nbsp;lf</span><span style="COLOR: #008000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" /></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(isStart)<br /><img id="Codehighlighter1_198_967_Open_Image" onclick="this.style.display='none'; Codehighlighter1_198_967_Open_Text.style.display='none'; Codehighlighter1_198_967_Closed_Image.style.display='inline'; Codehighlighter1_198_967_Closed_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" alt="" align="top" /><img id="Codehighlighter1_198_967_Closed_Image" style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_198_967_Closed_Text.style.display='none'; Codehighlighter1_198_967_Open_Image.style.display='inline'; Codehighlighter1_198_967_Open_Text.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedSubBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id="Codehighlighter1_198_967_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cnblogs.com/images/dot.gif" alt="" /></span><span id="Codehighlighter1_198_967_Open_Text"><span style="COLOR: #000000">{<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.WriteLine(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;span&nbsp;style='display:none;background-color:infobackground;'&nbsp;id='classInfo'&nbsp;name='classInfo'&gt;&nbsp;Start:&nbsp;{0}&nbsp;&lt;/span&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.GetType());<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&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/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;skinPath&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;Globals.GetSkinPath()&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/Skins/</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;SkinFilename.TrimStart(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">);<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(System.IO.File.Exists(skinPath))<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.WriteLine(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;span&nbsp;style='display:none;background-color:infobackground;'&nbsp;id='skinInfo'&nbsp;name='skinInfo'&gt;&nbsp;Skin&nbsp;Path:&nbsp;{0}&nbsp;&lt;/span&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;skinPath);<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.WriteLine(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;span&nbsp;style='display:none;background-color:infobackground;'&nbsp;id='skinInfo'&nbsp;name='skinInfo'&gt;&nbsp;Skin&nbsp;Path:&nbsp;{0}&nbsp;&lt;/span&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;Globals.ApplicationPath&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">/Themes/default/Skins/</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;SkinFilename.TrimStart(</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">));<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/InBlock.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.WriteLine(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;span&nbsp;style='display:none;background-color:infobackground;'&nbsp;id='classInfo'&nbsp;name='classInfo'&gt;&nbsp;End:&nbsp;{0}&nbsp;&lt;/span&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">.GetType());<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockEnd.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /></span></span></div>
<br />聪明的你一定看出来了，这里其实很简单，只是把相应的HTML注释改为隐藏的span标签，对应的两个类文件都按照这样的方式进行修改即可。<br />修改了上述两个文件后还需要修改另外一个每页都需要的文件，这里我们选择\src\Controls\Utility\Footer.cs这个文件，因为这个脚标文件在每个页面都用得着，我们可以在这里设置一个开关让其通过点击自动显示和隐藏上面所修改的标签。<br />在Footer这个类的Render方法里把相应的writer.Writer方法改为如下所示样式，这样在Debug的时候就可以点击页脚的Skin、InSkin、Class三个连接来显示相应的Debug标签了。<br />
<div style="padding-right: 5px; padding-left: 4px; font-size: 13px; padding-bottom: 4px; width: 98%; word-break: break-all; padding-top: 4px; background-color: #eeeeee; border: #cccccc 1px solid;"><img id="Code_Closed_Image_231320" onclick="this.style.display='none'; Code_Closed_Text_231320.style.display='none'; Code_Open_Image_231320.style.display='inline'; Code_Open_Text_231320.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" alt="" width="11" height="16" align="top" /><img id="Code_Open_Image_231320" style="DISPLAY: none" onclick="this.style.display='none'; Code_Open_Text_231320.style.display='none'; Code_Closed_Image_231320.style.display='inline'; Code_Closed_Text_231320.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" alt="" width="11" height="16" align="top" /><span id="Code_Closed_Text_231320" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">Footer</span><span id="Code_Open_Text_231320" style="DISPLAY: none"><br /><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /><span style="COLOR: #0000ff">#if</span><span style="COLOR: #000000">&nbsp;DEBUG</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.Write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&amp;copy;&nbsp;Copyright&nbsp;2006&nbsp;XXXXXX&nbsp;Corporation.&nbsp;All&nbsp;Rights&nbsp;Reserved.&nbsp;&lt;span&nbsp;onclick='showDebugObj(\</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">skinInfo\</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)'&gt;Skin&lt;/span&gt;&nbsp;&lt;span&nbsp;onclick='showDebugObj(\</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">inSkinInfo\</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)'&gt;InSkin&lt;/span&gt;&nbsp;&lt;span&nbsp;onclick='showDebugObj(\</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">classInfo\</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)'&gt;Class&lt;/span&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.Write(</span><span style="COLOR: #000000">@"</span><span style="COLOR: #000000">&lt;script&nbsp;language='javascript'&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />function&nbsp;showDebugObj(n){<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;objs&nbsp;=&nbsp;document.getElementsByName(n);<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;if(objs.length&nbsp;==&nbsp;0)&nbsp;alert('Not&nbsp;Found:'&nbsp;+&nbsp;n);<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;for(i=0;i&lt;objs.length;i++){<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(objs[i].style.display&nbsp;==&nbsp;'none')<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objs[i].style.display&nbsp;=&nbsp;'';<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;objs[i].style.display&nbsp;=&nbsp;'none';&nbsp;&nbsp;&nbsp;&nbsp;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />}<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&lt;/script&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="COLOR: #0000ff">#else</span><span style="COLOR: #000000"><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;writer.Write(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&amp;copy;&nbsp;Copyright&nbsp;2006&nbsp;XXXXXX&nbsp;Corporation.&nbsp;All&nbsp;Rights&nbsp;Reserved.</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /></span><span style="COLOR: #0000ff">#endif</span></span></div>
<br />通过上面的改造我们可以在页脚看到三个标签：Skin、InSkin、Class当我们点击这三个标签的时候页面就会显示相应的控件的类名，Skin路径等信息，这在二次开发CS的过程中可以非常快速的定位到想修改的资源，节约大量的检索时间。希望对您有所帮助。</span></span></p><img src ="http://www.cnblogs.com/Dragonpro/aggbug/393475.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47956/" target="_blank">Xbox Live将投放Silverlight广告</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>Community Server系列之六：CS2中的关键词及数据结构</title><link>http://www.cnblogs.com/Dragonpro/archive/2006/04/30/389671.html</link><dc:creator>dragonpro</dc:creator><author>dragonpro</author><pubDate>Sun, 30 Apr 2006 12:45:00 GMT</pubDate><guid>http://www.cnblogs.com/Dragonpro/archive/2006/04/30/389671.html</guid><wfw:comment>http://www.cnblogs.com/Dragonpro/comments/389671.html</wfw:comment><comments>http://www.cnblogs.com/Dragonpro/archive/2006/04/30/389671.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dragonpro/comments/commentRss/389671.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dragonpro/services/trackbacks/389671.html</trackback:ping><description><![CDATA[<p><span lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>写这篇帖子的目的在于介绍整个</span><span lang="EN-US">CS</span><span>中的关键点，以我的经验来看着重应该了解的地方的一些罗列。这对初次接触</span><span lang="EN-US">CS</span><span>的朋友来说我想是有帮助的。</span></span></p>
<p><span lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>模块：在</span><span lang="EN-US">CS2</span><span>中最主要的官方模块有（论坛</span><span lang="EN-US">Forums</span><span>、博客</span><span lang="EN-US">Blogs</span><span>、相册</span><span lang="EN-US">Galleries</span><span>）现在只讨论主要的这三个模块，下面的文字也围绕着这三个模块进行讨论。这三个模块具有一定的共同点，</span><span lang="EN-US">CS</span><span>把这三个模块抽象到一起了，这是</span><span lang="EN-US">CS</span><span>的核心所在。</span></span></p>
<p><span lang="EN-US"></span></p>
<p>&nbsp;</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="91" valign="top">
<p><strong><span>名称</span></strong></p>
</td>
<td width="187" valign="top">
<p><strong><span>说明</span></strong></p>
</td>
<td width="172" valign="top">
<p><strong><span>主要数据表</span></strong></p>
</td>
<td width="118" valign="top">
<p><strong><span>备注</span></strong></p>
</td>
</tr>
<tr>
<td width="91" valign="top">
<p><strong><span>Section</span></strong></p>
</td>
<td width="187" valign="top">
<p><span>基本板块：论坛里表现为论坛的板块，博客里表现为每个人的博客，相册表现为每个人的相册。</span></p>
</td>
<td width="172" valign="top">
<p><span>cs_Sections</span><span>主要保存模块数据包括模块的组别名称所有者等等。</span></p>
<p>&nbsp;</p>
</td>
<td width="118" valign="top">
<p><span>CS</span><span>中很重要的一个概念，几乎所有的逻辑都与此相关。</span></p>
</td>
</tr>
<tr>
<td width="91" valign="top">
<p><strong><span>Group</span></strong></p>
</td>
<td width="187" valign="top">
<p><span>组别，在</span><span>CS</span><span>中的几乎所有标准模块都依靠</span><span>Group</span><span>进行管理，论坛的</span><span>Group</span><span>表现为对论坛板块的分类，博客表现为博客的群组，相册也表现为群组，总之，这些模块都要依赖此进行管理</span></p>
</td>
<td width="172" valign="top">
<p><span>cs_Groups</span><span>，主要保存分组信息</span></p>
</td>
<td width="118" valign="top">
<p><span>所有</span><span>Section</span><span>都依赖此进行组合，就算一个</span><span>Section</span><span>也需要一个默认</span><span>Group</span></p>
</td>
</tr>
<tr>
<td width="91" valign="top">
<p><strong><span>Settings</span></strong></p>
</td>
<td width="187" valign="top">
<p><span>几乎每张表都有</span><span>SettingsID</span><span>的字段用来区分不同的应用，因为</span><span>CS</span><span>一个程序可以同时分成多个应用而互不干扰，每个存储过程，每张表都有相应的对</span><span>Settings</span><span>的筛选</span></p>
</td>
<td width="172" valign="top">
<p><span>cs_SiteSettings</span><span>，站点的基本设置以</span><span>XML</span><span>的形式保存在此</span></p>
<p><span>cs_Sites</span><span>站点信息，可设置多个站点</span></p>
<p><span>cs_SiteMappings</span><span>站点和</span><span>Settings</span><span>的对应关系</span></p>
</td>
<td width="118" valign="top">
<p><span>这个概念同样重要，现在很多程序都设计成这样的模式，一句话，尽量灵活，</span><span>CS</span><span>的灵活性非常到位。</span></p>
</td>
</tr>
<tr>
<td width="91" valign="top">
<p><strong><span>Thread</span></strong></p>
</td>
<td width="187" valign="top">
<p><span>线程，这个感念比较抽象，但在</span><span>CS</span><span>中却是很重要的，这个意思可以简单的认为是一个主题，并包含这个主题所有的相关信息，比如回复数，得分等等</span></p>
</td>
<td width="172" valign="top">
<p><span>cs_Threads</span><span>，保存每个主题信息，</span></p>
<p><span>cs_ThreadsRead</span><span>，阅读者对每个主题的阅读情况</span></p>
</td>
<td width="118" valign="top">
<p><span>在每发表一篇主题（非回复）就在此表添加一条记录</span></p>
</td>
</tr>
<tr>
<td width="91" valign="top">
<p><strong><span>Post</span></strong></p>
</td>
<td width="187" valign="top">
<p><span>表示包括主题在内的所有用户发表的帖子，无论是回复还是投票或主题统统要在此记录</span></p>
</td>
<td width="172" valign="top">
<p><span>cs_Posts</span><span>，保存</span><span>Post</span><span>的主要数据表其他与</span><span>Post</span><span>相关的表还有很多</span></p>
</td>
<td width="118" valign="top">
<p><span>最重要的用户数据表</span></p>
</td>
</tr>
<tr>
<td width="91" valign="top">
<p><strong><span>Category</span></strong></p>
</td>
<td width="187" valign="top">
<p><span>分类，帖子分类，此分类是针对</span><span>Section</span><span>进行的，每个</span><span>Section</span><span>都可以有自己的分类，在</span><span>CS</span><span>中又叫</span><span>TAG</span><span>，可以适当改造一下就变为时下流行的</span><span>TAG</span><span>功能</span></p>
</td>
<td width="172" valign="top">
<p><span>cs_Post_Categories</span><span>＆</span><span>cs_Post_Categories_Parents</span><span>保存每个</span><span>Section</span><span>的分类统计</span></p>
<p><span>cs_Posts_InCategories</span><span>保存每篇帖子对应的分类</span></p>
</td>
<td width="118" valign="top">
<p><span>CS</span><span>中只有对每个</span><span>Section</span><span>的分类管理，而缺少对整个网站的分类，我们可以按照</span><span>Category</span><span>模块进行扩展</span></p>
</td>
</tr>
<tr>
<td width="91" valign="top">
<p><strong><span>Permission</span></strong></p>
</td>
<td width="187" valign="top">
<p><span>授权，与</span><span>Role</span><span>角色挂钩，此针对各</span><span>Section</span><span>设置各种角色的对应权限，也就是权限矩阵</span></p>
</td>
<td width="172" valign="top">
<p><span>cs_ProductPermissions</span><span>在此保存针对每种应用模块的默认权限。</span><span>cs_SectionPermissions</span><span>针对各种</span><span>Section</span><span>的个性权限</span></p>
</td>
<td width="118" valign="top">
<p><span>此处缺少对</span><span>Group</span><span>的默认权限，不过根据源代码扩充为支持</span><span>Group</span><span>默认权限的功能也很容易</span></p>
</td>
</tr>
<tr>
<td width="91" valign="top">
<p><strong><span>Membership</span></strong></p>
</td>
<td width="187" valign="top">
<p><span>建立在微软的</span><span>Membership</span><span>组件下的基于角色的用户管理系统，使用此功能对设置权限和对用户相关功能的扩充都非常方便</span></p>
</td>
<td width="172" valign="top">
<p><span>以</span><span>asp_net</span><span>打头的数据表是</span><span>Membership</span><span>所需要的，另外</span><span>cs</span><span>中扩展了</span><span>cs_Users</span><span>及</span><span>cs_UserProfile</span><span>等数据表</span></p>
</td>
<td width="118" valign="top">
<p><span>CS</span><span>完全依靠</span><span>Membership</span><span>达键的用户基础管理系统，很多地方值得好好研究</span></p>
</td>
</tr>
<tr>
<td width="91" valign="top">
<p><strong><span>Job</span></strong></p>
</td>
<td width="187" valign="top">
<p><span>B/S</span><span>程序需要定时处理的功能，在此称为</span><span>Job</span><span>，我们可以在</span><span>communityserver.config</span><span>文件中看到那些</span><span>Job</span><span>的配置，运行这些</span><span>Job</span><span>都是在单独的线程中执行，与用户交互无关</span></p>
</td>
<td width="172" valign="top">
<p><span>无</span></p>
</td>
<td width="118" valign="top">
<p><span>可以通过后台管理的</span><span>Jobs Report</span><span>查看</span><span>Job</span><span>的情况，也可通过查看</span><span>Exception Report</span><span>查看<span>Jobs</span>有无运行异常</span></p>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">熟悉这些关键词及模块对</span><span lang="EN-US">CS</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的掌握至关重要，希望通过此篇介绍能帮助你更快的了解</span><span lang="EN-US">CS</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">的基础。</span></p><img src ="http://www.cnblogs.com/Dragonpro/aggbug/389671.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47951/" target="_blank">Debian无视GNU创始人警告 接受Mono</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>Community Server系列之五：CS2中的Ajax原理</title><link>http://www.cnblogs.com/Dragonpro/archive/2006/04/26/385925.html</link><dc:creator>dragonpro</dc:creator><author>dragonpro</author><pubDate>Wed, 26 Apr 2006 12:12:00 GMT</pubDate><guid>http://www.cnblogs.com/Dragonpro/archive/2006/04/26/385925.html</guid><wfw:comment>http://www.cnblogs.com/Dragonpro/comments/385925.html</wfw:comment><comments>http://www.cnblogs.com/Dragonpro/archive/2006/04/26/385925.html#Feedback</comments><slash:comments>11</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dragonpro/comments/commentRss/385925.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dragonpro/services/trackbacks/385925.html</trackback:ping><description><![CDATA[摘要: 上一节用了一个示例说明了Ajax在CS2中的一点简单的应用，这一节里着重探讨一下CS2中的Ajax的高级应用和实现原理，在了解Ajax的实现原理前我觉得有必要先了解一下aspx页面从请求到返回HTML都做了些什么，我想在了解了页面处理机制再来认识Ajax处理原理应该应该会很有帮助的，见下表：序号阶段页面事件可覆盖的方法1页面初始化Init2加载视图状态LoadViewState3处理回发数据任意实&nbsp;&nbsp;<a href='http://www.cnblogs.com/Dragonpro/archive/2006/04/26/385925.html'>阅读全文</a><img src ="http://www.cnblogs.com/Dragonpro/aggbug/385925.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47950/" target="_blank">iPhone 3GS首发日创AT&T多项纪录</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>Community Server系列之四：Ajax在CS2.0中的应用1</title><link>http://www.cnblogs.com/Dragonpro/archive/2006/04/25/384972.html</link><dc:creator>dragonpro</dc:creator><author>dragonpro</author><pubDate>Tue, 25 Apr 2006 14:06:00 GMT</pubDate><guid>http://www.cnblogs.com/Dragonpro/archive/2006/04/25/384972.html</guid><wfw:comment>http://www.cnblogs.com/Dragonpro/comments/384972.html</wfw:comment><comments>http://www.cnblogs.com/Dragonpro/archive/2006/04/25/384972.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dragonpro/comments/commentRss/384972.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dragonpro/services/trackbacks/384972.html</trackback:ping><description><![CDATA[<p>&nbsp;<span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Ajax</span><span>技术在时下很热门，当然在</span><span>CS2.0</span><span>中也不例外的运用到了此技术，</span><span>CS2</span><span>中没有使用任何第三方</span><span>Ajax</span><span>控件，这就给我们提供一个研究</span><span>Ajax</span><span>机理的好地方，现介绍一下在</span><span>CS2</span><span>中</span><span>Ajax</span><span>的一些简单应用，并分析应用的原理。</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>我想要研究此技术最好的办法就是把代码分离出来放在自己的工程中，重现这些功能，在重现这些功能的时候一定会遇到这样或那样的问题，这恰好是我们应该着重研究的地方，所以让我们先来分离代码吧。</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>就拿</span><span>CS</span><span>中的一个</span><span>Ajax</span><span>小应用来说，当具有系统管理员权限的用户进入后，可以看到页面的标题和一些新闻内容是可以无刷新改变的，让我们先从此处下手吧。找到相应的控件页面，我们会发现，这些控件引用的一些文件，我现在先把它们列出来，下面的截图是我在分析</span><span>TitleBar</span><span>代码后分离出来的：<br /><img src="http://www.cnblogs.com/images/cnblogs_com/dragonpro/CommunityServer/CS_4_1.gif" border="0" alt="" /><img src="http://www.cnblogs.com/images/cnblogs_com/dragonpro/CommunityServer/CS_4_2.gif" border="0" alt="" width="171" height="65" /><br />&nbsp; </span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>参看上图，有这么几个文件是很关键的：</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AjaxManager.cs</span><span>主要提供</span><span>Ajax</span><span>应用所需要的功能枚举等等，此文件包含三个类见图</span><span>2</span><span>，其中</span><span>AjaxManager</span><span>里面包含了几个静态方法，这个是关键。</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Global.js</span><span>这个文件主要包含两个重要的脚本函数来处理客户端的</span><span>Ajax</span><span>提交，另外还有一些很有用的js函数。</span></p>
<p><span>当然，这两个文件只是基础，要使用</span><span>ajax</span><span>必需要相应的页面的配合和对</span><span>js</span><span>编程的熟悉，现在让我们来了解一下</span><span>Ajax</span><span>的机理，</span><span>Ajax</span><span>说白了就是使用</span><span>JS</span><span>脚本和</span><span>XMLHttp</span><span>技术在后台提交数据到服务器，经过服务器相应方法的处理后把数据返回给客户端，由于数据在后台提交的，用户只看到数据的变化却看不到页面的刷新，功能酷酷的，实现起来也不难，这就开始了：</span></p>
<p><span>首先让我们看看在</span><span>CS2</span><span>中的</span><span>Ajax</span><span>的实现原理<br /><img src="http://www.cnblogs.com/images/cnblogs_com/dragonpro/CommunityServer/CS_4_3.gif" border="0" alt="" /><br />&nbsp; </span></p>
<p><span>按照上图的步骤来分析，并且以一个实例来了解它，这个示例很简单：在客户端提供两个用户输入的数字，提交到服务器进行计算，并把计算结果返回给客户端。</span></p>
<p><span>（</span><span><a href="/Files/Dragonpro/CS_Ajax.rar"><span><span>在看下面的解说之前最好先下载本篇文章的示例程序结合着看。</span></span></a></span><span>）</span></p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>首先，我们建立一个</span><span>aspx</span><span>的页面，这里命名为</span><span>Default.aspx</span><span>，第一步要在提交请求的时候让页面注册</span><span>Ajax_CallBack</span><span>脚本（此脚本即是客户端和服务器通讯的关键），这里我们的后台代码很简单你可以在</span><span>Page_Load</span><span>方法里写成这样</span><span>if</span><span>(!<span>this</span>.IsPostBack) AjaxManager.Register(<span>this</span>,"Counter");</span><span>可以看出调用了<span>AjaxManager</span>的静态方法，此方法的作用就是分析传进去的参数<span>(</span>这里的参数为<span>this</span>也就是页面的引用<span>)</span>，生成客户端<span>Ajax_CallBack</span>脚本。在生成脚本之前自动去找在此页面有多少个带了<span>AjaxMethod</span>属性的方法，一个服务器方法对应一个客户端<span>Ajax_CallBack</span>方法，生成了客户端脚本后我们只需要在客户端写上少量的调用方法即可与服务器通讯了。在这里注册到客户端的脚本为：<br /></span></p>
<div><span>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><span style="COLOR: #000000">"</span><span style="COLOR: #000000">CounterEnter</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">:&nbsp;</span><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">(first,&nbsp;second,&nbsp;clientCallBack)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;Ajax_CallBack('ASP.Default_aspx',&nbsp;</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">,&nbsp;'CounterEnter',&nbsp;[first,second],&nbsp;clientCallBack,&nbsp;</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #0000ff">false</span><span style="COLOR: #000000">,'</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">cs_ajax</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">Default.aspx</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">Ajax_CallBack</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">true</span><span style="COLOR: #000000">');<br />}</span></div>
</span><br /><span>有了这个脚本，客户端的工作并没有做完，因为还没有让客户端控件响应操作，这里就需要我们手动写一些操作代码了，不过一般不会太复杂，比如这里我们只需要在页面加多这样的<span lang="EN-US">js</span>语句快：<br /></span></div>
<div><span>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; font-size: 13px; width: 98%; background-color: #eeeeee;"><span style="COLOR: #0000ff">function</span><span style="COLOR: #000000">&nbsp;CounterEnter(){<br />$('txtResult').value</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;iteSettings.CounterEnter($('txtFirst').value,$('txtSecond').value,</span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">).value;&nbsp;}</span></div>
</span></div>
<p>
<br />&nbsp;&nbsp;&nbsp;&nbsp; 在客户端的按钮onclick事件上调用此函数即可，这段客户端的代码也许有人会迷糊，其中&ldquo;$&rdquo;函数是Glogal.js文件中的，等同于document.getElementById，iteSettings.CounterEnter则是调用前面注册到客户端的脚本，那么这段代码的意思是传递第一个和第二个输入筐的值到服务器器上的CounterEnter方法，并把返回的结果付给txtResult的文本框，前面已经提到过服务器上的CounterEnter方法此方法带有AjaxMethod属性，程序会自动找到此方法并执行的。至于怎么找到的，在后面详解，服务器方法在执行完此方法后返回结果，返回的值通过AjaxManager的相关方法以js脚本的形式Response给客户端（形式如：{value:&rsquo;aaa&rsquo;,error:null}），在得到这个返回对象后我们只需要调用其中的Value属性即可获取返回的值。<br />&nbsp;&nbsp;&nbsp; 那么服务器怎样去分辨是Get请求还是PostBack或者AjaxPostBack呢，只有分清楚了这个才能在该执行的时候执行相应的方法，好的，其实在这里通过Get方法和AjaxPost的数据asp.net都不认为是回发给服务器，这样一来我们在PageLoad代码里的写的if(!this.IsPostBack)对两者请求都视为等效，那么通过后台的AjaxPost请求的页面同样会去执行AjaxManager.Register方法，那么我们看看此方法除了注册客户端JS代码还做了写什么呢。我们注意到在最后一段代码里有一句：control.PreRender += new EventHandler(OnPreRender);这句话就是在当即将Response给客户端页面的时候执行OnPreRender方法先，此方法的作用即是判断客户端提交的参数里是否有Ajax参数，如果有就判断此次Request为Ajax提交，需要执行服务器的相关方法，此处通过一系列的跳转和反射找到了应该调用的方法并执行，返回执行完后的结果给客户端并中止页面继续Responst，这样就完成了一个完整的Ajax调用，当然在AjaxManager里面有很多细节在这里没有详细写出来，如有异议或疑问希望多多指正和探讨，也希望此篇帖子能起到抛砖引玉的作用，给大家一个小小的参考。<br />&nbsp;&nbsp; 下一篇将介绍Ajax在CS2中的高级应用，<a href="/Files/Dragonpro/CS_Ajax.rar">本文示例下载</a>。</p><img src ="http://www.cnblogs.com/Dragonpro/aggbug/384972.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47949/" target="_blank">Silverlight开发大赛奖金高达10000美元</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>Community Server系列之三：页面间关系2[介绍]</title><link>http://www.cnblogs.com/Dragonpro/archive/2006/04/24/383900.html</link><dc:creator>dragonpro</dc:creator><author>dragonpro</author><pubDate>Mon, 24 Apr 2006 12:54:00 GMT</pubDate><guid>http://www.cnblogs.com/Dragonpro/archive/2006/04/24/383900.html</guid><wfw:comment>http://www.cnblogs.com/Dragonpro/comments/383900.html</wfw:comment><comments>http://www.cnblogs.com/Dragonpro/archive/2006/04/24/383900.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dragonpro/comments/commentRss/383900.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dragonpro/services/trackbacks/383900.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CS中几乎所有的页面都是靠模板的呈现方式来实现的，那么CS中有些什么样的模板呢，让我们看看CS中的模板机制吧：
</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在我们使用IDE打开Default.aspx页面时，我们仅仅看到一些毫无顺序的控件，几乎看不到控制布局的Html标签，不要困惑，因为在CS中UI层也是按照模板思想分层实现的。先来看看几个类的实现：</p>
<p>打开\src\Controls\ContentContainer.cs</p>
<p>这个文件里分别实现了</p>
<p align="left">public class MPContainer : MetaBuilders.WebControls.MasterPages.ContentContainer{&hellip;}</p>
<p align="left">public class MPRegion : MetaBuilders.WebControls.MasterPages.Region{}</p>
<p align="left">public class MPContent : MetaBuilders.WebControls.MasterPages.Content{}</p>
<p align="left">public class MPForm : MetaBuilders.WebControls.MasterPages.NoBugForm {}</p>
<p>public class MPScript : System.Web.UI.WebControls.PlaceHolder {}</p>
<p>这些类前四个都继承自MetaBuilders.WebControls.MasterPages，那么为什么CS不直接使用这些控件呢，因为这是第三方控件，主动权不在CS中，CS为了隔离控件变动使用了代理模式，这样就可以在程序里使用统一的方法，不用担心以后第三方控件的变动了，同样，在CS系统里还大量运用了此模式，比如在使用FreeTextBox的时候不是直接使用，而是通过Telligent.FreeTextBoxWraper这个类进行封装隔离，并且同时继承自ITextEditor接口，这样程序里面在需要用到文本编辑器的时候只需要引入此接口根据配置加载文本编辑器包装类就可以了，这样处理之后撤卸和安装新扩展都会很容易，如果对此模式还不甚了解的话，我会在后面章节介绍这里的原理。</p>
<p>&nbsp;&nbsp;&nbsp; 好了，了解了这么几个控件类之后就看我们怎样在程序里面使用了，首先简单介绍一下这几个控件类的作用吧：</p>
<p>MPRegion：向页面进行注册的控件，这有点类似于那些大型的新闻静态页面发布系统的标识符，生成静态页面的时候根据标识符替换相应的动态数据。</p>
<p>MPForm ：作用很简单，就是为客户端生成Form标签。</p>
<p>MPContainer ：包容MPContent控件的容器控件。</p>
<p>MPContent：此控件的ID只要和在Master页面设置的MPRegion控件的ID一致，那么此控件中的内容便自动嵌入到MPRegion控件的位置了，此控件必须用在MPContainer之内。</p>
<p>
简单介绍了这些控件之后如果你是初次接触CS那么肯定还会很迷糊，别急，让我们先了解在CS中模板的&ldquo;继承&rdquo;关系，虽然不是严格的继承但我们可以这样理解，让我们打开具体的风格文件夹在这里我们看看在\src\Web\Themes\default\文件夹下的Masters文件夹，此文件夹下大部分都是以Master命名的ascx文件不难从名字可以看出，最主要的文件当然是Master.ascx了，这是所有页面都需要引用的主模板，根据继承的概念我们应该清楚在此文件里应该放一些每个页面都需要用到的Html标签等等，比如页头，公用样式，页面的布局页角以及Form标签等等，如下面的代码：</p>
<div><img id="Code_Closed_Image_205022" onclick="this.style.display='none'; Code_Closed_Text_205022.style.display='none'; Code_Open_Image_205022.style.display='inline'; Code_Open_Text_205022.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ContractedBlock.gif" alt="" width="11" height="16" align="top" /><img id="Code_Open_Image_205022" onclick="this.style.display='none'; Code_Open_Text_205022.style.display='none'; Code_Closed_Image_205022.style.display='inline'; Code_Closed_Text_205022.style.display='inline';" src="http://www.cnblogs.com/images/OutliningIndicators/ExpandedBlockStart.gif" alt="" width="11" height="16" align="top" />Master.ascx<br /><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->&lt;!DOCTYPE&nbsp;html&nbsp;PUBLIC&nbsp;"-//W3C//DTD&nbsp;XHTML&nbsp;1.0&nbsp;Frameset//EN"&nbsp;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"&gt;&nbsp;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&lt;html&nbsp;xmlns="http://www.w3.org/1999/xhtml"&nbsp;xml:lang="en"&nbsp;lang="en"&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&lt;CS:MPRegion&nbsp;id="HeaderRegion"&nbsp;runat="server"&nbsp;&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&lt;CS:Head&nbsp;runat="Server"&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;meta&nbsp;http-equiv="Content-Type"&nbsp;content="text/html;&nbsp;charset=iso-8859-1"&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;CS:Style&nbsp;id="UserStyle"&nbsp;runat="server"&nbsp;visible&nbsp;=&nbsp;"true"&nbsp;/&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;CS:Style&nbsp;id="s2"&nbsp;runat="server"&nbsp;visible&nbsp;=&nbsp;"true"&nbsp;Href="../style/Common.css"&nbsp;/&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;CS:Style&nbsp;&nbsp;runat="server"&nbsp;Href="../style/common_print.css"&nbsp;media="print"&nbsp;/&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;CS:Script&nbsp;id="s"&nbsp;runat="server"&nbsp;&nbsp;/&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/CS:Head&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/CS:MPRegion&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&lt;body&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;CS:MPForm&nbsp;runat="server"&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;CS:MPRegion&nbsp;id="bscr"&nbsp;runat="server"&nbsp;/&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;id="Common"&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;id="CommonHeader"&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" 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;&lt;CS:MPRegion&nbsp;id="bhcr"&nbsp;runat="server"&nbsp;&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" 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;&lt;CS:TitleBar&nbsp;runat="server"&nbsp;id="t"&nbsp;/&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" 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;&lt;/CS:MPRegion&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" /><br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;id="CommonBody"&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" 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;&lt;table&nbsp;cellspacing="0"&nbsp;cellpadding="0"&nbsp;border="0"&nbsp;width="100%"&nbsp;id="CommonBodyTable"&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" 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;&lt;tr&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" 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;&lt;td&nbsp;valign="top"&nbsp;id="CommonLeftColumn"&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" 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;&nbsp;&nbsp;&nbsp;&nbsp;&lt;CS:MPRegion&nbsp;id="lcr"&nbsp;runat="server"&nbsp;/&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" 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;&lt;/td&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" 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;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" 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;&lt;td&nbsp;valign="top"&nbsp;width="100%"&nbsp;id="CommonBodyColumn"&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" 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;&nbsp;&nbsp;&nbsp;&nbsp;&lt;CS:MPRegion&nbsp;id="bcr"&nbsp;runat="server"&nbsp;/&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" 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;&lt;/td&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" 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;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" 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;&lt;td&nbsp;valign="top"&nbsp;id="CommonRightColumn"&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" 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;&nbsp;&nbsp;&nbsp;&nbsp;&lt;CS:MPRegion&nbsp;id="rcr"&nbsp;runat="server"&nbsp;/&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" 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;&lt;/td&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" 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;&lt;/tr&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" 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;&lt;/table&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&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" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;div&nbsp;id="CommonFooter"&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" 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;&lt;CS:MPRegion&nbsp;id="BodyFooterRegion"&nbsp;runat="server"&nbsp;&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" 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;&lt;CS:Footer&nbsp;runat="server"&nbsp;id="Footer1"/&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" 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;&lt;/CS:MPRegion&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/div&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/CS:MPRegion&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/CS:MPForm&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&nbsp;&nbsp;&nbsp;&nbsp;&lt;/body&gt;<br /><img src="http://www.cnblogs.com/images/OutliningIndicators/None.gif" alt="" align="top" />&lt;/html&gt;</div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从代码中我们可以看出MPRegion和MPForm这两个元素，也就是告诉&ldquo;继承&rdquo;自这个页面的控件什么地方应该嵌入什么。比如&lt;CS:MPRegion id="HeaderRegion" runat="server" &gt;这个标签表示如果子页面有id为HeaderRegion的MPContent这个控件对象的时候，那么此控件中的内容将插入到此处替换调默认的内容，如果子页面不存在此ID的MPContent的话则使用此标签内的内容。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其他文件，比如HomeMaster.ascx文件表示首页的模板，此模板的基本模板还是使用Master.ascx这就好比类的继承关系，Master是基类，HomeMaster是首页的基类，default.aspx则是继承自HomeMaster的子类，只是需要在首页的MPContainer标签处标明使用哪一个模板即可，如&lt;CS:MPContainer runat="server" id="Mpcontainer1" ThemeMasterFile = "HomeMaster.ascx" &gt;一个好处就是尽量减少了重复的公用HTML标签，另外一个好处是页面可以分层，比如在设计一个较复杂的首页时，我们可以把大量的复杂的Html标签放在HomeMaster只在需要插入动态内容的地方注册MPRegion标签，这样做后我们只需要在首页里使用MPContent包含相应的动态内容而不需要被复制的Html标签搞昏了头。这就是为什么我们初次打开首页几乎看不到控制首页格式的HTML标签的原因。同理，其他模块也是如此这般，这里就不冗诉了。</p><img src ="http://www.cnblogs.com/Dragonpro/aggbug/383900.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47947/" target="_blank">微软告攒机商第一案胜诉</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>Community Server系列之二：页面之间的关系1[介绍]</title><link>http://www.cnblogs.com/Dragonpro/archive/2006/04/24/383097.html</link><dc:creator>dragonpro</dc:creator><author>dragonpro</author><pubDate>Sun, 23 Apr 2006 19:12:00 GMT</pubDate><guid>http://www.cnblogs.com/Dragonpro/archive/2006/04/24/383097.html</guid><wfw:comment>http://www.cnblogs.com/Dragonpro/comments/383097.html</wfw:comment><comments>http://www.cnblogs.com/Dragonpro/archive/2006/04/24/383097.html#Feedback</comments><slash:comments>10</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dragonpro/comments/commentRss/383097.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dragonpro/services/trackbacks/383097.html</trackback:ping><description><![CDATA[摘要: 当我们第一眼见到CS的时候你是不是被他那么纷繁复杂的结构看傻眼呢。那么在认识CS之前最好对它的页面间关系做一个全面的了解，这对我门改造CS有较大的帮助。&nbsp;&nbsp;<a href='http://www.cnblogs.com/Dragonpro/archive/2006/04/24/383097.html'>阅读全文</a><img src ="http://www.cnblogs.com/Dragonpro/aggbug/383097.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47947/" target="_blank">微软告攒机商第一案胜诉</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>Community Server系列之一：开篇简介</title><link>http://www.cnblogs.com/Dragonpro/archive/2006/04/24/383095.html</link><dc:creator>dragonpro</dc:creator><author>dragonpro</author><pubDate>Sun, 23 Apr 2006 18:53:00 GMT</pubDate><guid>http://www.cnblogs.com/Dragonpro/archive/2006/04/24/383095.html</guid><wfw:comment>http://www.cnblogs.com/Dragonpro/comments/383095.html</wfw:comment><comments>http://www.cnblogs.com/Dragonpro/archive/2006/04/24/383095.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dragonpro/comments/commentRss/383095.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dragonpro/services/trackbacks/383095.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span>对</span><span>Community Server2.0</span><span>（简称</span><span>CS</span><span>）研究了有一些时间了，抱着学习和探讨的态度，希望写一系列的文章总结我在研究和开发过程中得到的经验和一些看法。</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 简介：</span><span>CS</span><span>是一个非常庞大并且严格按照</span><span>B/S</span><span>三层架构设计的社区系统，目前的最新版本为</span><span>2.0</span><span>包括有常用的社区功能（博客、论坛、相册、下载、</span><span>RSS</span><span>阅读器等等）并且可以方便的扩展其他自定义模块。可以看出使用本系统可以很容易的达建时下流行的</span><span>WEB2.0</span><span>系统，特别是在企业内部的应用中会有很大的空间，事实上我就是在使用此系统为企业达建交流平台，功能多多，等待我们发现的还有很多。</span></p>
<p><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CS</span><span>系统有着严密的设计和分层机制，严格按照三层架构达建，非常适合团队开发，做二次开发仍然是这样。同样，有很多宝贵的设计也是我们难得一见的，学习了此系统对开发企业级应用的也是很有帮助的。具体的架构介绍可以参考</span><span><a href="http://ugoer.cnblogs.com/archive/2005/09/02/228682.html" target="_blank">ugoer</a></span><span>的相关帖子。我会在以后尽量抽出时间对</span><span>CS</span><span>系统的其他相关技术做一些介绍。</span></p><img src ="http://www.cnblogs.com/Dragonpro/aggbug/383095.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47947/" target="_blank">微软告攒机商第一案胜诉</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>梦里的灵感</title><link>http://www.cnblogs.com/Dragonpro/archive/2006/04/15/1308929.html</link><dc:creator>dragonpro</dc:creator><author>dragonpro</author><pubDate>Sat, 15 Apr 2006 01:14:00 GMT</pubDate><guid>http://www.cnblogs.com/Dragonpro/archive/2006/04/15/1308929.html</guid><wfw:comment>http://www.cnblogs.com/Dragonpro/comments/1308929.html</wfw:comment><comments>http://www.cnblogs.com/Dragonpro/archive/2006/04/15/1308929.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dragonpro/comments/commentRss/1308929.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dragonpro/services/trackbacks/1308929.html</trackback:ping><description><![CDATA[<p>人在有激情的时候真的会随时产生灵感，我不只一次在梦里产生灵感了，而且是那么的真实，那种感觉，真好！我一直都是倒上床就开睡，一直睡到大天亮，可是竟然昨晚我在半夜4点过从梦中醒来，不是做恶梦醒来，而是被灵感给叫醒了，醒来后我模模糊糊想了灵感驱使的几个问题，还真有点令人激动（模糊的激动），怕在梦中的东西给忘了，连忙起身拿来纸和笔借着手机微弱的照明记下了这些灵感，当我要记的时候有些东西已经比较模糊了，没记太全，关于WEB2.0 的： </p>
<ul>
<li>Web2.0就是有WEB特性的WinForm应用程序，这是开发用户体念的方向。 </li>
<li>关注什么：关注用户体念，用户的劳动是否能得到相应的甚至更多的回报，双赢是必须的模式，抓住一点，用户凭什么用你的程序，它能为用户带来什么。 </li>
<li>每个用户（应该没有例外），骨子里都流着自私的血液，不要理所当然的想用户会怎么用你的程序，用户一点都不傻，不会白干活。</li>
</ul>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 其实这些在平时也想过，但是在梦中想到的又有另外的感觉，先把它记录下来，我想这无论对Web2.0还是对其他软件以及行业来说，这个方向应该都没有太偏吧。哦，对了还有一点其它的灵感，先不写在这里了<img src="http://spaces.msn.com/rte/emoticons/smile_tongue.gif" alt="" />。 </p><img src ="http://www.cnblogs.com/Dragonpro/aggbug/1308929.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47946/" target="_blank">Mono这只猴子招惹了谁？</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>使用Enterprise Library DAAB架构灵活的数据提供层</title><link>http://www.cnblogs.com/Dragonpro/archive/2006/04/11/372696.html</link><dc:creator>dragonpro</dc:creator><author>dragonpro</author><pubDate>Tue, 11 Apr 2006 15:07:00 GMT</pubDate><guid>http://www.cnblogs.com/Dragonpro/archive/2006/04/11/372696.html</guid><wfw:comment>http://www.cnblogs.com/Dragonpro/comments/372696.html</wfw:comment><comments>http://www.cnblogs.com/Dragonpro/archive/2006/04/11/372696.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dragonpro/comments/commentRss/372696.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dragonpro/services/trackbacks/372696.html</trackback:ping><description><![CDATA[摘要: 前段时间提到使用DAAB模块引用到自己的系统中遇到的困惑：http://dragonpro.cnblogs.com/archive/2005/10/20/258486.html
后来经过我的反复思索和试验，找到了一种折中的方式，既尽量减少了重复代码屏蔽了数据库的异构问题，又可以较合理体现分层体系。现在抽空把这个架构分享出来，给大家多多少少一点参考，也希望多批评指正。&nbsp;&nbsp;<a href='http://www.cnblogs.com/Dragonpro/archive/2006/04/11/372696.html'>阅读全文</a><img src ="http://www.cnblogs.com/Dragonpro/aggbug/372696.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47945/" target="_blank">Firefox 3.5本月晚些时候即首次升级</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>异构数据库转换工具的结构说明</title><link>http://www.cnblogs.com/Dragonpro/archive/2006/04/09/370889.html</link><dc:creator>dragonpro</dc:creator><author>dragonpro</author><pubDate>Sun, 09 Apr 2006 15:32:00 GMT</pubDate><guid>http://www.cnblogs.com/Dragonpro/archive/2006/04/09/370889.html</guid><wfw:comment>http://www.cnblogs.com/Dragonpro/comments/370889.html</wfw:comment><comments>http://www.cnblogs.com/Dragonpro/archive/2006/04/09/370889.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dragonpro/comments/commentRss/370889.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dragonpro/services/trackbacks/370889.html</trackback:ping><description><![CDATA[摘要: 前篇工具介绍：http://dragonpro.cnblogs.com/archive/2006/04/09/370415.html
此为结构说明篇，可能大部分朋友对这个小工具不会感兴趣，不过当我们做项目时如果有这方面的需要的话我希望还是能用此软件帮上点忙。&nbsp;&nbsp;<a href='http://www.cnblogs.com/Dragonpro/archive/2006/04/09/370889.html'>阅读全文</a><img src ="http://www.cnblogs.com/Dragonpro/aggbug/370889.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47944/" target="_blank">Google App Engine出现故障宕机6小时</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>【全源码发布】异构数据库转换工具</title><link>http://www.cnblogs.com/Dragonpro/archive/2006/04/09/370415.html</link><dc:creator>dragonpro</dc:creator><author>dragonpro</author><pubDate>Sat, 08 Apr 2006 19:10:00 GMT</pubDate><guid>http://www.cnblogs.com/Dragonpro/archive/2006/04/09/370415.html</guid><wfw:comment>http://www.cnblogs.com/Dragonpro/comments/370415.html</wfw:comment><comments>http://www.cnblogs.com/Dragonpro/archive/2006/04/09/370415.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dragonpro/comments/commentRss/370415.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dragonpro/services/trackbacks/370415.html</trackback:ping><description><![CDATA[摘要: 在我看来Oracle和SQLServer数据库之间如果要复制数据和结构，好像还是个麻烦事，当然肯定会有相似或更好的工具，但由于我天生懒惰不想去找，索性自己写了个工具，可以在SQLServer和Oracle之间进行任意组合的数据转换。目前这个工具建立在Microsoft Enterprise Library之上的，屏蔽了不同数据库之间的数据操作，使得在建立这个工具的时候只需要考虑业务问题，也算是DAAB模块的小小实例吧。&nbsp;&nbsp;<a href='http://www.cnblogs.com/Dragonpro/archive/2006/04/09/370415.html'>阅读全文</a><img src ="http://www.cnblogs.com/Dragonpro/aggbug/370415.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47944/" target="_blank">Google App Engine出现故障宕机6小时</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>怎样才算成功</title><link>http://www.cnblogs.com/Dragonpro/archive/2006/04/08/1308941.html</link><dc:creator>dragonpro</dc:creator><author>dragonpro</author><pubDate>Sat, 08 Apr 2006 01:27:00 GMT</pubDate><guid>http://www.cnblogs.com/Dragonpro/archive/2006/04/08/1308941.html</guid><wfw:comment>http://www.cnblogs.com/Dragonpro/comments/1308941.html</wfw:comment><comments>http://www.cnblogs.com/Dragonpro/archive/2006/04/08/1308941.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dragonpro/comments/commentRss/1308941.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dragonpro/services/trackbacks/1308941.html</trackback:ping><description><![CDATA[<p><em>答案自：</em><a href="http://googlechinablog.com/2006/02/blog-post_24.html"><em>http://googlechinablog.com/2006/02/blog-post_24.html</em></a>&nbsp;<em>&ldquo;为人民服务&rdquo; 才能基业长青。</em> </p>
<p><em></em> </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我经常在想人好容易来世上走一朝，究竟到老的时候怎样才能回首往事而不后悔，我想我的准则是能为这个社会带来了与人方便，给人快乐的事物，这种程度越大越好。当然，这与个人利益的获取是不矛盾的，Bill Gates创造了微软帝国，为每个家庭桌上都放上了个人电脑而努力，当然为这个社会带来了多少也就会得到社会相应的回报。如果想方设法的想多赚钱而不想为人民服务的话，早晚会被社会所抛弃。我觉得这是个大的生态规律，虽如有些投机倒把让人眼红的例子，但那并不能说明什么，只是这个大的生态环境里面的小插曲，而最终的大方向还得依靠这个生态规律来筛选。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 盖茨和Googler们要是没有为人民服务的这种思想的话，我想也发展不到现在这种人人羡慕的规模。让我们看看他们的初衷，盖茨最初是希望人人用上电脑家家都拥有方便易用的个人电脑，而Google的一句有名的话即是：Google是极力想让用户尽快从自己的网站上离开，也就让用户快速定位到自己想要的东西。不难看出这些初衷都是毫不利己专门利人的思想，而恰恰社会回报了他们。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我一直比较欣赏<a href="http://g.msn.com/0SEP/zhcnrs?name=Keso">Keso</a>，也很赞同他的观点，路人皆知他是很推崇Google而不屑于百度的，以前我还不太明白，因为我用百度搜中文反馈的结果似乎比Google要好。然而比较了Google和Baidu的一些做法后才知其中另有端倪，Google的左侧排名是完全由网页本身相关性决定的自然结果，百度却有竞价排名，影响了搜索结果的排序，当然还有其他的一些让人感觉黑糊糊的东西，在没调查特别清楚之前还是不说了，了解了这些之后虽然感觉BaiDu对中文支持要好，但使我对它的印象却大大的打了折扣，&ldquo;不愧&rdquo;为中国企业。从这里看出两种处事原则，一个为人民服务是图，一个惟利是图。当然社会回报会更倾向于谁就不用我说了。 </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 所以我对成功的理解：<strong>不是看获得了多少，而是看为社会做出了多少！<br /></strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 《基业常青》这本书我倒是买了还没看，不过同一作者的另外一本畅销书《从优秀到卓越》我倒是读了多遍，非常的推荐。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 同样引用《基业长青》里的话：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &ldquo;把用户和产品放在利润之前是奇迹性的&rdquo; -- 福特汽车公司前首席执行官<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &ldquo;我们绝对不要忘记，药品是为人类造福的，并非为了利润。只要我们牢记这点，利益会随之而来，而且从来如此&rdquo; -- 美国默沙东制药公司前总裁 </p><img src ="http://www.cnblogs.com/Dragonpro/aggbug/1308941.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47943/" target="_blank">消息称Facebook今年营收将达5.5亿美元</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>工作、激情、挑战</title><link>http://www.cnblogs.com/Dragonpro/archive/2006/03/03/1308945.html</link><dc:creator>dragonpro</dc:creator><author>dragonpro</author><pubDate>Fri, 03 Mar 2006 01:34:00 GMT</pubDate><guid>http://www.cnblogs.com/Dragonpro/archive/2006/03/03/1308945.html</guid><wfw:comment>http://www.cnblogs.com/Dragonpro/comments/1308945.html</wfw:comment><comments>http://www.cnblogs.com/Dragonpro/archive/2006/03/03/1308945.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dragonpro/comments/commentRss/1308945.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dragonpro/services/trackbacks/1308945.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 今天是我在工作了两年的公司里工作的最后一天，即将到金碟软件任职的我心情复杂，我不知道我应该怎样去形容我的心情，我并没有感觉到高兴，因为我后悔我的犹豫。我不知道我的定力哪里会那么大，原来的工作大部分时间是没有激情的，为公司的制度和管理而懊恼，为公司不太科学的机制而费神，为没有激情的工作而工作。也许我严重了，但这的确使我感到很压抑，创造力的压抑，激情的压抑，说心里话，我是多么想把自己对软件行业的激情充分的发挥出来，为公司创造更大的效益，然而我却找不到发挥的门路，试问还有比这更郁闷的事吗？ </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在上大学的时候我浪费了不少时间，而工作之后虽然得到了很大程度的重视，然而从现在这个角度看来工作后我仍然浪费了不少时间，我感觉我的发挥应该远远超出现在的状态，而事实却并非如此，我想如果我再这样下去我也许真会压抑的疯掉。 </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 本来一年前就有这个打算，可惜不知不觉，一年就这么过了，我是最不能容忍浪费时间的，然而我却实实在在的浪费了不少时间，我为我浪费的这些时间感到深深的默哀！它们就这么含冤而去了，再也不会回来了，希望它们一路走好，也希望今后的时间再不要这样含冤死去！ </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 新工作也许可以给我带来新的挑战和激情，因为新工作正是我所向往的WEB2.0，我必须严格要求自己，把我的全部激情爆发出去，为我所在的集体增添新的生命力，我真的希望能充分的释放自己的能量，是充分的！</p><img src ="http://www.cnblogs.com/Dragonpro/aggbug/1308945.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47937/" target="_blank">微软8月25日开始通过WSUS推送IE8</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>WEB2.0</title><link>http://www.cnblogs.com/Dragonpro/archive/2006/01/05/311176.html</link><dc:creator>dragonpro</dc:creator><author>dragonpro</author><pubDate>Wed, 04 Jan 2006 19:35:00 GMT</pubDate><guid>http://www.cnblogs.com/Dragonpro/archive/2006/01/05/311176.html</guid><wfw:comment>http://www.cnblogs.com/Dragonpro/comments/311176.html</wfw:comment><comments>http://www.cnblogs.com/Dragonpro/archive/2006/01/05/311176.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dragonpro/comments/commentRss/311176.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dragonpro/services/trackbacks/311176.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这几天，看了很多WEB2.0的东东，早些时候我也了解了些这个概念，不过没引起足够重视，我仍然需要优化自己的思维。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这几天浏览过的印象深刻的WEB2.0应用服务：</p>
<p><a href="http://www.douban.com/" target="_blank">豆瓣</a>：典型应用，用户参与其中，所有内容都是由用户产生的。</p>
<p><a href="http://www.51.com/" target="_blank">51.COM</a>：由blog产生的附加价值，用在交友这方面实在是非常好的方向，我以前也想过用什么样的交友方式，其实这个就是很好的方式了，写好blog后自然很容易交到合适的朋友。<a href="http://pangshengdong.com/" target="_blank">庞升东</a>的确把握好了机会。</p>
<p><a href="http://www.flickr.com/" target="_blank">flickr.com</a>：本来早就看到过，今天才用了一下，果然功能非常贴心，用起来很爽。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我想Web2.0就是要给人一种这样的感觉，用起来很爽，不管是博客，还是其他服务，大家都来维护一个应用，互相促进，这就是WEB2.0带给我们的新体念。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我也以我片面的语言笼统的定义一下我对WEB2.0的认识。那就是巧妙的利用了大众的智慧，大众的主观能动性为网站提供资讯，同时也享受他人提供的资讯，网站程序的有机协调使这些资讯能最优的提供给用户，巧妙的达到双赢的效果。WEB2.0这个时代让人更加振奋。</p><img src ="http://www.cnblogs.com/Dragonpro/aggbug/311176.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47935/" target="_blank">暴风称新旧版更换完毕 总计超4000万用户换装</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>2006</title><link>http://www.cnblogs.com/Dragonpro/archive/2006/01/02/309956.html</link><dc:creator>dragonpro</dc:creator><author>dragonpro</author><pubDate>Mon, 02 Jan 2006 14:49:00 GMT</pubDate><guid>http://www.cnblogs.com/Dragonpro/archive/2006/01/02/309956.html</guid><wfw:comment>http://www.cnblogs.com/Dragonpro/comments/309956.html</wfw:comment><comments>http://www.cnblogs.com/Dragonpro/archive/2006/01/02/309956.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dragonpro/comments/commentRss/309956.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dragonpro/services/trackbacks/309956.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 很久没整理自己的空间了，<a href="http://spaces.msn.com/members/lf1981/Blog/cns!1p3N0excLVFPplWsGDETKTBA!219.entry" target="_blank">元旦</a>也不知道咋过的，我想这主要是最近经历使自己的心情变得很糟了，也使自己更慵懒了，也许这些经历是必须的吧，希望我的2006能彻底改变我的生活，健康的学习工作生活。</p><img src ="http://www.cnblogs.com/Dragonpro/aggbug/309956.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47934/" target="_blank">3.5版既出 Firefox面临新挑战</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>2005年度世界500强公司名单</title><link>http://www.cnblogs.com/Dragonpro/archive/2005/12/15/298122.html</link><dc:creator>dragonpro</dc:creator><author>dragonpro</author><pubDate>Thu, 15 Dec 2005 14:44:00 GMT</pubDate><guid>http://www.cnblogs.com/Dragonpro/archive/2005/12/15/298122.html</guid><wfw:comment>http://www.cnblogs.com/Dragonpro/comments/298122.html</wfw:comment><comments>http://www.cnblogs.com/Dragonpro/archive/2005/12/15/298122.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dragonpro/comments/commentRss/298122.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dragonpro/services/trackbacks/298122.html</trackback:ping><description><![CDATA[摘要: 排名公司标志中文常用名称总部所在地主要业务营业收入百万美元1沃尔玛美国一般商品零售287,989.02英国石油英国炼油285,059.03埃克森美孚美国炼油270,772.04皇家壳牌石油英国/荷兰炼油268,690.05通用汽车美国汽车193,517.06戴姆勒克莱斯勒美国汽车176,687.57丰田汽车日本汽车172,616.38福特汽车美国汽车172,233.09通用电气 美国多元化152,&nbsp;&nbsp;<a href='http://www.cnblogs.com/Dragonpro/archive/2005/12/15/298122.html'>阅读全文</a><img src ="http://www.cnblogs.com/Dragonpro/aggbug/298122.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47930/" target="_blank">Bing首页将显示各国美景 顺推Silverlight</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>安装Team Foundation Server笔记一</title><link>http://www.cnblogs.com/Dragonpro/archive/2005/11/16/277490.html</link><dc:creator>dragonpro</dc:creator><author>dragonpro</author><pubDate>Wed, 16 Nov 2005 02:38:00 GMT</pubDate><guid>http://www.cnblogs.com/Dragonpro/archive/2005/11/16/277490.html</guid><wfw:comment>http://www.cnblogs.com/Dragonpro/comments/277490.html</wfw:comment><comments>http://www.cnblogs.com/Dragonpro/archive/2005/11/16/277490.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dragonpro/comments/commentRss/277490.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dragonpro/services/trackbacks/277490.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 安装Team Foundation Server，安装了一半，听说这个东东在Beta2之前全中国都没几个能装好，今天试了试，的确够麻烦，不仅要一大堆支持软件还要设置域控制器、安装用户等等，很是麻烦，一下午都花费在上面还没装好，明天继续装。<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这个东东与VSTS搭配当然是软件工程的终极杀手，但现就连安装都这么麻烦，不知道真正用的又有多少了，我想把这个引入公司的开发项目当中，不知前途如何。况且我们几个人的这么个团队用这个是不是大才小用了，或是我们没必要用这个，这些都还不是很明朗。但在安装过程中发现个SharePoint这个还是很有用的哦，以前为管理项目文档等问题很是头疼，初次看看这个还觉得不错，那就等我用用再说好吧。<img src ="http://www.cnblogs.com/Dragonpro/aggbug/277490.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47929/" target="_blank">Gmail 的标签马上就会支持拖拽操作了</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>SqlServer到Oracle数据库转换手记</title><link>http://www.cnblogs.com/Dragonpro/archive/2005/11/16/277473.html</link><dc:creator>dragonpro</dc:creator><author>dragonpro</author><pubDate>Wed, 16 Nov 2005 02:24:00 GMT</pubDate><guid>http://www.cnblogs.com/Dragonpro/archive/2005/11/16/277473.html</guid><wfw:comment>http://www.cnblogs.com/Dragonpro/comments/277473.html</wfw:comment><comments>http://www.cnblogs.com/Dragonpro/archive/2005/11/16/277473.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dragonpro/comments/commentRss/277473.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dragonpro/services/trackbacks/277473.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 最近做了些数据库转换工作，主要是从Sql Server转换到Oracle，过程中遇到很多问题，现进行一个小小总结，方便有同样需求的朋友们。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 需要对数据库结构、数据、自定义函数、存储过程等数据库元素进行转换，由于Sql Server和Oracle数据库语言本身的差异非常大，所以自定义函数和存储过程的转换是比较困难的一件事情，市面上也很少有这方面的工具，几乎都想直接写工具了，后来却找到了个国外的一个叫做&ldquo;SwissSQL-SQL Server To Oracle&rdquo;这样的工具，此工具可以在<a href="http://www.swissql.com/">http://www.swissql.com/</a>站点上下载，使用方法有两种，一种是转换TSQL脚本到PLSQL，一种是通过JDBC连接到SQLServer数据库进行转换，转换后的结果都保存为PLSQL脚本，要导入Oracle需要运行这些脚本。此软件是用Java语言编写在安装之前必须先安装JDK，在试用过程中发现此工具存在这么几个问题：</p>
<p>1、此工具在转换数据结构的过程中把varchar的数据类型都转换成varchar2(1)了而不管原谅数据有多长统一都转换成1个长度，我不知道这么简单的BUG有没有其他设置的地方，反正后来我们没用它转数据结构也就没怎么研究了。</p>
<p>2、此工具为试用版本，我们也没找到注册版，而试用版只能前后转换共2000行SQL语句，而要购买这个软件也不太实际，费用高不说，还是外国的买起来也麻烦，软件为转换这么几个存储过程去耗费这么大的资金在我们这些用盗版的人看来是不可取的，我们的数据库对象那么多，显然这是不好办的问题，那么能否用欺骗的手法蒙混过关呢？下面就是具体的欺骗手法了：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; －记得以前用过一个软件叫着&ldquo;完美卸载&rdquo;此软件可以记录安装程序时对磁盘进行的更改，有了这个我们就可以安装软件的时候记录好此软件对磁盘所写入的文件，看看有什么异样这样我们就能理解共享软件在那个文件写入了注册信息。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; －通过跟踪发现在安装软件的时候，安装程序除了对安装目录写入信息和少量的注册表信息外没有对磁盘做任何更改，别急，我们继续跟踪，跟踪到第一次运行软件的时候，就有了异样，发现此软件在Windows目录下写入了<img src="http://www.cnblogs.com/images/cnblogs_com/dragonpro/program/dl001.jpg" alt="" hspace="5" width="69" height="14" align="baseline" />这个文件，赶忙备份此文件，转换了几行语句后，关闭软件，果然此文件再次被修改，这就说明很有可能此文件就是记录的软件试用的行数。当我们第二次使用的时候把备份的文件覆盖了原文件，但此事软件所有按钮都禁用了，说明软件还有其他的地方可以判断用户是否使用过软件。重新安装软件（其实就是把安装目录里的文件重置一下），结果又可以使用2000行了。这就是软件欺骗的全部过程，也是可当作破解软件的土办法，只是麻烦一点的是需要先备份安装目录和那个dll文件，注意那个dll文件不能通用，必须要程序生成的本机的dll文件。当快要用完试用行数的时候通过覆盖文件的方式欺骗软件，从而可以继续试用，就这么简单。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;另外在转换数据库的过程中应该还要注意以下几个问题：<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; －在Oracle数据库中命名不能大于30个英文字符，无论是表名、存储过程名等等，统统不能大于30个字符。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; －在Oracle数据库中，存储过程的定义更侠义一些，而不像SqlServer那样开放。特别像返回结果集这些操作上存在很多差异，在SQLServer可以直接试用select语句返回结果集，而Oracle只能把存储过程封装到包中设置Out参数的Cursor数据类型来达到返回结果集的目的，在存储过程内部不能直接试用Select语句返回结果集，很是不便。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; －在使用单纯的SQL语句的时候，如果是多条语句，调用Oracle数据库就必须封装在begin/end语句块中。<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; －手动对Oracle数据库查询时可以选用PL/SQL Developer这个工具，蛮好用的。</p><img src ="http://www.cnblogs.com/Dragonpro/aggbug/277473.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47929/" target="_blank">Gmail 的标签马上就会支持拖拽操作了</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>管理Win2003sp1防火墙的一点小技巧</title><link>http://www.cnblogs.com/Dragonpro/archive/2005/11/15/276901.html</link><dc:creator>dragonpro</dc:creator><author>dragonpro</author><pubDate>Tue, 15 Nov 2005 07:43:00 GMT</pubDate><guid>http://www.cnblogs.com/Dragonpro/archive/2005/11/15/276901.html</guid><wfw:comment>http://www.cnblogs.com/Dragonpro/comments/276901.html</wfw:comment><comments>http://www.cnblogs.com/Dragonpro/archive/2005/11/15/276901.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dragonpro/comments/commentRss/276901.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dragonpro/services/trackbacks/276901.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp; 在公司共享网络的服务器上2003SP1的补丁，系统自动重新设置防火墙，使得很多软件在局域网都无法访问服务器，尝试关闭防火墙然而系统把所有网络适配器的防火墙都关了，这是我们不想看到的，又试了试还有另外一个地方可以设置呢：<br />&nbsp;&nbsp;&nbsp; 在指定网络适配器上点击属性－》高级－》在window防火墙那个筐里选择【设置】按钮－》选择高级选项卡，这里面有些网卡的列表，如果不需要具体的网卡有防火墙直接把前面的对勾去掉就OK了，前面以为在常规那个选项卡里设置，结果一取消就全取消了，还好找到这个地方，看似简单不注意还不好找呢。</p><img src ="http://www.cnblogs.com/Dragonpro/aggbug/276901.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47928/" target="_blank">Windows 7 触摸功能是摆设 无厂商支持价值不大</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>用Entlib的配置程序块遇到的问题</title><link>http://www.cnblogs.com/Dragonpro/archive/2005/11/03/267750.html</link><dc:creator>dragonpro</dc:creator><author>dragonpro</author><pubDate>Thu, 03 Nov 2005 02:36:00 GMT</pubDate><guid>http://www.cnblogs.com/Dragonpro/archive/2005/11/03/267750.html</guid><wfw:comment>http://www.cnblogs.com/Dragonpro/comments/267750.html</wfw:comment><comments>http://www.cnblogs.com/Dragonpro/archive/2005/11/03/267750.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/Dragonpro/comments/commentRss/267750.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/Dragonpro/services/trackbacks/267750.html</trackback:ping><description><![CDATA[<P>需要注意的是在获取配置的SectionName的时候所使用的名称必须是配置文件根节点的名称</P>
<P>比如在app.config 配置的：</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: #800000">configurationSections</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">configurationSection&nbsp;</SPAN><SPAN style="COLOR: #ff0000">name</SPAN><SPAN style="COLOR: #0000ff">="<SPAN style="COLOR: #333399"><STRONG><U>SystemConfiguration</U></STRONG></SPAN>"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;encrypt</SPAN><SPAN style="COLOR: #0000ff">="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;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">storageProvider&nbsp;</SPAN><SPAN style="COLOR: #ff0000">xsi:type</SPAN><SPAN style="COLOR: #0000ff">="XmlFileStorageProviderData"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;name</SPAN><SPAN style="COLOR: #0000ff">="XML&nbsp;File&nbsp;Storage&nbsp;Provider"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;path</SPAN><SPAN style="COLOR: #0000ff">="AppSettings.config"</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;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">dataTransformer&nbsp;</SPAN><SPAN style="COLOR: #ff0000">xsi:type</SPAN><SPAN style="COLOR: #0000ff">="XmlSerializerTransformerData"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;name</SPAN><SPAN style="COLOR: #0000ff">="Xml&nbsp;Serializer&nbsp;Transformer"</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">includeTypes&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;</SPAN><SPAN style="COLOR: #0000ff">&lt;/</SPAN><SPAN style="COLOR: #800000">dataTransformer</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">configurationSection</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN></DIV>
<P>&nbsp;其中带下划线的就是配置的SectionName，这个名称必须要与保存配置的文件里的根节点一致如：</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"</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"><STRONG><U style="COLOR: #333399">SystemConfiguration</U></STRONG></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;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">xmlSerializerSection&nbsp;</SPAN><SPAN style="COLOR: #ff0000">type</SPAN><SPAN style="COLOR: #0000ff">="LSA.Model.Configuration.AppSettings,&nbsp;LSA.Model,&nbsp;Version=1.0.2133.17570,&nbsp;Culture=neutral,&nbsp;PublicKeyToken=null"</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">LSA</SPAN><SPAN style="COLOR: #ff0000">.AppSettings&nbsp;xmlns:xsd</SPAN><SPAN style="COLOR: #0000ff">="http://www.w3.org/2001/XMLSchema"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;xmlns:xsi</SPAN><SPAN style="COLOR: #0000ff">="http://www.w3.org/2001/XMLSchema-instance"</SPAN><SPAN style="COLOR: #ff0000">&nbsp;xmlns</SPAN><SPAN style="COLOR: #0000ff">="http://www.sundun.cn/LSAPro/10-27-2005/data"</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;</SPAN><SPAN style="COLOR: #0000ff">&lt;</SPAN><SPAN style="COLOR: #800000">SysConfig</SPAN><SPAN style="COLOR: #0000ff">&gt;</SPAN></DIV>
<P>如果在平时使用中改了SectionName的名称，那么记得把两个地方都改过来，这个问题搞了我好一阵子。</P>
<P>&nbsp;</P><img src ="http://www.cnblogs.com/Dragonpro/aggbug/267750.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47927/" target="_blank">虚拟货币上了"紧箍咒" 新规将限制Q币发行</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item></channel></rss>