<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://blog.joycode.com/mainfeed.aspx</link><description>开心编码，开心生活</description><generator>Joycode Version 1.0.0.0</generator><image url="/images/logo.gif" link="http://blog.joycode.com/mainfeed.aspx" title="博客堂" /><item><title>大逃亡，还没出来呢</title><link>http://blog.joycode.com/svs/archive/2008/05/14/115115.aspx</link><pubDate>Wed, 14 May 2008 07:11:51 GMT</pubDate><guid isPermaLink="true">http://blog.joycode.com/svs/archive/2008/05/14/115115.aspx</guid><wfw:comment>http://blog.joycode.com/svs/comments/115115.aspx</wfw:comment><wfw:commentRss>http://blog.joycode.com/svs/comments/commentRss/115115.aspx</wfw:commentRss><comments>http://blog.joycode.com/svs/archive/2008/05/14/115115.aspx#comment</comments><slash:comments>1</slash:comments><trackback:ping>http://blog.joycode.com/svs/services/trackbacks/115115.aspx</trackback:ping><source url="http://blog.joycode.com/svs/rss.aspx">大逃亡，还没出来呢</source><description>&lt;p&gt;&lt;font face="Arial"&gt;5.12地震，我正在成都出差，正当讲课的时候，地震了。稳住情绪后和学员一起逃生。经历的这场恐怖的地震后，发现地震并不可怕，真正可怕的来自于自己内心的恐惧和孤独，另外还要不出一些专业知识。我总结了一些经验给大家共享一下：&lt;/font&gt;&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;不要恋财，逃命要紧，只要拿上必需的钱和手机即可，其他的以后再说 &lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;手机上设置好紧急拨号的功能，1键拨出去。 &lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;有机会要买些水和士力架，我就忘了士力架了，本来包里有的，出来时候让我拿出去了，但是水一定要有，没水人坚&lt;/font&gt; &lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;不了多久，士力架主要是糖和巧克力对于补充体力来说很有效，毕竟你不能背着葡萄糖的瓶子到处跑 &lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;找空旷的地方，酒店不要太高，也不要太低。高层的基本逃不出来，低的一般设计上不结实 &lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;注意使用电梯的时机，并且每到一个地方先看好紧急出口在那里，有条件的先走一遍，这样逃得时候才能最快的找到出路。 &lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;不要到人员聚集的地方，人多地地方不一定安全，人多的地方经常遇到情况的时候会很混乱，可能没被震死，会被踩死 &lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;远离加油站、电线杆、隧道、山坡、水渠、化工厂，那里可能会有其他的危险 &lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;保持通讯，有机会就找地方给手机充电，虽然手机不一定都好用，但是也许能用于求救 &lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;通过各种渠道及量多地从外面获取消息，本地的消息你很难及时得到，这里机场和航空公司的电话根本打不进去 &lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;有机会就去提款机拿点现金，很多地方不能刷卡的，现金更管用 &lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;保持冷静，如果恐惧就给别人打电话，这样冷静下来能让你更灵敏，头脑清醒非常重要 &lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;保持体力，不要瞎跑，能休息时尽量找安全地方休息，也许下一秒需要你来一个冲刺才能逃出去，另外安全的时候找机会睡一下，因为更多地时候都是出于神经紧张的状态 &lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;抽烟的人，多准备点烟，这个东西可以让你放松一下，可以自己安抚一下恐惧的心情，不抽烟的就准备口香糖。或者找点其他的事干，当然干工作都没心情了，但是要想办法击退自己内心的心魔 &lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font face="Arial"&gt;最后一点最重要了，保持冷静，自己不要乱了方寸，能战胜自己就是胜利，心魔是你自己，战胜它不难，但要有意志力。遇事切勿慌张，要有自己的想法，切勿不自己思考跟着别人走，那样你的命运就不再你手上了 &lt;/font&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;font face="Arial"&gt;还有主要的恐惧不是来源于那次主震，而是接连不断的余震，震动的不是大楼，而是震得是你的心，不断地折磨你，摧毁你的意志，说不怕都瞎扯。所以要不断地给自己信号，冷静没什么事了。&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;目前本人还没有出来呢，但情况还好，可以接受了。就是睡觉不踏实，经常感觉有震动，由于神经高度紧张，有点像地动仪了。&lt;/font&gt;&lt;font face="Arial"&gt;原来准备继续写的文章也都推迟了，等我从成都回去再说了。&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;God save me.&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;&lt;img src="http://blog.joycode.com/svs/aggbug/115115.aspx" width="1" height="1" /&gt;</description><dc:creator>Sun.wei</dc:creator></item><item><title>微软急聘base在上海的MOSS高手！</title><link>http://blog.joycode.com/juqiang/archive/2008/05/13/115113.aspx</link><pubDate>Tue, 13 May 2008 12:03:44 GMT</pubDate><guid isPermaLink="true">http://blog.joycode.com/juqiang/archive/2008/05/13/115113.aspx</guid><wfw:comment>http://blog.joycode.com/juqiang/comments/115113.aspx</wfw:comment><wfw:commentRss>http://blog.joycode.com/juqiang/comments/commentRss/115113.aspx</wfw:commentRss><comments>http://blog.joycode.com/juqiang/archive/2008/05/13/115113.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blog.joycode.com/juqiang/services/trackbacks/115113.aspx</trackback:ping><source url="http://blog.joycode.com/juqiang/rss.aspx">微软急聘base在上海的MOSS高手！</source><description>&lt;p&gt;&amp;nbsp; &lt;/p&gt;
&lt;p class="MsoNormal" style="TEXT-ALIGN: left; mso-pagination: widow-orphan" align="left"&gt;&lt;strong&gt;&lt;span lang="EN-US" style="FONT-SIZE: 20pt; COLOR: #ff7700; FONT-FAMILY: 'Arial','sans-serif'; mso-font-kerning: 18.0pt"&gt;Premier Field Engineer - SharePoint/MOSS&lt;/span&gt;&lt;/strong&gt;&lt;span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="TEXT-ALIGN: left; mso-pagination: widow-orphan" align="left"&gt;&lt;span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="TEXT-ALIGN: left; mso-pagination: widow-orphan" align="left"&gt;&lt;span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"&gt;The purpose of the Premier Field Engineer (PFE) position is to provide Microsoft customers with reliable technical solutions to the complex integration problems associated with business solutions built using Windows SharePoint Services, SharePoint Portal Server and Microsoft Office SharePoint Server. Typical tasks performed in this role include specific problem isolation and correction, conducting application design and technical reviews, performance tuning, application stability consulting/troubleshooting, code reviews, porting/migration assistance, configuration/administration management, pre-rollout testing and general development consulting. The prospective PFE candidate should draw upon all resources at Microsoft, to advise and consult on the use of Microsoft SharePoint Technologies to avoid such problems in the future. &lt;br /&gt;
&lt;br /&gt;
Requirements:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align="left"&gt;&lt;span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"&gt;&amp;bull; Candidates must have exceptional customer service, problem solving, communication skills, and the ability to work in a team environment. &lt;br /&gt;
&amp;bull; Must have sufficient technical depth to communicate with development and other internal organizations at a peer level. &lt;br /&gt;
&amp;bull; Must possess the ability to work with minimal supervision and operate as a self contained business unit within the PFE team. &lt;br /&gt;
&amp;bull; Must demonstrate the aptitude for providing exceptional customer service in politically charged environments. &lt;br /&gt;
&amp;bull; Show the ability to enhance the technical expertise of peers via training development and delivery, mentoring of new hires, and team content development. &lt;br /&gt;
&amp;bull; Demonstrate strategic thinking with value-add contributions. &lt;br /&gt;
&amp;bull; Strong business background in Fortune 500 and/or experience with systems technology consulting firm desired. &lt;br /&gt;
&lt;br /&gt;
Technical Requirements: &lt;br /&gt;
&amp;bull; Strong knowledge &amp;amp; technical proficiency with Microsoft SharePoint Technologies including Windows SharePoint Services, SharePoint Portal Server, &amp;amp; Microsoft Office SharePoint Server. &lt;br /&gt;
&amp;bull; Solid understanding of the Microsoft Windows platform and standard client/server, networking, and Internet fundamentals. &lt;br /&gt;
&amp;bull; Superior problem solving and troubleshooting skills at the System Engineer level. &lt;br /&gt;
&amp;bull; From this foundation, the PFE position is exposed to many technologies, including but not limited to: IIS, SQL Server, development with .NET languages, XML and Scripting technologies, and data access technologies. &lt;br /&gt;
&amp;bull; Practical user mode debugging is a preferred skill, but not required. &lt;br /&gt;
&lt;br /&gt;
Travel requirements vary regionally. Engineers must be available for travel dispatch 24x7x365.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align="left"&gt;&lt;span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"&gt;&lt;span style="mso-spacerun: yes"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
Education: &lt;br /&gt;
College degree, preferably in Computer Science, is required. MCTS in SharePoint Technologies or other applicable advanced certification is strongly preferred, but not required at hire; however, must be obtained within 12 months of hire. We will consider related field (or equivalent) experience.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal" style="TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align="left"&gt;&lt;span lang="EN-US" style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-font-kerning: 0pt; mso-bidi-font-family: 宋体"&gt;Microsoft is an equal opportunity employer (EOE) and strongly supports diversity in the workforce.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span lang="EN-US"&gt;&lt;o:p&gt;&amp;nbsp;有意向的请和我联系：&lt;a href="mailto:juqiang@live.com"&gt;juqiang@live.com&lt;/a&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="http://blog.joycode.com/juqiang/aggbug/115113.aspx" width="1" height="1" /&gt;</description><dc:creator>juqiang</dc:creator></item><item><title>VSeWSS更新文档</title><link>http://blog.joycode.com/kaneboy/archive/2008/05/13/115112.aspx</link><pubDate>Tue, 13 May 2008 02:24:57 GMT</pubDate><guid isPermaLink="true">http://blog.joycode.com/kaneboy/archive/2008/05/13/115112.aspx</guid><wfw:comment>http://blog.joycode.com/kaneboy/comments/115112.aspx</wfw:comment><wfw:commentRss>http://blog.joycode.com/kaneboy/comments/commentRss/115112.aspx</wfw:commentRss><comments>http://blog.joycode.com/kaneboy/archive/2008/05/13/115112.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blog.joycode.com/kaneboy/services/trackbacks/115112.aspx</trackback:ping><source url="http://blog.joycode.com/kaneboy/rss.aspx">VSeWSS更新文档</source><description>&lt;p&gt;虽然我一直认为WSP Builder比VSeWSS好用很多，但似乎使用VSeWSS的人还是比WSP Builder多很多，所以...&lt;br&gt;&lt;br&gt;最新的&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=A8A4E775-074D-4451-BE39-459921F79787&amp;amp;displaylang=en"&gt;VSeWSS文档下载&lt;/a&gt;，包括了多篇不错的指导文档，以及各种典型VSeWSS项目的Walkthrough。&lt;br&gt;&lt;br&gt;另1：能够支持VS 2008的VSeWSS版本计划在6月份发布。&lt;br&gt;另2：&lt;a href="http://www.codeplex.com/stsdev/Release/ProjectReleases.aspx?ReleaseId=13220"&gt;STSDev 1.3&lt;/a&gt;发布了，这是STSDev 2.0之前的最后一个版本，基本上是一个bug fix version。STSDev开发团队对2.0有一个很大的计划，除了功能上的改进，还打算也弄成一个VS Add-in的模式。我曾发邮件给他们抱怨说，现在VS Add-in已经够多了（WSPBuilder、VSeWSS、AC's VS SharePoint Project Utility Tool Window），Developer通常不喜欢为了同一个目的在自己的VS里面装太多插件。他们的回信很简单：“我们的目标就是把上述功能重复的Add-in都干掉”...&lt;/p&gt;&lt;img src="http://blog.joycode.com/kaneboy/aggbug/115112.aspx" width="1" height="1" /&gt;</description><dc:creator>kaneboy</dc:creator></item><item><title>Popfly游戏生成器</title><link>http://blog.joycode.com/soma/archive/2008/05/08/115111.aspx</link><pubDate>Thu, 08 May 2008 09:56:34 GMT</pubDate><guid isPermaLink="true">http://blog.joycode.com/soma/archive/2008/05/08/115111.aspx</guid><wfw:comment>http://blog.joycode.com/soma/comments/115111.aspx</wfw:comment><wfw:commentRss>http://blog.joycode.com/soma/comments/commentRss/115111.aspx</wfw:commentRss><comments>http://blog.joycode.com/soma/archive/2008/05/08/115111.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blog.joycode.com/soma/services/trackbacks/115111.aspx</trackback:ping><source url="http://blog.joycode.com/soma/rss.aspx">Popfly游戏生成器</source><description>&lt;p&gt;[原文发表地址] &lt;a href="http://blogs.msdn.com/somasegar/archive/2008/05/02/popfly-game-creator.aspx"&gt;&lt;font color="#0000ff"&gt;Popfly Game Creator&lt;/font&gt;&lt;/a&gt;&lt;br /&gt;
[原文发表时间] Friday, May 02, 2008 11:03 AM &lt;/p&gt;
&lt;p&gt;我一直在关注&lt;a href="http://www.popfly.com/"&gt;&lt;font color="#0000ff"&gt;Microsoft Popfly&lt;/font&gt;&lt;/a&gt;，其发展让我无比兴奋。基于Silverlight的拖拽功能使得Popfly成为一种简单而有趣的创建并共享mashup、gadget、网页以及应用程序的方式。大量的媒体报导和奖项证明Popfly已经赢得了广大用户的喜爱。&lt;/p&gt;
&lt;p&gt;今天，我高兴地宣布Popfly游戏生成器的alpha版本发布了。&lt;/p&gt;
&lt;p&gt;基于Silverlight的游戏生成器是一种非常丰富并且非常简单的创建各种休闲游戏的方法，一行代码也不必编写。 无论是空间射击游戏、 赛车游戏还是迷宫，异常友好的交互式用户界面都会指导作为用户的您表达您的创作灵感。 &lt;/p&gt;
&lt;p&gt;&lt;img alt="" src="http://somasegar.members.winisp.net/images/blog_images/SDL_images/popflygamecreator.png" /&gt;&lt;/p&gt;
&lt;p&gt;您可以从内置的已知游戏模板集合开始，个性化定制并共享它们，或者您也可以从一个全新的想法和空白的画布开始，构建您自己的游戏。您可以从一个很大的库中添加演员、 场景、 背景分数、 行为、 移动等，使您的游戏鲜活起来只是几分钟的事情。随着时间推移，我们将会允许您添加到库，类似于 Mashup生成器中块的概念。与块编辑器和Mashup生成器类似，对于那些需要更多功能的用户来说，他们可以很容易切换到源代码，编辑并预览他们做的修改。使用游戏生成器创建的休闲游戏，将具有和使用Popfly生成的Mashup或网页相同的属性&amp;mdash;&amp;mdash;它们可被评分、共享或嵌入到Windows Vista侧栏gadget或 Facebook中。&lt;/p&gt;
&lt;p&gt;Mashup生成器和游戏生成器的目的和背后的概念是相同的。目前为止，软件的创建仅局限于那些可以编程的人。我们正在尝试&amp;ldquo;民主开发 &amp;rdquo;，即任何人只要有一个好的想法和一小段时间就可以自由的表达自己的想法。Mashup生成器是通向这个方向的第一步，我们将不断创新，扩展其功能，丰富Mashup体验。我们现在扩展了另一个人们喜爱的空间&amp;mdash;&amp;mdash;创建游戏。&lt;/p&gt;
&lt;p&gt;来尝试一下吧！与通常一样，您可以在&lt;a href="http://www.popfly.com/"&gt;&lt;font color="#0000ff"&gt;Microsoft Popfly&lt;/font&gt;&lt;/a&gt; 网站找到它。点击&amp;ldquo;Create Stuff&amp;rdquo;并选择&amp;ldquo;Game&amp;rdquo;。您将会看到许多样例以及&amp;ldquo;帮助&amp;rdquo;以协助您开始，如这个&lt;a href="http://go.microsoft.com/fwlink/?LinkID=118003"&gt;&lt;font color="#0000ff"&gt;视频&lt;/font&gt;&lt;/a&gt;讲解了如何创建一个空间射击游戏。 &lt;/p&gt;
&lt;p&gt;Namaste ! &lt;/p&gt;&lt;img src="http://blog.joycode.com/soma/aggbug/115111.aspx" width="1" height="1" /&gt;</description><dc:creator>soma</dc:creator></item><item><title>关于Microsoft SQL Server的Scalability之讨论(1)</title><link>http://blog.joycode.com/svs/archive/2008/05/08/115110.aspx</link><pubDate>Thu, 08 May 2008 07:14:48 GMT</pubDate><guid isPermaLink="true">http://blog.joycode.com/svs/archive/2008/05/08/115110.aspx</guid><wfw:comment>http://blog.joycode.com/svs/comments/115110.aspx</wfw:comment><wfw:commentRss>http://blog.joycode.com/svs/comments/commentRss/115110.aspx</wfw:commentRss><comments>http://blog.joycode.com/svs/archive/2008/05/08/115110.aspx#comment</comments><slash:comments>2</slash:comments><trackback:ping>http://blog.joycode.com/svs/services/trackbacks/115110.aspx</trackback:ping><source url="http://blog.joycode.com/svs/rss.aspx">关于Microsoft SQL Server的Scalability之讨论(1)</source><description>&lt;p&gt;Scalability对于软件设计师来说永远都是一种挑战，虽然我们设计的系统并不一定都要有Scalibility的能力但是客户往往都有这方面的期待，因为每个客户都希望自己的业务能够做大，都希望自己的数据库可以与Myspace一样大。最近要和&lt;a href="http://blog.joycode.com/luke"&gt;lvke&lt;/a&gt;兄弟合作写一些对于数据库的东西，这里也和大家分享一下自己的体会。&lt;/p&gt;
&lt;p&gt;Session 1&lt;/p&gt;
&lt;p&gt;What is Scalability? &lt;/p&gt;
&lt;p&gt;&amp;nbsp;扩展性就是说我们需要让应用程序可以使用更多的资源去做更多的工作。简单的说就是随着业务增加，应用程序将承担更多的负载，这个时候我们需要对于应用程序使用的资源进行调整，用来处理这些负载，这是我们的应用程序能否有能力的利用这些增加的资源，这就是Scalability。&lt;/p&gt;
&lt;p&gt;对于应用程序来说，我们可通过减低组件的耦合程度将组件分层并部署到不同的服务器上，同时考虑每层组件对于NLB的支持，这样就可形成一个云，每层服务组件都可能由若干服务器来运行，当负载增加时可以通过增加服务器的方式来进行横向的扩展，多数的互联网企业都是这种思路。&lt;/p&gt;
&lt;p&gt;对于Scalability来说，通常用2种方式实现-Scale Up和Scale Out。对于不同的环境和要求来说，正确的使用相应的策略才是最关键的。Scale up就是提供更强大的服务器来提供更好的性能，如果你的软件系统可以支持更多的CUP和内存，Scale up也是一个不错的方式。但是目前的服务器的处理能力受到很多技术上的限制，并不是说我们可以无限制的添加资源，同时我们的软件系统也并不一定可以支持这么多的CPU和内存，不论你是Windows或Unix。同时更大的服务器也意味着更高的成本。这时人们更多的是想到Scale out的方案。Scale out方案就是利用N个廉价的服务器去处理更多的业务，业务增加时可通过增加服务器来实现业务的处理，这样从理论上我们可以不去限制服务器的数量，互联网应用就是典型的Scale out，当然互联网行业有他特定的行业特点。&lt;/p&gt;
&lt;p&gt;应用程序中很多情况下离不开数据库的支撑，除非你是Google，有能力自己去编写适应与自己业务的数据库。通常情况下我们都会采用一些商业或开源的数据库产品来实现我们对于数据持久和查询的功能。我遇到了很多客户在进行产品选型的时候都会说我们要求你们的数据库可以实现负载均衡等类似的要求，大家也都知道数据库上的均衡方式不同于我们Web服务器的均衡，我们要考虑到数据的同步、事务等更多的方面。长期以来很多用户都在诟病SQL Server无法做到Load Balance，而Oracle的RAC却可以实现。我稍微看了一下Oracle的RAC，从原理上他也无法实现类似于服务器云的那种形态，因为RAC其实是一个Cluster，需要共享网络总线和磁盘系统，网络总线用于同步Cache，共享SAN用于存储数据。SQL Server虽然也能实现Cluster，但是A/A群集上的2个实例还是无法做到对于性能有什么提升。当然RAC也不是没有缺陷，当节点数大于2个的时候性能并不是按照我们想象的一样按照线形增长，而且当节点数持续增加的时候网络可能就会成为最大的瓶颈，而且在国内目前看到的RAC也只是以2个节点的为多，更多节点的RAC目前在国内也没有太多成功的案例。回来继续谈谈SQL Server，虽然By default，没有RAC的功能，但是并不是代表不能做到，MySpace有数百台SQL Server支撑网站，形成一个数据库服务器云，可以通过增加数据库服务器来支撑用户数量的增加，还有像纳斯达克这样的应用场景也都是存在类似的方案。所以说能和不能并不是重要的，系统地架构设计+产品的功能也能帮我们实现数据库服务器的Scale out。&lt;/p&gt;
&lt;p&gt;目前我们在SQL Server上的Scale out Solutiion主要有以下几种&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Scalable Shared Database &lt;/li&gt;
    &lt;li&gt;Peer-to-Peer Replication &lt;/li&gt;
    &lt;li&gt;Linked Servers and Distributed Queries &lt;/li&gt;
    &lt;li&gt;Distributed Partitioned Views(DPV) &lt;/li&gt;
    &lt;li&gt;Data-Dependet Routing &lt;/li&gt;
    &lt;li&gt;SOA &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;后续的文章我会慢慢的聊聊这些Solution，时间所限可能会很慢很慢很慢。。。。&lt;/p&gt;&lt;img src="http://blog.joycode.com/svs/aggbug/115110.aspx" width="1" height="1" /&gt;</description><dc:creator>Sun.wei</dc:creator></item><item><title>Visual Studio 2008 SP1 Beta 可以下载啦！</title><link>http://blog.joycode.com/vsto/archive/2008/05/08/vs2008sp1beta_download.aspx</link><pubDate>Thu, 08 May 2008 02:33:06 GMT</pubDate><guid isPermaLink="true">http://blog.joycode.com/vsto/archive/2008/05/08/vs2008sp1beta_download.aspx</guid><wfw:comment>http://blog.joycode.com/vsto/comments/115109.aspx</wfw:comment><wfw:commentRss>http://blog.joycode.com/vsto/comments/commentRss/115109.aspx</wfw:commentRss><comments>http://blog.joycode.com/vsto/archive/2008/05/08/vs2008sp1beta_download.aspx#comment</comments><slash:comments>2</slash:comments><trackback:ping>http://blog.joycode.com/vsto/services/trackbacks/115109.aspx</trackback:ping><source url="http://blog.joycode.com/vsto/rss.aspx">Visual Studio 2008 SP1 Beta 可以下载啦！</source><description>&lt;p&gt;　　&lt;a target="_blank" href="http://msdn.microsoft.com/en-us/vstudio/default.aspx"&gt;Visual Studio 2008 官方网页&lt;/a&gt;信息：Visual Studio 2008 SP1 Beta 和 .NET Framework 3.5 SP1 Beta 已经正式开发下载。&lt;/p&gt;
&lt;p&gt;　　谁愿意吃螃蟹？我已经在自己的一台机器上安装了。关于 VSTO 有一些非常有趣的新功能，下一篇 Blog 就会介绍。&lt;/p&gt;
&lt;p&gt;　　先提供下载地址：&lt;/p&gt;
&lt;p&gt;　　英文版：&lt;font face="Arial"&gt;&lt;a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=CF99C752-1391-4BC3-BABC-86BC0B9E8E5A&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=CF99C752-1391-4BC3-BABC-86BC0B9E8E5A&amp;amp;displaylang=en&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;　　.NET Framework 3.5 SP1 Beta：&lt;font face="Arial"&gt;&lt;font face="Arial"&gt;&lt;a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=23516C63-2DB2-4E7F-AABA-32B12D6E025C&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=23516C63-2DB2-4E7F-AABA-32B12D6E025C&amp;amp;displaylang=en&lt;/a&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;　　关于此 Beta 版本的说明：&lt;font face="Arial"&gt;&lt;a target="_blank" href="http://download.microsoft.com/download/8/F/D/8FD2A9F0-C3D4-4B0A-80AF-88D738DCDDF4/VSReadme.htm"&gt;http://download.microsoft.com/download/8/F/D/8FD2A9F0-C3D4-4B0A-80AF-88D738DCDDF4/VSReadme.htm&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://blog.joycode.com/vsto/aggbug/115109.aspx" width="1" height="1" /&gt;</description><dc:creator>vsto</dc:creator></item><item><title>动态封杀与解封IP</title><link>http://blog.joycode.com/ghj/archive/2008/05/07/115108.aspx</link><pubDate>Wed, 07 May 2008 02:37:19 GMT</pubDate><guid isPermaLink="true">http://blog.joycode.com/ghj/archive/2008/05/07/115108.aspx</guid><wfw:comment>http://blog.joycode.com/ghj/comments/115108.aspx</wfw:comment><wfw:commentRss>http://blog.joycode.com/ghj/comments/commentRss/115108.aspx</wfw:commentRss><comments>http://blog.joycode.com/ghj/archive/2008/05/07/115108.aspx#comment</comments><slash:comments>2</slash:comments><trackback:ping>http://blog.joycode.com/ghj/services/trackbacks/115108.aspx</trackback:ping><source url="http://blog.joycode.com/ghj/rss.aspx">动态封杀与解封IP</source><description>&lt;p&gt;我们在应对网站的恶意请求时候，一个解决方法就是把有问题的请求IP封杀掉。&lt;/p&gt;  &lt;p&gt;如果想快速处理这种问题，就需要编写一段代码，达到一定门槛，自动封杀。再复杂点就是不是永久封杀，还可以自动在一定时间后解封。&lt;/p&gt;  &lt;p&gt;封杀的逻辑代码看后面提供的。&lt;/p&gt;  &lt;p&gt;需要说明的是：IIS7时，情况发生了不同。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;下面的代码，在处理封杀IP时候，不论IIS6还是IIS7 都可以把需要封杀的IP加入封杀列表。但是需要注意的是我们代码写的是全部替换原先的数据。但是在IIS7下，执行的效果是原先的不替换，新加一批封杀IP。当然IIS7下，如果新加的IP原来就有了，则会报如下异常：&lt;/p&gt;  &lt;p&gt;System.Runtime.InteropServices.COMException was caught    &lt;br /&gt;&amp;#160; Message=&amp;quot;当文件已存在时，无法创建该文件。 (异常来自 HRESULT:0x800700B7)&amp;quot;     &lt;br /&gt;&amp;#160; Source=&amp;quot;System.DirectoryServices&amp;quot;     &lt;br /&gt;&amp;#160; ErrorCode=-2147024713     &lt;br /&gt;&amp;#160; StackTrace:     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 在 System.DirectoryServices.DirectoryEntry.CommitChanges()     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 在 IIS_Security_ConsoleApplication.Program.IPDeny() 位置 D:\MyCodes\IIS_Security_ConsoleApplication\IIS_Security_ConsoleApplication\Program.cs:行号 109     &lt;br /&gt;&amp;#160; InnerException: &lt;/p&gt;  &lt;p&gt;这就是说，IIS7， 我们可以通过编程接口增加封杀IP名单，但是没发通过编程接口剔出封杀IP。&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;参考代码：&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;这里提供了两套参考代码，其实原理都是一样的。&lt;/p&gt;  &lt;p&gt;在IIS 6 下，都没有任何问题， IIS 7 下都会有没发删除原先已有数据的问题。 &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;代码一：&lt;/strong&gt;&lt;/p&gt;  &lt;pre&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.DirectoryServices;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Reflection;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System;&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; Program&lt;br /&gt;    {&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; IPDeny()&lt;br /&gt;        {&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; serverName = &amp;quot;&lt;span style="color: #8b0000"&gt;localhost&lt;/span&gt;&amp;quot;;&lt;br /&gt;                &lt;span style="color: #008000"&gt;// retrieve the directory entry for the root of the IIS server&lt;/span&gt;&lt;br /&gt;                System.DirectoryServices.DirectoryEntry IIS = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; System.DirectoryServices.DirectoryEntry(&lt;br /&gt;                     &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;.Format(&amp;quot;&lt;span style="color: #8b0000"&gt;IIS://{0}/w3svc/1/root&lt;/span&gt;&amp;quot;, serverName));&lt;br /&gt;&lt;br /&gt;                &lt;span style="color: #008000"&gt;// retrieve the list of currently denied IPs&lt;/span&gt;&lt;br /&gt;                Console.WriteLine(&amp;quot;&lt;span style="color: #8b0000"&gt;Retrieving the list of currently denied IPs.&lt;/span&gt;&amp;quot;);&lt;br /&gt;&lt;br /&gt;                &lt;span style="color: #008000"&gt;// get the IPSecurity property&lt;/span&gt;&lt;br /&gt;                Type typ = IIS.Properties[&amp;quot;&lt;span style="color: #8b0000"&gt;IPSecurity&lt;/span&gt;&amp;quot;][0].GetType();&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;object&lt;/span&gt; IPSecurity = IIS.Properties[&amp;quot;&lt;span style="color: #8b0000"&gt;IPSecurity&lt;/span&gt;&amp;quot;][0];&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                &lt;span style="color: #008000"&gt;// retrieve the IPDeny list from the IPSecurity object&lt;/span&gt;&lt;br /&gt;                Array origIPDenyList = (Array)typ.InvokeMember(&amp;quot;&lt;span style="color: #8b0000"&gt;IPDeny&lt;/span&gt;&amp;quot;, BindingFlags.DeclaredOnly | BindingFlags.Public &lt;br /&gt;                    | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetProperty, &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;, IPSecurity, &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;                &lt;span style="color: #008000"&gt;// 罗列已经被拒绝的地址&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; s &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; origIPDenyList)&lt;br /&gt;                    Console.WriteLine(&amp;quot;&lt;span style="color: #8b0000"&gt;Before: &lt;/span&gt;&amp;quot; + s);&lt;br /&gt;&lt;br /&gt;                &lt;span style="color: #008000"&gt;// check GrantByDefault.  This has to be set to true, &lt;/span&gt;&lt;br /&gt;                &lt;span style="color: #008000"&gt;// or what we are doing will not work.&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; bGrantByDefault = (&lt;span style="color: #0000ff"&gt;bool&lt;/span&gt;)typ.InvokeMember(&amp;quot;&lt;span style="color: #8b0000"&gt;GrantByDefault&lt;/span&gt;&amp;quot;, BindingFlags.DeclaredOnly | BindingFlags.Public &lt;br /&gt;                    | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.GetProperty, &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;, IPSecurity, &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;                Console.WriteLine(&amp;quot;&lt;span style="color: #8b0000"&gt;GrantByDefault = &lt;/span&gt;&amp;quot; + bGrantByDefault);&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (!bGrantByDefault)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span style="color: #008000"&gt;// 必须设置  默认允许访问&lt;/span&gt;&lt;br /&gt;                    typ.InvokeMember(&amp;quot;&lt;span style="color: #8b0000"&gt;GrantByDefault&lt;/span&gt;&amp;quot;, BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic &lt;br /&gt;                        | BindingFlags.Instance | BindingFlags.SetProperty, &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;, IPSecurity, &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff"&gt;object&lt;/span&gt;[] { &lt;span style="color: #0000ff"&gt;true&lt;/span&gt; });&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                &lt;span style="color: #008000"&gt;// 更新被拒绝的IP列表&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: #008000"&gt;// 注意这里是完全替换&lt;/span&gt;&lt;br /&gt;                &lt;span style="color: #008000"&gt;// 如果你想保留原先的拒绝列表，需要原先的拒绝列表也在这个数组中&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;                Console.WriteLine(&amp;quot;&lt;span style="color: #8b0000"&gt;Updating the list of denied IPs.&lt;/span&gt;&amp;quot;);&lt;br /&gt;&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;object&lt;/span&gt;[] newIPDenyList = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff"&gt;object&lt;/span&gt;[4];&lt;br /&gt;                newIPDenyList[0] = &amp;quot;&lt;span style="color: #8b0000"&gt;192.168.1.21, 255.255.255.255&lt;/span&gt;&amp;quot;;&lt;br /&gt;                newIPDenyList[1] = &amp;quot;&lt;span style="color: #8b0000"&gt;192.168.1.22, 255.255.255.255&lt;/span&gt;&amp;quot;;&lt;br /&gt;                newIPDenyList[2] = &amp;quot;&lt;span style="color: #8b0000"&gt;192.168.1.23, 255.255.255.255&lt;/span&gt;&amp;quot;;&lt;br /&gt;                newIPDenyList[3] = &amp;quot;&lt;span style="color: #8b0000"&gt;192.168.1.24, 255.255.255.255&lt;/span&gt;&amp;quot;;&lt;br /&gt;&lt;br /&gt;                Console.WriteLine(&amp;quot;&lt;span style="color: #8b0000"&gt;Calling SetProperty&lt;/span&gt;&amp;quot;);&lt;br /&gt;&lt;br /&gt;                &lt;span style="color: #008000"&gt;// add the updated list back to the IPSecurity object&lt;/span&gt;&lt;br /&gt;                typ.InvokeMember(&amp;quot;&lt;span style="color: #8b0000"&gt;IPDeny&lt;/span&gt;&amp;quot;, BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic &lt;br /&gt;                    | BindingFlags.Instance | BindingFlags.SetProperty, &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;, IPSecurity, &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff"&gt;object&lt;/span&gt;[] { newIPDenyList });&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;                IIS.Properties[&amp;quot;&lt;span style="color: #8b0000"&gt;IPSecurity&lt;/span&gt;&amp;quot;][0] = IPSecurity;&lt;br /&gt;&lt;br /&gt;                Console.WriteLine(&amp;quot;&lt;span style="color: #8b0000"&gt;Commiting the changes.&lt;/span&gt;&amp;quot;);&lt;br /&gt;&lt;br /&gt;                &lt;span style="color: #008000"&gt;// commit the changes&lt;/span&gt;&lt;br /&gt;                IIS.CommitChanges();&lt;br /&gt;                IIS.RefreshCache();&lt;br /&gt;&lt;br /&gt;                &lt;span style="color: #008000"&gt;// 检查更新后的数据&lt;/span&gt;&lt;br /&gt;                Console.WriteLine(&amp;quot;&lt;span style="color: #8b0000"&gt;Checking to see if the update took.&lt;/span&gt;&amp;quot;);&lt;br /&gt;&lt;br /&gt;                IPSecurity = IIS.Properties[&amp;quot;&lt;span style="color: #8b0000"&gt;IPSecurity&lt;/span&gt;&amp;quot;][0];&lt;br /&gt;                Array y = (Array)typ.InvokeMember(&amp;quot;&lt;span style="color: #8b0000"&gt;IPDeny&lt;/span&gt;&amp;quot;,&lt;br /&gt;                          BindingFlags.DeclaredOnly | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance &lt;br /&gt;                          | BindingFlags.GetProperty, &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;, IPSecurity, &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; s &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; y)&lt;br /&gt;                    Console.WriteLine(&amp;quot;&lt;span style="color: #8b0000"&gt;After:  &lt;/span&gt;&amp;quot; + s);&lt;br /&gt;            }&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (Exception e)&lt;br /&gt;            {&lt;br /&gt;                Console.WriteLine(&amp;quot;&lt;span style="color: #8b0000"&gt;Error: &lt;/span&gt;&amp;quot; + e.ToString());&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;    }&lt;/pre&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;代码二：&lt;/strong&gt;&lt;/p&gt;

&lt;pre&gt;        &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.DirectoryServices;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System.Reflection;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;using&lt;/span&gt; System;&lt;/pre&gt;

&lt;pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span style="color: #0000ff"&gt;static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; SetIPSecurityProperty(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt; metabasePath, &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; member, &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; item)&lt;br /&gt;        {&lt;br /&gt;            &lt;span style="color: #008000"&gt;//  metabasePath is of the form &amp;quot;IIS://&amp;lt;servername&amp;gt;/&amp;lt;path&amp;gt;&amp;quot;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #008000"&gt;//    for example &amp;quot;IIS://localhost/SMTPSVC/1&amp;quot; &lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #008000"&gt;//  member is of the form &amp;quot;IPGrant|IPDeny|DomainGrant|DomainDeny&amp;quot;&lt;/span&gt;&lt;br /&gt;            &lt;span style="color: #008000"&gt;//  item is of the form &amp;quot;&amp;lt;ipaddress|domain&amp;gt;&amp;quot;, for example, 157.56.236.15 or domain.microsoft.com&lt;/span&gt;&lt;br /&gt;            Console.WriteLine(&amp;quot;&lt;span style="color: #8b0000"&gt;\nEnumerating the IPSecurity property at {0}:&lt;/span&gt;&amp;quot;, metabasePath);&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;try&lt;/span&gt;&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; ((&amp;quot;&lt;span style="color: #8b0000"&gt;IPGrant&lt;/span&gt;&amp;quot; != member) &amp;amp;&amp;amp; (&amp;quot;&lt;span style="color: #8b0000"&gt;IPDeny&lt;/span&gt;&amp;quot; != member) &amp;amp;&amp;amp; (&amp;quot;&lt;span style="color: #8b0000"&gt;DomainGrant&lt;/span&gt;&amp;quot; != member) &amp;amp;&amp;amp; (&amp;quot;&lt;span style="color: #8b0000"&gt;DomainDeny&lt;/span&gt;&amp;quot; != member))&lt;br /&gt;                {&lt;br /&gt;                    Console.WriteLine(&amp;quot;&lt;span style="color: #8b0000"&gt; Failed in SetIPSecurityProperty; second param must be one of IPGrant|IPDeny|DomainGrant|DomainDeny&lt;/span&gt;&amp;quot;);&lt;br /&gt;                }&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;br /&gt;                {&lt;br /&gt;                    DirectoryEntry path = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DirectoryEntry(metabasePath);&lt;br /&gt;                    path.RefreshCache();&lt;br /&gt;                    &lt;span style="color: #0000ff"&gt;object&lt;/span&gt; ipsecObj = path.Invoke(&amp;quot;&lt;span style="color: #8b0000"&gt;Get&lt;/span&gt;&amp;quot;, &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;[] { &amp;quot;&lt;span style="color: #8b0000"&gt;IPSecurity&lt;/span&gt;&amp;quot; });&lt;br /&gt;                    Type t = ipsecObj.GetType();&lt;br /&gt;                    Array data = (Array)t.InvokeMember(member, BindingFlags.GetProperty, &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;, ipsecObj, &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;);&lt;br /&gt;                    Console.WriteLine(&amp;quot;&lt;span style="color: #8b0000"&gt; Old {0} =&lt;/span&gt;&amp;quot;, member);&lt;br /&gt;                    &lt;span style="color: #0000ff"&gt;bool&lt;/span&gt; exists = &lt;span style="color: #0000ff"&gt;false&lt;/span&gt;;&lt;br /&gt;                    &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; dataItem &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; data)&lt;br /&gt;                    {&lt;br /&gt;                        Console.WriteLine(&amp;quot;&lt;span style="color: #8b0000"&gt;  {0}&lt;/span&gt;&amp;quot;, dataItem.ToString());&lt;br /&gt;                        &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (dataItem.ToString().StartsWith(item))&lt;br /&gt;                        {&lt;br /&gt;                            exists = &lt;span style="color: #0000ff"&gt;true&lt;/span&gt;;&lt;br /&gt;                        }&lt;br /&gt;                    }&lt;br /&gt;&lt;br /&gt;                    &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (exists)&lt;br /&gt;                    {&lt;br /&gt;                        Console.WriteLine(&amp;quot;&lt;span style="color: #8b0000"&gt; {0} already exists in {1}&lt;/span&gt;&amp;quot;, item, member);&lt;br /&gt;                    }&lt;br /&gt;                    &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;br /&gt;                    {&lt;br /&gt;                        &lt;span style="color: #0000ff"&gt;object&lt;/span&gt;[] newData = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff"&gt;object&lt;/span&gt;[data.Length + 1];&lt;br /&gt;                        data.CopyTo(newData, 0);&lt;br /&gt;                        newData.SetValue(item, data.Length);&lt;br /&gt;&lt;br /&gt;                        t.InvokeMember(member, BindingFlags.SetProperty, &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;, ipsecObj, &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff"&gt;object&lt;/span&gt;[] { newData });&lt;br /&gt;&lt;br /&gt;                        path.Invoke(&amp;quot;&lt;span style="color: #8b0000"&gt;Put&lt;/span&gt;&amp;quot;, &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff"&gt;object&lt;/span&gt;[] { &amp;quot;&lt;span style="color: #8b0000"&gt;IPSecurity&lt;/span&gt;&amp;quot;, ipsecObj });&lt;br /&gt;&lt;br /&gt;                        path.CommitChanges();&lt;br /&gt;&lt;br /&gt;                        path.RefreshCache();&lt;br /&gt;                        ipsecObj = path.Invoke(&amp;quot;&lt;span style="color: #8b0000"&gt;Get&lt;/span&gt;&amp;quot;, &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;[] { &amp;quot;&lt;span style="color: #8b0000"&gt;IPSecurity&lt;/span&gt;&amp;quot; });&lt;br /&gt;                        data = (Array)t.InvokeMember(member, BindingFlags.GetProperty, &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;, ipsecObj, &lt;span style="color: #0000ff"&gt;null&lt;/span&gt;);&lt;br /&gt;                        Console.WriteLine(&amp;quot;&lt;span style="color: #8b0000"&gt; New {0} =&lt;/span&gt;&amp;quot;, member);&lt;br /&gt;                        &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (&lt;span style="color: #0000ff"&gt;object&lt;/span&gt; dataItem &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; data)&lt;br /&gt;                            Console.WriteLine(&amp;quot;&lt;span style="color: #8b0000"&gt;  {0}&lt;/span&gt;&amp;quot;, dataItem.ToString());&lt;br /&gt;                        Console.WriteLine(&amp;quot;&lt;span style="color: #8b0000"&gt; Done.&lt;/span&gt;&amp;quot;);&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;catch&lt;/span&gt; (Exception ex)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (&amp;quot;&lt;span style="color: #8b0000"&gt;HRESULT 0x80005006&lt;/span&gt;&amp;quot; == ex.Message)&lt;br /&gt;                    Console.WriteLine(&amp;quot;&lt;span style="color: #8b0000"&gt; Property IPSecurity does not exist at {0}&lt;/span&gt;&amp;quot;, metabasePath);&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;else&lt;/span&gt;&lt;br /&gt;                    Console.WriteLine(&amp;quot;&lt;span style="color: #8b0000"&gt;Failed in SetIPSecurityProperty with the following exception: \n{0}&lt;/span&gt;&amp;quot;, ex.Message);&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt; &lt;br /&gt;&lt;span style="color: #0000ff"&gt;        static&lt;/span&gt; &lt;span style="color: #0000ff"&gt;void&lt;/span&gt; Main(&lt;span style="color: #0000ff"&gt;string&lt;/span&gt;[] args)&lt;br /&gt;        {&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: #008000"&gt;// 获取目前服务器上有哪些站点&lt;/span&gt;&lt;br /&gt;            DirectoryEntry root = &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; DirectoryEntry(&amp;quot;&lt;span style="color: #8b0000"&gt;IIS://localhost/W3SVC&lt;/span&gt;&amp;quot;);&lt;br /&gt;            &lt;span style="color: #0000ff"&gt;foreach&lt;/span&gt; (DirectoryEntry dir &lt;span style="color: #0000ff"&gt;in&lt;/span&gt; root.Children)&lt;br /&gt;            {&lt;br /&gt;                &lt;span style="color: #0000ff"&gt;if&lt;/span&gt; (dir.SchemaClassName == &amp;quot;&lt;span style="color: #8b0000"&gt;IIsWebServer&lt;/span&gt;&amp;quot;)&lt;br /&gt;                {&lt;br /&gt;                    &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; ww = dir.Properties[&amp;quot;&lt;span style="color: #8b0000"&gt;ServerComment&lt;/span&gt;&amp;quot;].Value.ToString();&lt;br /&gt;&lt;br /&gt;                    Console.Write(&amp;quot;&lt;span style="color: #8b0000"&gt;IIS://localhost/W3SVC/{0}/ROOT/  {1}\r\n&lt;/span&gt;&amp;quot;, dir.Name, ww);&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            &lt;span style="color: #008000"&gt;// IPDeny();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;            SetIPSecurityProperty(&amp;quot;&lt;span style="color: #8b0000"&gt;IIS://localhost/w3svc/1/root&lt;/span&gt;&amp;quot;, &amp;quot;&lt;span style="color: #8b0000"&gt;IPDeny&lt;/span&gt;&amp;quot;, &amp;quot;&lt;span style="color: #8b0000"&gt;192.168.5.79&lt;/span&gt;&amp;quot;);&lt;br /&gt;&lt;br /&gt;            Console.ReadLine();&lt;br /&gt;        }&lt;br /&gt;&lt;/pre&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;参考资料:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Blocking IIS IP Addresses with ASP.NET 
  &lt;br /&gt;&lt;a title="http://www.west-wind.com/WebLog/posts/59731.aspx" href="http://www.west-wind.com/WebLog/posts/59731.aspx"&gt;http://www.west-wind.com/WebLog/posts/59731.aspx&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;How to Programmatically add IP Addresses to IIS's Deny Access List 
  &lt;br /&gt;&lt;a title="http://www.codeproject.com/KB/security/iiswmi.aspx" href="http://www.codeproject.com/KB/security/iiswmi.aspx"&gt;http://www.codeproject.com/KB/security/iiswmi.aspx&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;HOWTO： 通过 IP 地址或域名称限制站点访问 
  &lt;br /&gt;&lt;a title="http://support.microsoft.com/default.aspx/kb/324066" href="http://support.microsoft.com/default.aspx/kb/324066"&gt;http://support.microsoft.com/default.aspx/kb/324066&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;使用ADSI来操作IIS的路径 
  &lt;br /&gt;&lt;a title="http://blog.joycode.com/ghj/archive/2004/06/08/24047.aspx" href="http://blog.joycode.com/ghj/archive/2004/06/08/24047.aspx"&gt;http://blog.joycode.com/ghj/archive/2004/06/08/24047.aspx&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Setting IP Security Using System.DirectoryServices 
  &lt;br /&gt;&lt;a title="http://www.cnblogs.com/drw/articles/17951.html" href="http://www.cnblogs.com/drw/articles/17951.html"&gt;http://www.cnblogs.com/drw/articles/17951.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;如何通过WEB方式，来控制iis的禁用IP名单。 
  &lt;br /&gt;&lt;a title="http://blog.joycode.com/ghj/archive/2004/06/08/24075.aspx" href="http://blog.joycode.com/ghj/archive/2004/06/08/24075.aspx"&gt;http://blog.joycode.com/ghj/archive/2004/06/08/24075.aspx&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Setting IP Security Using System.DirectoryServices 
  &lt;br /&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/ms524322(VS.85).aspx" href="http://msdn.microsoft.com/en-us/library/ms524322(VS.85).aspx"&gt;http://msdn.microsoft.com/en-us/library/ms524322(VS.85).aspx&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;how to automate adding denied IPs for IIS&lt;/p&gt;

&lt;p&gt;&lt;a title="http://www.nukeforums.com/forums/viewtopic.php?p=54746&amp;amp;highlight=&amp;amp;sid=1176c746e2037ed24acac86dd53ca747" href="http://www.nukeforums.com/forums/viewtopic.php?p=54746&amp;amp;highlight=&amp;amp;sid=1176c746e2037ed24acac86dd53ca747"&gt;http://www.nukeforums.com/forums/viewtopic.php?p=54746&amp;amp;highlight=&amp;amp;sid=1176c746e2037ed24acac86dd53ca747&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;IIS 7.0: Configure IPv4 Address and Domain Name Allow Rules 
  &lt;br /&gt;&lt;a title="http://technet2.microsoft.com/windowsserver2008/en/library/d0de9475-0439-4ec1-8337-2bcedacd15c71033.mspx?mfr=true" href="http://technet2.microsoft.com/windowsserver2008/en/library/d0de9475-0439-4ec1-8337-2bcedacd15c71033.mspx?mfr=true"&gt;http://technet2.microsoft.com/windowsserver2008/en/library/d0de9475-0439-4ec1-8337-2bcedacd15c71033.mspx?mfr=true&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blog.joycode.com/ghj/aggbug/115108.aspx" width="1" height="1" /&gt;</description><dc:creator>ghj1976</dc:creator></item><item><title>《Professional ASP.NET 3.5》 一书（亚马逊网上书店短期内只卖16美元）</title><link>http://blog.joycode.com/scottgu/archive/2008/05/07/115107.aspx</link><pubDate>Tue, 06 May 2008 22:23:05 GMT</pubDate><guid isPermaLink="true">http://blog.joycode.com/scottgu/archive/2008/05/07/115107.aspx</guid><wfw:comment>http://blog.joycode.com/scottgu/comments/115107.aspx</wfw:comment><wfw:commentRss>http://blog.joycode.com/scottgu/comments/commentRss/115107.aspx</wfw:commentRss><comments>http://blog.joycode.com/scottgu/archive/2008/05/07/115107.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blog.joycode.com/scottgu/services/trackbacks/115107.aspx</trackback:ping><source url="http://blog.joycode.com/scottgu/rss.aspx">《Professional ASP.NET 3.5》 一书（亚马逊网上书店短期内只卖16美元）</source><description>&lt;p&gt;【原文地址】&lt;a title="3月28日链接篇： ASP.NET, ASP.NET AJAX, ASP.NET MVC, Visual Studio, Silverlight, .NET" href="http://weblogs.asp.net/scottgu/archive/2008/05/06/professional-asp-net-3-5-book-only-16-on-amazon-for-a-short-time.aspx"&gt;Professional ASP.NET 3.5 Book (only $16 on Amazon for a short time) &lt;/a&gt;&lt;br /&gt;
【原文发表日期】 Tuesday, May 06, 2008 1:38 AM &lt;/p&gt;
&lt;p&gt;我喜欢跟踪的一件事情是Amazon.com的图书销售情况，它对监测开发人员任何一天感兴趣的东西提供了一个非常有用的数据点。我使用&lt;a target="_blank" href="http://www.TitleZ.com"&gt;www.TitleZ.com&lt;/a&gt;网站（是用ASP.NET建造的）来跟踪我想要监测的特定书目，然后它就会生成一个亚马逊网上书店实时销售排行数据的报告，以及七天，三十天，和九十天的销售排行平均数据。 &lt;/p&gt;
&lt;p&gt;今天早晨，我打开我的报告，看到了列表前面常见的那些书目，正要离开时，我注意到列表最前面，由Bill Evjen，Scott Hanselman和Devin Rader合著的《&lt;a target="_blank" href="http://www.amazon.com/gp/product/0470187573/104-4617720-5654313?ie=UTF8&amp;amp;tag=scoblo04-20&amp;amp;linkCode=xm2&amp;amp;camp=1789&amp;amp;creativeASIN=0470187573"&gt;Professional ASP.NET 3.5: In C# and VB&lt;/a&gt;》一书让人眼花缭乱的亚马逊排名，它的亚马逊销售排名为惊人的第95名（亚马逊网上书店所有书中），这意味着它的销售量超过了哈利-波特（这对任何技术书来说，简直是闻所未闻的）。 &lt;/p&gt;
&lt;p&gt;后来发现亚马逊正在短期内对几本书进行特价促销，这本书是其中一本。该书原价为54美元，短期内你只要支付价格低得有点荒唐的16.49美元就可以买到。我不知道这个促销活动会持续多久，但如果你正在找一本优秀的ASP.NET 3.5图书的话，你也许应该占一下便宜：&lt;/p&gt;
&lt;p&gt;&lt;a target="_blank" href="http://www.amazon.com/gp/product/0470187573/104-4617720-5654313?ie=UTF8&amp;amp;tag=scoblo04-20&amp;amp;linkCode=xm2&amp;amp;camp=1789&amp;amp;creativeASIN=0470187573"&gt;&lt;img alt="" src="http://silverlight1blogpost.s3.amazonaws.com/scotthabook.jpg" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;这是本优秀的ASP.NET 3.5书目，出色的end to end资源。自三月份出版以来，就一直高居编程类畅销书排行榜上（所有编程类书中排列前5名），好评如潮（几个星期前我曾在亚马逊上写过评语，给了它5星）。 &lt;/p&gt;
&lt;p&gt;如果你想买一本好的ASP.NET的书的话，你也许应该考虑在亚马逊结束促销前买下该书（如果在你读到本文前书价有所改变的话，我预表歉意）。 &lt;/p&gt;
&lt;p&gt;希望本文对你有所帮助，&lt;/p&gt;
&lt;p&gt;Scott&lt;/p&gt;
&lt;p&gt;P.S. 附注： 如果你正在找别的.NET 3.5和VS 2008好书的话，我还推荐 《&lt;a target="_blank" href="http://www.amazon.com/gp/product/0596527578/002-5242737-1614454?ie=UTF8&amp;amp;tag=scoblo04-20&amp;amp;linkCode=xm2&amp;amp;camp=1789&amp;amp;creativeASIN=0596527578"&gt;C# 3.0 In a Nutshell&lt;/a&gt;》，《&lt;a target="_blank" href="http://www.amazon.com/gp/product/1933988169?ie=UTF8&amp;amp;tag=scoblo04-20&amp;amp;linkCode=xm2&amp;amp;camp=1789&amp;amp;creativeASIN=1933988169"&gt;LINQ in Action&lt;/a&gt;》，和《&lt;a target="_blank" href="http://www.amazon.com/gp/product/1590597893/002-5242737-1614454?ie=UTF8&amp;amp;tag=scoblo04-20&amp;amp;linkCode=xm2&amp;amp;camp=1789&amp;amp;creativeASIN=1590597893"&gt;Pro LINQ: Language Integrated Query in C# 2008&lt;/a&gt;》 （这些书在亚马逊上都是5星）。&lt;/p&gt;
&lt;p&gt;【更新】 Tuesday, May 06, 2008 2:22 PM by ScottGu&lt;/p&gt;
&lt;p&gt;看上去，书价刚回涨到27美元（但还是五折）。&lt;/p&gt;
&lt;p&gt;目前该书在亚马逊*所有*东西的销售中排行第五，我怀疑他们提价，是因为它在排行榜上跃升太快，卖得比他们原先计划的还要好得过了点，:-)。 &lt;/p&gt;
&lt;p&gt;下面是还在列表上的其他几本书：&lt;/p&gt;
&lt;p&gt;C# 2008: &lt;a target="_new" rel="nofollow" href="http://www.amazon.com/gp/product/0470191376/002-5242737-1614454?ie=UTF8&amp;amp;tag=scoblo04-20&amp;amp;linkCode=xm2&amp;amp;camp=1789&amp;amp;creativeASIN=0470191376"&gt;www.amazon.com/.../002-5242737-1614454&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;VB 2008: &lt;a target="_new" rel="nofollow" href="http://www.amazon.com/gp/product/0470182628/002-5242737-1614454?ie=UTF8&amp;amp;tag=scoblo04-20&amp;amp;linkCode=xm2&amp;amp;camp=1789&amp;amp;creativeASIN=0470182628"&gt;www.amazon.com/.../002-5242737-1614454&lt;/a&gt;&lt;/p&gt;
&lt;div class="postfoot"&gt;
&lt;div class="em"&gt;标签： &lt;a rel="tag" href="http://weblogs.asp.net/scottgu/archive/tags/ASP.NET/default.aspx"&gt;ASP.NET&lt;/a&gt;, &lt;a rel="tag" href="http://weblogs.asp.net/scottgu/archive/tags/.NET/default.aspx"&gt;.NET&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;&lt;img src="http://blog.joycode.com/scottgu/aggbug/115107.aspx" width="1" height="1" /&gt;</description><dc:creator>scottgu</dc:creator></item><item><title>Feature Schema中Module和File节点属性含义的解释</title><link>http://blog.joycode.com/kaneboy/archive/2008/05/06/115106.aspx</link><pubDate>Tue, 06 May 2008 11:36:03 GMT</pubDate><guid isPermaLink="true">http://blog.joycode.com/kaneboy/archive/2008/05/06/115106.aspx</guid><wfw:comment>http://blog.joycode.com/kaneboy/comments/115106.aspx</wfw:comment><wfw:commentRss>http://blog.joycode.com/kaneboy/comments/commentRss/115106.aspx</wfw:commentRss><comments>http://blog.joycode.com/kaneboy/archive/2008/05/06/115106.aspx#comment</comments><slash:comments>0</slash:comments><trackback:ping>http://blog.joycode.com/kaneboy/services/trackbacks/115106.aspx</trackback:ping><source url="http://blog.joycode.com/kaneboy/rss.aspx">Feature Schema中Module和File节点属性含义的解释</source><description>&lt;p&gt;&amp;lt;Module Name="" Path="" Url=""&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;File Name="" Path="" Url="" /&amp;gt;&lt;br&gt;&amp;lt;/Module&amp;gt; &lt;br&gt;&lt;br&gt;Module:&lt;br&gt;Name : 磁盘上放置文件的文件夹的名称&lt;br&gt;Path : 在"Name"属性中指定的文件夹在磁盘上相对于\\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\Features\Feature的路径。如果文件夹是直接放置于Feature目录，那么Path应该是空。&lt;br&gt;Url : 要拷贝到站点的哪个目录，目录的路径是相对于站点根目录的。如果站点中没有此目录存在，则会自动创建此目录。&lt;br&gt;&lt;br&gt;File:&lt;br&gt;Url : 文件在站点中的名称&lt;br&gt;Path : 文件在磁盘上相对于\\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\Features\Feature的路径。&lt;br&gt;Name : 通常不需要制定Name属性的值，留空即可。如果不为空，则会覆盖Url属性的值，使文件在站点中用Name指定的名称。&lt;br&gt;&lt;br&gt;举例：&lt;br&gt;Feature源文件结构如下，在“AModuleSample”这个Feature目录中还有一个“AModuleSample”子目录，其中有“readme.txt”这个需要provision的文件：&lt;br&gt;&lt;a href="http://blog.joycode.com/images/blog.joycode.com/kaneboy/WindowsLiveWriter/FeatureSchemaModuleFile_1139F/image_2.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="274" alt="image" src="http://blog.joycode.com/images/blog.joycode.com/kaneboy/WindowsLiveWriter/FeatureSchemaModuleFile_1139F/image_thumb.png" width="441" border="0"&gt;&lt;/a&gt; &lt;br&gt;&lt;br&gt;那么Module和File就要写成下面这样：&lt;br&gt;&lt;a href="http://blog.joycode.com/images/blog.joycode.com/kaneboy/WindowsLiveWriter/FeatureSchemaModuleFile_1139F/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="86" alt="image" src="http://blog.joycode.com/images/blog.joycode.com/kaneboy/WindowsLiveWriter/FeatureSchemaModuleFile_1139F/image_thumb_1.png" width="631" border="0"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt; 上面的Module和File元素的定义表明，我们希望将readme.txt文件以newname.txt的名字放到站点的NewFolderInSite目录中。所以，激活此Feature之后，站点上就会多这样一个目录和文件：&lt;br&gt;&lt;br&gt;&lt;a href="http://blog.joycode.com/images/blog.joycode.com/kaneboy/WindowsLiveWriter/FeatureSchemaModuleFile_1139F/image_6.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="292" alt="image" src="http://blog.joycode.com/images/blog.joycode.com/kaneboy/WindowsLiveWriter/FeatureSchemaModuleFile_1139F/image_thumb_2.png" width="489" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blog.joycode.com/kaneboy/aggbug/115106.aspx" width="1" height="1" /&gt;</description><dc:creator>kaneboy</dc:creator></item><item><title>使用Silverlight制作自己的休闲游戏</title><link>http://blog.joycode.com/joy/archive/2008/05/06/115105.aspx</link><pubDate>Tue, 06 May 2008 06:21:20 GMT</pubDate><guid isPermaLink="true">http://blog.joycode.com/joy/archive/2008/05/06/115105.aspx</guid><wfw:comment>http://blog.joycode.com/joy/comments/115105.aspx</wfw:comment><wfw:commentRss>http://blog.joycode.com/joy/comments/commentRss/115105.aspx</wfw:commentRss><comments>http://blog.joycode.com/joy/archive/2008/05/06/115105.aspx#comment</comments><slash:comments>2</slash:comments><trackback:ping>http://blog.joycode.com/joy/services/trackbacks/115105.aspx</trackback:ping><source url="http://blog.joycode.com/joy/rss.aspx">使用Silverlight制作自己的休闲游戏</source><description>&lt;p&gt;相信很多朋友已经知道Silverlight是什么东东了，在前段时间，微软与国内外的合作伙伴一起致力于Silverlight的合作事宜，目前您可以看到以下精彩的国内案例:&lt;/p&gt; &lt;p&gt;1. 百度音乐抢鲜族(Silverlight 2 Beta 1): &lt;a href="http://mu.baidu.com"&gt;http://mu.baidu.com&lt;/a&gt;，上个月，百度已经将其音乐抢鲜族升级到了Silverlight 2 Beta 1.&lt;/p&gt; &lt;p&gt;2. 奥运官网火炬接力视频(Silverlight 1): &lt;a title="http://torchrelay.beijing2008.cn/cn/video/historical/basketball-chouqian-man/" href="http://torchrelay.beijing2008.cn/cn/video/historical/basketball-chouqian-man/"&gt;http://torchrelay.beijing2008.cn/cn/video/historical/basketball-chouqian-man/&lt;/a&gt;,以后将会有越来越多的接力视频会使用Silverlight进行播放.&lt;/p&gt; &lt;p&gt;3. 腾讯采用Silverlight的新产品创意 (Silverligh 1 &amp;amp; 2): &lt;a title="http://labs.qq.com/e/51/" href="http://labs.qq.com/e/51/"&gt;http://labs.qq.com/e/51/&lt;/a&gt;,腾讯在未来将会把Silverlight应用到新产品的创意当中。&lt;/p&gt; &lt;p&gt;4. 新浪音乐地图(Silverlight 2 Beta 1):&lt;a title="http://blogs.msdn.com/jijia/archive/2008/04/16/sina-musicmap-details.aspx" href="http://blogs.msdn.com/jijia/archive/2008/04/16/sina-musicmap-details.aspx"&gt;http://blogs.msdn.com/jijia/archive/2008/04/16/sina-musicmap-details.aspx&lt;/a&gt;,我的同事黄继佳会向大家介绍更多细节。&lt;/p&gt; &lt;p&gt;当然还有其它的很多新产品会很快发布，大家可以参看媒体上的报道。&lt;/p&gt; &lt;p&gt;&lt;a href="http://blog.joycode.com/images/blog.joycode.com/joy/WindowsLiveWriter/Silverlight_C9D7/image_4.png"&gt;&lt;img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" border="0" alt="image" align="left" src="http://blog.joycode.com/images/blog.joycode.com/joy/WindowsLiveWriter/Silverlight_C9D7/image_thumb_1.png" width="319" height="198"&gt;&lt;/a&gt;Silverlight 1.0自从去年九月发布以来，在半年左右的时间内，通过与国内外合作伙伴的合作，既已经达到了30%左右的市占率，而且在全球以每天一千五百万的下载率进行递增。曾经有一家媒体的记者在我们进行交流时对此数据产生了怀疑。我相信也有很多朋友现在表示怀疑，但毛主席说过“没有调查就没有发言权”，所以大家完全可以在自己的页面当中进行Silverlight安装侦测，而那家媒体在自家的网站上选择时间段对安装量进行监测后，惊讶的发现，这个数据是完全准确的。如果您有兴趣在自己的网站上进行检测，建议阅读我的同事黄继佳的文章：&lt;a href="http://blogs.msdn.com/jijia/archive/2007/11/19/test.aspx" target="_blank"&gt;Silverlight安装与侦测原理&lt;/a&gt;。&lt;/p&gt; &lt;p&gt;所以，现在已经是全面转向Silverlight开发的时代了，那么使用Silverlight除了开发视音频体验完，是否也可以制作自己的休闲游戏（当然，也可以开发RIA应用，但毕竟视音频以及休闲游戏是更容易入手的）呢？当然可以，我们可以在&lt;a href="http://www.silverlight.net"&gt;http://www.silverlight.net&lt;/a&gt; 里面看到很多Sample，是休闲游戏的。不过我相信很多人使用C#/Javascript/XAML来制作休闲游戏还是很困难的。&lt;/p&gt; &lt;p&gt;认真想一下，休闲游戏其实也很简单：场景、角色、控制、信息展示以及行为等，除了编写代码，有没有可能让那些单纯的游戏爱好者也可以根据自己的意愿制作一个游戏呢？&lt;/p&gt; &lt;p&gt;可能大家都已经知道Popfly了，而现在同样在Popfly平台上，微软推出了一个新的工具，就是Game Creator，在这儿您可以玩游戏（这些游戏也是模板），编写自已的游戏，也可以将自己编写的休闲游戏发布到您的网站或者博客边栏上，有兴趣就来试一下吧:&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.popfly.com"&gt;http://www.popfly.com&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blog.joycode.com/joy/aggbug/115105.aspx" width="1" height="1" /&gt;</description><dc:creator>开心就好</dc:creator></item></channel></rss>