<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>简单生活 -- Kevin Yang的博客 &#187; 微软</title>
	<atom:link href="http://www.imkevinyang.com/tags/microsoft/feed" rel="self" type="application/rss+xml" />
	<link>http://www.imkevinyang.com</link>
	<description>It&#039;s all about sharing</description>
	<lastBuildDate>Sun, 05 Feb 2012 15:37:14 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>微软Azure平台的计费模型</title>
		<link>http://www.imkevinyang.com/2010/11/%e5%be%ae%e8%bd%afazure%e5%b9%b3%e5%8f%b0%e7%9a%84%e8%ae%a1%e8%b4%b9%e6%a8%a1%e5%9e%8b.html</link>
		<comments>http://www.imkevinyang.com/2010/11/%e5%be%ae%e8%bd%afazure%e5%b9%b3%e5%8f%b0%e7%9a%84%e8%ae%a1%e8%b4%b9%e6%a8%a1%e5%9e%8b.html#comments</comments>
		<pubDate>Fri, 12 Nov 2010 01:00:00 +0000</pubDate>
		<dc:creator>Kevin Yang</dc:creator>
				<category><![CDATA[其他随笔]]></category>
		<category><![CDATA[AppFabric]]></category>
		<category><![CDATA[CDN]]></category>
		<category><![CDATA[Sql Azure]]></category>
		<category><![CDATA[Windows Azure]]></category>
		<category><![CDATA[云存储]]></category>
		<category><![CDATA[云平台]]></category>
		<category><![CDATA[云计算]]></category>
		<category><![CDATA[微软]]></category>
		<category><![CDATA[计费]]></category>
		<category><![CDATA[费用]]></category>

		<guid isPermaLink="false">http://www.imkevinyang.com/2010/11/%e5%be%ae%e8%bd%afazure%e5%b9%b3%e5%8f%b0%e7%9a%84%e8%ae%a1%e8%b4%b9%e6%a8%a1%e5%9e%8b.html</guid>
		<description><![CDATA[<p>微软的Azure平台在今年也就是2010年开始投入商用，很多公司也在尝试着基于Azure平台开发或者移植自己的应用程序到云平台上。在这过程中，计费是大家非常关注的一个问题，毕竟涉及到钱的问题。微软官方Portal上面列出了Azure平台各类服务的收费标准，不过很杂乱，也有很多细节不清楚的地方，很多人&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>微软的Azure平台在今年也就是2010年开始投入商用，很多公司也在尝试着基于Azure平台开发或者移植自己的应用程序到云平台上。在这过程中，计费是大家非常关注的一个问题，毕竟涉及到钱的问题。微软官方Portal上面列出了Azure平台各类服务的收费标准，不过很杂乱，也有很多细节不清楚的地方，很多人看了之后还是会比较晕。在这里我会从另一个视角来介绍这些费用，希望对你有所帮助。</p>
<p>Azure平台的计费模型可以分为以下几个方面：</p>
<ul>
<li>计算费用</li>
<li>存储费用</li>
<li>请求事务费用</li>
<li>连接费用</li>
<li>带宽费用</li>
</ul>
<p>在开始介绍之前需要说明一下，下面我提到的"Azure平台"，是笼统的包括整个云平台提供的所有服务，而当我提到"Windows Azure"的时候，则不包括Sql Azure和AppFabric服务的。</p>
<h2><strong>计算费用</strong></h2>
<p>在Windows Azure中创建的Hosted Service就是一个计算服务（Compute Service）。每个计算服务提供了两个部署平台插槽，Production和Stage，Production平台通常用于生产环境，对外地址是固定的，在创建Service的时候就已经确定了。而Stage一般用于测试开发，地址随每次部署变更。</p>
<p>一般的开发流程是先将应用程序部署到Stage平台上，测试完毕之后将其切换到Production平台。</p>
<p><strong>但是Production和Stage平台的收费标准没有任何区别</strong>。</p>
<p>每个计算服务由若干个角色（Role）组成，每个角色由若干个计算实例（Compute Instance）组成。每个计算实例都运行在单独的VM中，我们可以把VM理解为一台单独的机器，它拥有独立的CPU数目，内存以及本地存储。VM有不同规格的配置，依次为Small,medium,large,extralarge，如下表所示。</p>
<p><img style="display: inline; border-width: 0px;" title="image" src="http://www.imkevinyang.com/wp-content/uploads/2010/11/image.png" border="0" alt="image" width="521" height="121" /></p>
<p>计算服务的计费公式：</p>
<p><span style="background-color: #fc6;"> </span></p>
<p>使用小时数 * 实例数（也就是VM的数目） * 计费基准（也就是0.12 x 不同规格VM使用的CPU数目）</p>
<p>或者这个公式可能更好理解： <span style="background-color: #fc6;">使用小时数 * 使用的CPU总数 * 0.12</span></p>
<p>这里需要注意两点：</p>
<p>1. 使用小时数是从一部署就开始计算，除非删除应用，否则一直算钱。不足一小时以一小时计算。</p>
<p>2. 实例数包括了Production和Stage两个平台。</p>
<h2><strong>存储费用</strong></h2>
<p>Azure平台的存储费用包括两个部分，一个是Windows Azure存储，另一个是Sql Azure数据库存储。</p>
<p><strong>Windows Azure提供的存储服务包括Table、Queue和Blob存储</strong>。以月作为一个周期，统计一个月内上传的容量，然后平摊到每一天得到平均值。根据这个日平均值来收费。</p>
<p><span style="background-color: #fc6;">Windows Azure存储费用为$0.15 /GB</span></p>
<p>而Sql Azure根据创建的数据库大小不同，收费也不同，和Windows Azure存储服务类似，也是统计每个月创建的数据库总容量，然后平摊到月内每一天，最后按照日平均值收费。</p>
<p><span style="background-color: #fc6;">Sql Azure数据库存储费用为$9.99 /GB</span></p>
<p>以11月份（30天）计费周期为例，你在1号的时候创建了一个10G的数据库，但是只用了15天，接下来的15天你已经删除这个数据库了，那么11月份的日均存储为(10*15+0*15) / 30 = 5G。和你创建一个5G的数据库然后用上整月的收费是一样的。 <strong> </strong></p>
<h2><strong>请求事务（Transaction）费用</strong></h2>
<p>向Azure平台服务发起的HTTP请求称为事务（Transaction）。包括以下几个方面：</p>
<ul>
<li>应用程序访问Windows Azure存储服务（Blob、Table、Queue）</li>
<li>CDN节点访问Windows Azure存储服务（Blob、Table、Queue）</li>
<li>应用程序向Access Control访问控制服务（AppFabric的一个组件）发起请求</li>
</ul>
<p>其中：</p>
<p>应用程序向Windows Azure存储服务发起的事务的费用为<span style="background-color: #fc6;">$0.01 /10K</span>，即1万次事务0.01美元；</p>
<p>CDN发起的事务为<span style="background-color: #fc6;">$0.01 /10K</span>；</p>
<p>应用程序向Access Control发起的事务为<span style="background-color: #fc6;">$1.99 /100K</span>，</p>
<h2>连接收费（Service Bus）</h2>
<p>Azure平台的AppFabric提供了两个服务，一个是Access Control访问权限控制，另外一个就是Service Bus。Service Bus允许你将企业内部的应用通过Azure平台发布到互联网上，以便和第三方应用程序通讯。注意，应用程序本身并没有部署到Azure平台，Service Bus只是起一个数据转接的作用。下面是一个简单的示意流程：</p>
<p><strong>企业应用=&gt;企业防火墙=&gt;AppFabric Service Bus服务=&gt;暴露通讯端点</strong></p>
<p>第三方应用程序就通过Azure平台上Service Bus暴露的互联网唯一通讯地址来和企业应用进行通讯。</p>
<p>这个过程会产生一些网络连接，包括第三方应用程序和Service Bus端点之间的连接，以及Service Bus和企业应用程序之间的连接。</p>
<p><strong>Azure会按照一个月内平均的每天最大并发连接数目来进行计费</strong>。</p>
<p>那么这个每天最大并发连接数怎么计算出来的呢？</p>
<p>Azure每天以5分钟为间隔，统计当前<strong>时刻</strong>的并发连接数，这样一天下来就可以得到当天的最大并发连接数了。将一个月内每天的最大并发连接数累加起来，再平摊到每一天上就得到当前计费周期的日平均最大并发连接数，按此数值收费。</p>
<p>你可以选择按需计费，也可以选择购买固定最大连接数。这两种资费标准不同。</p>
<p><span style="background-color: #fc6;">按需计费，每个连接为$3.99，而购买固定连接数，每个连接只需花费$1.99</span>。Azure提供了5, 25, 100 或者500个连接的这几种套餐。</p>
<p>如果你的网站并发数不确定，那么你可以选择按需支付，这样每天的并发连接数再大也不会有问题（尽管如此，Azure自身还是限制了最大的并发数），只不过你需要多付一些钱而已。但对于那些能够预先估计自己的日最大并发连接数的客户来说，他可以选择购买固定连接数套餐，这样一个月的花费就是确定的了。当然，这样的坏处就是，一旦超过购买的峰值连接数，就无法接受新的连接。</p>
<p>例如某个小型网站，预计每天最大并发数不超过20个连接，那么他可以购买25个连接的套餐，这样一个月就固定花费49.75美元。</p>
<h2><strong>带宽费用</strong></h2>
<p><strong>一旦数据中心节点内外之间发生任何数据传输，均需要计入带宽费用</strong>。包括上面提到的存储请求、事务请求以及与AppFabric服务之间产生的数据交互，都需要计入带宽费用范畴。但是，<strong>同一个数据中心内的数据传输不收费</strong>。这也是为什么微软建议你尽量把应用都部署在同一个数据中心里头的缘故。</p>
<p>微软的数据中心可以分为主节点和CDN节点，这两种节点的带宽收费标准是不同的。</p>
<p>主节点的计费标准为：</p>
<p><span style="background-color: #fc6;">亚洲数据中心 $0.30 in / $0.45 out 每GB </span></p>
<p><span style="background-color: #fc6;">北美欧洲地区 $0.10 in / $0.15 out 每GB</span></p>
<p>需要注意的是，当用户第一次从CDN节点读取资源的时候，这个时候由于资源尚未缓存到该CDN节点，因此CDN节点需要从主节点获取该资源，这个数据传输也会按照上面的主节点带宽费用标准来计算。</p>
<p>CDN节点只会供用户下载资源，因此没有上行带宽费用。计费标准：</p>
<p><span style="background-color: #fc6;">北美以及欧洲地区费用 $0.15 每GB</span></p>
<p><span style="background-color: #fc6;">其他地区 $0.20 每GB</span></p>
<p>以上是我研究Azure计费模型的结果，写得不对的地方还请你指出。当然，这里头涉及到的具体计费标准未来肯定有所变动，但是基本的计费模型个人感觉应该已经比较完善了。更细节的计费问题以及最新的计费标准，请参考<a title="Windows Azure Platform Consumption" href="http://www.microsoft.com/windowsazure/offers/popup/popup.aspx?lang=en&amp;locale=en-US&amp;offer=MS-AZR-0003P" target="_blank">Windows Azure Platform Consumption</a>以及<a title="Windows Azure Pricing" href="http://www.microsoft.com/windowsazure/pricing/" target="_blank">Windows Azure Pricing</a>。</p>
<p style="text-align: right;">——<a title="微软Azure平台的计费模型" href="http://www.imkevinyang.com/2010/11/%e5%be%ae%e8%bd%afAzure%e5%b9%b3%e5%8f%b0%e7%9a%84%e8%ae%a1%e8%b4%b9%e6%a8%a1%e5%9e%8b.html"><em>Kevin Yang</em></a></p>

	标签：<a href="http://www.imkevinyang.com/tags/appfabric" title="AppFabric" rel="tag">AppFabric</a>, <a href="http://www.imkevinyang.com/tags/cdn" title="CDN" rel="tag">CDN</a>, <a href="http://www.imkevinyang.com/tags/sql-azure" title="Sql Azure" rel="tag">Sql Azure</a>, <a href="http://www.imkevinyang.com/tags/windows-azure" title="Windows Azure" rel="tag">Windows Azure</a>, <a href="http://www.imkevinyang.com/tags/%e4%ba%91%e5%ad%98%e5%82%a8" title="云存储" rel="tag">云存储</a>, <a href="http://www.imkevinyang.com/tags/%e4%ba%91%e5%b9%b3%e5%8f%b0" title="云平台" rel="tag">云平台</a>, <a href="http://www.imkevinyang.com/tags/%e4%ba%91%e8%ae%a1%e7%ae%97" title="云计算" rel="tag">云计算</a>, <a href="http://www.imkevinyang.com/categories/techarticles/othertecharticles" title="其他随笔" rel="tag">其他随笔</a>, <a href="http://www.imkevinyang.com/tags/microsoft" title="微软" rel="tag">微软</a>, <a href="http://www.imkevinyang.com/tags/%e8%ae%a1%e8%b4%b9" title="计费" rel="tag">计费</a>, <a href="http://www.imkevinyang.com/tags/%e8%b4%b9%e7%94%a8" title="费用" rel="tag">费用</a><br />

	<h4 style="background-color:#3B3B3B;border-bottom:2px groove gray;color:#F2F2F2;margin-top:20px;padding:6px 6px 6px 15px;margin:20px 0px 0px 0px">你可能对下面的文章感兴趣</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.imkevinyang.com/2009/05/google%e5%92%8c%e5%be%ae%e8%bd%af%e7%9a%84%e4%b8%80%e5%a4%a7%e4%b8%8d%e5%90%8c.html" title="Google和微软的一大不同 (2009/05/06)">Google和微软的一大不同</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/12/win7vista%e9%ab%98%e7%ba%a7%e7%94%a8%e6%88%b7%e5%bf%85%e5%a4%87%e7%9a%84%e5%8f%b3%e9%94%ae%e8%8f%9c%e5%8d%95take-back-my-ownership.html" title="Win7/Vista高级用户必备的右键菜单Take back my Ownership! (2009/12/06)">Win7/Vista高级用户必备的右键菜单Take back my Ownership!</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/03/%e5%8d%81%e5%b9%b4mfc%e7%bb%8f%e5%8e%86%e8%ae%a4%e8%af%86%e7%9a%84microsoft%e6%8a%80%e6%9c%af.html" title="十年MFC经历认识的Microsoft技术 (2009/03/17)">十年MFC经历认识的Microsoft技术</a> </li>
	<li><a href="http://www.imkevinyang.com/2010/06/%e5%be%ae%e8%bd%af%e6%8a%80%e6%9c%af%e7%a4%be%e5%8c%ba%e7%b2%be%e8%8b%b1%e8%ae%a1%e5%88%92%e4%bd%a0%e4%b9%9f%e6%9d%a5%e5%8a%a0%e5%85%a5%e5%90%a7.html" title="微软技术社区精英计划&mdash;&mdash;你也来加入吧 (2010/06/02)">微软技术社区精英计划&mdash;&mdash;你也来加入吧</a> </li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.imkevinyang.com/2010/11/%e5%be%ae%e8%bd%afazure%e5%b9%b3%e5%8f%b0%e7%9a%84%e8%ae%a1%e8%b4%b9%e6%a8%a1%e5%9e%8b.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>微软技术社区精英计划&#8212;&#8212;你也来加入吧</title>
		<link>http://www.imkevinyang.com/2010/06/%e5%be%ae%e8%bd%af%e6%8a%80%e6%9c%af%e7%a4%be%e5%8c%ba%e7%b2%be%e8%8b%b1%e8%ae%a1%e5%88%92%e4%bd%a0%e4%b9%9f%e6%9d%a5%e5%8a%a0%e5%85%a5%e5%90%a7.html</link>
		<comments>http://www.imkevinyang.com/2010/06/%e5%be%ae%e8%bd%af%e6%8a%80%e6%9c%af%e7%a4%be%e5%8c%ba%e7%b2%be%e8%8b%b1%e8%ae%a1%e5%88%92%e4%bd%a0%e4%b9%9f%e6%9d%a5%e5%8a%a0%e5%85%a5%e5%90%a7.html#comments</comments>
		<pubDate>Tue, 01 Jun 2010 17:58:52 +0000</pubDate>
		<dc:creator>Kevin Yang</dc:creator>
				<category><![CDATA[生活网事]]></category>
		<category><![CDATA[原创文章]]></category>
		<category><![CDATA[微软]]></category>
		<category><![CDATA[技术心得]]></category>
		<category><![CDATA[社区精英计划]]></category>

		<guid isPermaLink="false">http://www.imkevinyang.com/2010/06/%e5%be%ae%e8%bd%af%e6%8a%80%e6%9c%af%e7%a4%be%e5%8c%ba%e7%b2%be%e8%8b%b1%e8%ae%a1%e5%88%92%e4%bd%a0%e4%b9%9f%e6%9d%a5%e5%8a%a0%e5%85%a5%e5%90%a7.html</guid>
		<description><![CDATA[<p>4月底那会儿在网上瞎逛的时候发现了微软中国今年的一个新计划，叫“微软技术社区精英计划”。这个计划旨在培养世界级的中国IT技术精英，并建立起一个良好的技术社区，让世界重新认识中国IT人。当时看到这个计划愿景的时候，很有共鸣。</p>
<p>我个人感觉，目前国内的IT技术氛围才刚刚起步，很多人才开始有了分享的意识，愿意&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>4月底那会儿在网上瞎逛的时候发现了微软中国今年的一个新计划，叫“微软技术社区精英计划”。这个计划旨在培养世界级的中国IT技术精英，并建立起一个良好的技术社区，让世界重新认识中国IT人。当时看到这个计划愿景的时候，很有共鸣。</p>
<p>我个人感觉，目前国内的IT技术氛围才刚刚起步，很多人才开始有了分享的意识，愿意将自己辛苦研究的成果发布到网上和别人分享、讨论。这是一个好的开始，也是一个良性技术社区的基石。但是目前我们还处于一个学习别人成果的阶段，什么时候我们能让别人去学习我们做出来的东西的时候，我觉得我们中国的IT技术就真的强大了。</p>
<p>通过一个月的参与，我有几点感受，在这里和大家分享一下。</p>
<p>这个计划给大家带来的好处，我觉得有几个。一个是督促自己不断努力，别偷懒。做技术很容易因为各种借口而产生偷懒心理，例如位于借口排行榜第一位的就是“我太忙了”。我觉得一个整天忙着赶路而不知道停下来思考的人是不会有真正进步的。想起某句名言：“有些人工作了5年，也只是攒了一年的经验，然后重复了5次”。通过写写博客，参与论坛讨论之类的活动，能够强迫我们大脑从更多层面和角度去思考问题，从而提升自己思考问题的境界。另外一个好处是能够认识更多同类人。参与这个计划的人不能说都是精英，但至少都是愿意朝这个方向奋斗的人。国内做技术的，圈子一般相对比较窄，多认识这样的人对扩大自己圈子有很好的帮助。最后一个好处，可能也是很多人看重的，就是可以获取更多微软资源。例如获得MVP提名，参与一些微软技术培训，分享技术资源，等等。当然有索取也应该有付出，在得到这么多资源的同时，我们也应该尽量贡献自己的一份力量，否则是会被“踢出”这个计划滴(┬＿┬)</p>
<p>如果你对这个计划感兴趣的话，欢迎申请加入，详细信息参考：<a title="http://msdn.microsoft.com/zh-cn/ff658272.aspx" href="http://msdn.microsoft.com/zh-cn/ff658272.aspx">http://msdn.microsoft.com/zh-cn/ff658272.aspx</a>。</p>
<p>还有一个“<a title="原创文章晒出来" href="http://msdn.digihail.com/articleshow/default.aspx" target="_blank">原创文章晒出来</a>”的活动不知道和这个社区精英计划是否有关系。这个活动鼓励大家提交自己的原创文章，如果数目可观的话，有可能获得“原创之星”的称号。我把以前积累的一些写得还算认真的文章投到这个栏目，很高兴大多数被收录了，也因此获得了首期晒杂志的原创之星的称号。可惜发个人资料的时候人家第一期电子杂志已经弄好了，要不然你就能看到偶的生活照了╯﹏╰。</p>
<p>如果你也积累了很多原创文章，你也可以把这些文章投到这个栏目。下面是几篇被收录文章的地址。</p>
<ul>
<li><a title="枚举导致的WCF Web Service接口返回异常" href="http://msdn.microsoft.com/zh-cn/ff657181.aspx" target="_blank">枚举导致的WCF Web Service接口返回异常</a></li>
<li><a title="解决Silverlight引用中文字体的问题" href="http://msdn.microsoft.com/zh-cn/ff686903.aspx" target="_blank">解决Silverlight引用中文字体的问题</a></li>
<li><a title="解决Silverlight无法调试的问题" href="http://msdn.microsoft.com/zh-cn/ff686904.aspx" target="_blank">解决Silverlight无法调试的问题</a></li>
<li><a title="跨域下请求Silverlight Xap包引起的问题" href="http://msdn.microsoft.com/zh-cn/ff686925.aspx" target="_blank">跨域下请求Silverlight Xap包引起的问题</a></li>
<li><a title="莫名其妙的Silverlight资源文件引用问题" href="http://msdn.microsoft.com/zh-cn/ff686927.aspx" target="_blank">莫名其妙的Silverlight资源文件引用问题</a></li>
<p>   <a title="释放SQL Server占用的内存" href="http://msdn.microsoft.com/zh-cn/ff687183.aspx" target="_blank"></a>
<li><a title="使用正则表达式匹配嵌套Html标签" href="http://msdn.microsoft.com/zh-cn/ff686933.aspx" target="_blank">使用正则表达式匹配嵌套Html标签</a></li>
<li><a title="小贴士加了try-catch也能自动定位到异常代码" href="http://msdn.microsoft.com/zh-cn/ff687186.aspx" target="_blank">小贴士加了try-catch也能自动定位到异常代码</a></li>
<li><a title="Visual Studio统计有效代码行数" href="http://msdn.microsoft.com/zh-cn/ff687195.aspx" target="_blank">Visual Studio统计有效代码行数</a></li>
<li><a title="小心,WCF接口中的参数改名问题" href="http://msdn.microsoft.com/zh-cn/ff695466.aspx" target="_blank">小心,WCF接口中的参数改名问题</a></li>
<li><a title="OLAP中的AverageOfChildren聚合方式" href="http://msdn.microsoft.com/zh-cn/ff695468.aspx" target="_blank">OLAP中的AverageOfChildren聚合方式</a></li>
<li><a title="使用正则表达式找出不包含特定字符串的条目" href="http://msdn.microsoft.com/zh-cn/ff695469.aspx" target="_blank">使用正则表达式找出不包含特定字符串的条目</a></li>
<li><a title="IIS7配置Gzip压缩" href="http://msdn.microsoft.com/zh-cn/ff695514.aspx" target="_blank">IIS7配置Gzip压缩</a></li>
<li><a title="PHP处理BOM标记的UTF-8文件导致的问题" href="http://msdn.microsoft.com/zh-cn/ff696191.aspx" target="_blank">PHP处理BOM标记的UTF-8文件导致的问题</a></li>
</ul>

	标签：<a href="http://www.imkevinyang.com/tags/%e5%8e%9f%e5%88%9b%e6%96%87%e7%ab%a0" title="原创文章" rel="tag">原创文章</a>, <a href="http://www.imkevinyang.com/tags/microsoft" title="微软" rel="tag">微软</a>, <a href="http://www.imkevinyang.com/tags/%e6%8a%80%e6%9c%af%e5%bf%83%e5%be%97" title="技术心得" rel="tag">技术心得</a>, <a href="http://www.imkevinyang.com/categories/dailylife" title="生活网事" rel="tag">生活网事</a>, <a href="http://www.imkevinyang.com/tags/%e7%a4%be%e5%8c%ba%e7%b2%be%e8%8b%b1%e8%ae%a1%e5%88%92" title="社区精英计划" rel="tag">社区精英计划</a><br />

	<h4 style="background-color:#3B3B3B;border-bottom:2px groove gray;color:#F2F2F2;margin-top:20px;padding:6px 6px 6px 15px;margin:20px 0px 0px 0px">你可能对下面的文章感兴趣</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.imkevinyang.com/2009/05/google%e5%92%8c%e5%be%ae%e8%bd%af%e7%9a%84%e4%b8%80%e5%a4%a7%e4%b8%8d%e5%90%8c.html" title="Google和微软的一大不同 (2009/05/06)">Google和微软的一大不同</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/12/win7vista%e9%ab%98%e7%ba%a7%e7%94%a8%e6%88%b7%e5%bf%85%e5%a4%87%e7%9a%84%e5%8f%b3%e9%94%ae%e8%8f%9c%e5%8d%95take-back-my-ownership.html" title="Win7/Vista高级用户必备的右键菜单Take back my Ownership! (2009/12/06)">Win7/Vista高级用户必备的右键菜单Take back my Ownership!</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/03/%e6%af%8f%e6%97%a5%e4%b8%80%e5%8f%a52009-03-23.html" title="一句话博客2009-03-23 (2009/03/23)">一句话博客2009-03-23</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/03/%e5%8d%81%e5%b9%b4mfc%e7%bb%8f%e5%8e%86%e8%ae%a4%e8%af%86%e7%9a%84microsoft%e6%8a%80%e6%9c%af.html" title="十年MFC经历认识的Microsoft技术 (2009/03/17)">十年MFC经历认识的Microsoft技术</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/03/%e5%9c%a8%e5%8d%8e%e4%b8%ba%e5%b7%a5%e4%bd%9c%e5%8d%81%e5%b9%b4%e7%9a%84%e6%84%9f%e6%82%9f.html" title="在华为工作十年的感悟 (2009/03/16)">在华为工作十年的感悟</a> </li>
	<li><a href="http://www.imkevinyang.com/2010/11/%e5%be%ae%e8%bd%afazure%e5%b9%b3%e5%8f%b0%e7%9a%84%e8%ae%a1%e8%b4%b9%e6%a8%a1%e5%9e%8b.html" title="微软Azure平台的计费模型 (2010/11/12)">微软Azure平台的计费模型</a> </li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.imkevinyang.com/2010/06/%e5%be%ae%e8%bd%af%e6%8a%80%e6%9c%af%e7%a4%be%e5%8c%ba%e7%b2%be%e8%8b%b1%e8%ae%a1%e5%88%92%e4%bd%a0%e4%b9%9f%e6%9d%a5%e5%8a%a0%e5%85%a5%e5%90%a7.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Win7/Vista高级用户必备的右键菜单Take back my Ownership!</title>
		<link>http://www.imkevinyang.com/2009/12/win7vista%e9%ab%98%e7%ba%a7%e7%94%a8%e6%88%b7%e5%bf%85%e5%a4%87%e7%9a%84%e5%8f%b3%e9%94%ae%e8%8f%9c%e5%8d%95take-back-my-ownership.html</link>
		<comments>http://www.imkevinyang.com/2009/12/win7vista%e9%ab%98%e7%ba%a7%e7%94%a8%e6%88%b7%e5%bf%85%e5%a4%87%e7%9a%84%e5%8f%b3%e9%94%ae%e8%8f%9c%e5%8d%95take-back-my-ownership.html#comments</comments>
		<pubDate>Sun, 06 Dec 2009 06:19:00 +0000</pubDate>
		<dc:creator>Kevin Yang</dc:creator>
				<category><![CDATA[其他随笔]]></category>
		<category><![CDATA[UAC]]></category>
		<category><![CDATA[Vista]]></category>
		<category><![CDATA[Win7]]></category>
		<category><![CDATA[右键菜单]]></category>
		<category><![CDATA[微软]]></category>
		<category><![CDATA[权限]]></category>

		<guid isPermaLink="false">http://www.imkevinyang.com/2009/12/win7vista%e9%ab%98%e7%ba%a7%e7%94%a8%e6%88%b7%e5%bf%85%e5%a4%87%e7%9a%84%e5%8f%b3%e9%94%ae%e8%8f%9c%e5%8d%95take-back-my-ownership.html</guid>
		<description><![CDATA[<p>从Vista开始，Windows的权限控制就更为严格了，微软还很自豪地引入了UAC的功能。但结果却是让更多人讨厌这个系统（相信很多人都像我一样为了图省事直接把UAC关了）。Win7在权限控制上相比Vista稍微松了一点，但还是经常会出现很脑残的行为。</p>
<p>我曾经在整理电脑上的文件的时候，想删除某个软件的安&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>从Vista开始，Windows的权限控制就更为严格了，微软还很自豪地引入了UAC的功能。但结果却是让更多人讨厌这个系统（相信很多人都像我一样为了图省事直接把UAC关了）。Win7在权限控制上相比Vista稍微松了一点，但还是经常会出现很脑残的行为。</p>
<p>我曾经在整理电脑上的文件的时候，想删除某个软件的安装目录，但是却弹出一个窗口，提示我“此操作需要提供管理员权限”。但是窗口上只有一个“重试”和“取消”的按钮，你点重试吧，他会提示你一样的问题，最后你还是不得不点取消。没有一个地方可以允许你已管理员的身份去执行这个删除的操作（对于exe程序，win7倒是提供了一个以管理员身份运行的右键菜单）。对于windows下有经验的用户，一般会尝试打开文件夹的属性，切换到“安全”选项卡，然后添加自己的权限。然后再去删。有时候可以成功，但有时候我却遇到了另外一个错误。“当前操作需要Kevin的权限才能进行”（我当前使用的用户名就是Kevin）。吐血身亡…..</p>
<p><a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a>了一把，说是ownership（所有权）导致的问题，只要把文件/文件夹的所有权改成自己就没问题了。具体为什么我也懒得去研究了，这种弱智的问题研究透了也只能说明自己也是一个弱智。网上有人提供了一个注册表脚本，可以在右键集成一个“Take ownership”的菜单，这样当遇到类似的权限问题就直接要回所有权就行了。</p>
<p>新建一个install.reg的文件，用记事本打开，然后将下面的内容拷贝到文件中，然后双击导入注册表即可。</p>
<pre class="csharpcode">

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\runas]
@=<span class="str">&quot;Take Ownership&quot;</span>
<span class="str">&quot;NoWorkingDirectory&quot;</span>=<span class="str">&quot;&quot;</span>

[HKEY_CLASSES_ROOT\*\shell\runas\command]
@=<span class="str">&quot;cmd.exe /c takeown /f \&quot;%1\&quot; &amp;&amp; icacls \&quot;%1\&quot; /grant administrators:F&quot;</span>
<span class="str">&quot;IsolatedCommand&quot;</span>=<span class="str">&quot;cmd.exe /c takeown /f \&quot;%1\&quot; &amp;&amp; icacls \&quot;%1\&quot; /grant administrators:F&quot;</span>

[HKEY_CLASSES_ROOT\Directory\shell\runas]
@=<span class="str">&quot;Take Ownership&quot;</span>
<span class="str">&quot;NoWorkingDirectory&quot;</span>=<span class="str">&quot;&quot;</span>

[HKEY_CLASSES_ROOT\Directory\shell\runas\command]
@=<span class="str">&quot;cmd.exe /c takeown /f \&quot;%1\&quot; /r /d y &amp;&amp; icacls \&quot;%1\&quot; /grant administrators:F /t&quot;</span>
<span class="str">&quot;IsolatedCommand&quot;</span>=<span class="str">&quot;cmd.exe /c takeown /f \&quot;%1\&quot; /r /d y &amp;&amp; icacls \&quot;%1\&quot; /grant administrators:F /t&quot;</span>

<span class="str"></span>&#160;
</pre>
<p>实际效果如下图所示：</p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="Take owership" border="0" alt="Take owership" src="http://www.imkevinyang.com/wp-content/uploads/2009/12/image_thumb3.png" width="244" height="123" />&#160;</p>
<p>参考链接：</p>
<p><a href="http://www.howtogeek.com/howto/windows-vista/add-take-ownership-to-explorer-right-click-menu-in-vista/">http://www.howtogeek.com/howto/windows-vista/add-take-ownership-to-explorer-right-click-menu-in-vista/</a></p>
<p align="right">——<a href="http://www.imkevinyang.com/"><em><strong>Kevin Yang</strong></em></a></p>

	标签：<a href="http://www.imkevinyang.com/tags/uac" title="UAC" rel="tag">UAC</a>, <a href="http://www.imkevinyang.com/tags/vista" title="Vista" rel="tag">Vista</a>, <a href="http://www.imkevinyang.com/tags/win7" title="Win7" rel="tag">Win7</a>, <a href="http://www.imkevinyang.com/categories/techarticles/othertecharticles" title="其他随笔" rel="tag">其他随笔</a>, <a href="http://www.imkevinyang.com/tags/%e5%8f%b3%e9%94%ae%e8%8f%9c%e5%8d%95" title="右键菜单" rel="tag">右键菜单</a>, <a href="http://www.imkevinyang.com/tags/microsoft" title="微软" rel="tag">微软</a>, <a href="http://www.imkevinyang.com/tags/%e6%9d%83%e9%99%90" title="权限" rel="tag">权限</a><br />

	<h4 style="background-color:#3B3B3B;border-bottom:2px groove gray;color:#F2F2F2;margin-top:20px;padding:6px 6px 6px 15px;margin:20px 0px 0px 0px">你可能对下面的文章感兴趣</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.imkevinyang.com/2009/05/google%e5%92%8c%e5%be%ae%e8%bd%af%e7%9a%84%e4%b8%80%e5%a4%a7%e4%b8%8d%e5%90%8c.html" title="Google和微软的一大不同 (2009/05/06)">Google和微软的一大不同</a> </li>
	<li><a href="http://www.imkevinyang.com/2010/05/vs2010%e7%9a%84ui%e8%ae%be%e8%ae%a1%e5%a4%b1%e8%af%af.html" title="VS2010的UI设计失误 (2010/05/31)">VS2010的UI设计失误</a> </li>
	<li><a href="http://www.imkevinyang.com/2011/01/win7%e7%ae%a1%e7%90%86%e6%97%a0%e7%ba%bf%e7%bd%91%e7%bb%9c%e5%8f%98%e6%88%90%e5%b0%8f%e5%9b%be%e6%a0%87%e4%ba%86.html" title="Win7管理无线网络变成小图标了 (2011/01/04)">Win7管理无线网络变成小图标了</a> </li>
	<li><a href="http://www.imkevinyang.com/2010/07/win7%e8%ae%bf%e9%97%ae%e8%bf%9c%e7%a8%8b%e6%a1%8c%e9%9d%a2%e6%9c%80%e5%a4%a7%e5%8c%96%e5%90%8c%e6%97%b6%e8%ae%a9%e4%bb%bb%e5%8a%a1%e6%a0%8f%e5%8f%af%e8%a7%81.html" title="Win7访问远程桌面最大化同时让任务栏可见 (2010/07/03)">Win7访问远程桌面最大化同时让任务栏可见</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/03/%e5%8d%81%e5%b9%b4mfc%e7%bb%8f%e5%8e%86%e8%ae%a4%e8%af%86%e7%9a%84microsoft%e6%8a%80%e6%9c%af.html" title="十年MFC经历认识的Microsoft技术 (2009/03/17)">十年MFC经历认识的Microsoft技术</a> </li>
	<li><a href="http://www.imkevinyang.com/2010/11/%e5%be%ae%e8%bd%afazure%e5%b9%b3%e5%8f%b0%e7%9a%84%e8%ae%a1%e8%b4%b9%e6%a8%a1%e5%9e%8b.html" title="微软Azure平台的计费模型 (2010/11/12)">微软Azure平台的计费模型</a> </li>
	<li><a href="http://www.imkevinyang.com/2010/06/%e5%be%ae%e8%bd%af%e6%8a%80%e6%9c%af%e7%a4%be%e5%8c%ba%e7%b2%be%e8%8b%b1%e8%ae%a1%e5%88%92%e4%bd%a0%e4%b9%9f%e6%9d%a5%e5%8a%a0%e5%85%a5%e5%90%a7.html" title="微软技术社区精英计划&mdash;&mdash;你也来加入吧 (2010/06/02)">微软技术社区精英计划&mdash;&mdash;你也来加入吧</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/11/%e6%9d%83%e9%99%90%e5%af%bc%e8%87%b4%e7%9a%84analysis%e6%80%a7%e8%83%bd%e8%ae%a1%e6%95%b0%e5%99%a8%e5%9c%a8vistawin2008%e4%b8%8b%e5%a4%b1%e6%95%88%e7%9a%84%e9%97%ae%e9%a2%98.html" title="权限不足导致的Analysis性能计数器在Vista/win2008下失效的问题 (2009/11/12)">权限不足导致的Analysis性能计数器在Vista/win2008下失效的问题</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/11/%e8%a7%a3%e5%86%b3win7%e4%b8%8bie8%e5%bc%80%e5%8f%91%e4%ba%ba%e5%91%98%e5%b7%a5%e5%85%b7%e7%aa%97%e5%8f%a3%e6%b6%88%e5%a4%b1%e7%9a%84%e9%97%ae%e9%a2%98.html" title="解决Win7下IE8开发人员工具打不开的问题 (2009/11/13)">解决Win7下IE8开发人员工具打不开的问题</a> </li>
	<li><a href="http://www.imkevinyang.com/2011/05/%e8%a7%a3%e5%86%b3%e6%96%b0%e5%88%9b%e5%bb%ba%e7%9a%84windows%e7%94%a8%e6%88%b7%e6%97%a0%e6%b3%95%e8%ae%bf%e9%97%aetfs%e7%9a%84%e9%97%ae%e9%a2%98.html" title="解决新创建的windows用户无法访问TFS的问题 (2011/05/12)">解决新创建的windows用户无法访问TFS的问题</a> </li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.imkevinyang.com/2009/12/win7vista%e9%ab%98%e7%ba%a7%e7%94%a8%e6%88%b7%e5%bf%85%e5%a4%87%e7%9a%84%e5%8f%b3%e9%94%ae%e8%8f%9c%e5%8d%95take-back-my-ownership.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google和微软的一大不同</title>
		<link>http://www.imkevinyang.com/2009/05/google%e5%92%8c%e5%be%ae%e8%bd%af%e7%9a%84%e4%b8%80%e5%a4%a7%e4%b8%8d%e5%90%8c.html</link>
		<comments>http://www.imkevinyang.com/2009/05/google%e5%92%8c%e5%be%ae%e8%bd%af%e7%9a%84%e4%b8%80%e5%a4%a7%e4%b8%8d%e5%90%8c.html#comments</comments>
		<pubDate>Tue, 05 May 2009 17:41:43 +0000</pubDate>
		<dc:creator>Kevin Yang</dc:creator>
				<category><![CDATA[生活网事]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[微软]]></category>
		<category><![CDATA[文化]]></category>
		<category><![CDATA[用户体验]]></category>

		<guid isPermaLink="false">http://www.imkevinyang.com/2009/05/google%e5%92%8c%e5%be%ae%e8%bd%af%e7%9a%84%e4%b8%80%e5%a4%a7%e4%b8%8d%e5%90%8c.html</guid>
		<description><![CDATA[<p>最近用上了<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a> Desktop，因为实在找不到其他更好用的桌面Widget工具了。但是用起来很不爽，很多细节做得非常糟糕。想反馈一下，死活就找不着反馈的地方。记得早期在用Gmail的时候就发现Gmail有很多可以改进的地方，但是一直没有找到合适的反馈渠道。</p>
<p>作为一个忠实的<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a> Fans，我&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p>最近用上了<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a> Desktop，因为实在找不到其他更好用的桌面Widget工具了。但是用起来很不爽，很多细节做得非常糟糕。想反馈一下，死活就找不着反馈的地方。记得早期在用Gmail的时候就发现Gmail有很多可以改进的地方，但是一直没有找到合适的反馈渠道。</p>
<p>作为一个忠实的<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a> Fans，我不得不说，<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a>给人的感觉实在是太傲了。觉得自己高高在上，别人的意见都不重要估计。它又不像乔布斯，乔布斯不需要对使用者进行调查，因为他自己就是一个用户体验专家，事实证明也是这样，但是从<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a>的很多产品上面，我看不到它有这个骄傲的资本。而<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a>的很多产品上面，你是不会找到有反馈的按钮的。不得不说，在性能、技术等方面，<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a>确实无话可说，但是从用户体验上来说，<a href="http://www.imkevinyang.com/tags/google" class="st_tag internal_tag" rel="tag" title="Posts tagged with Google">Google</a>还是落下很大一截（Gmail是其中做得比较好的一款产品）。</p>
<p>在这方面，我比较喜欢微软。微软的很多产品上面基本都集成了反馈的功能，甚至在msdn的每篇文章下面都有一个文档质量反馈的表单。我想这也是微软能够在软件世界统治那么久的其中一个原因吧。</p>

	标签：<a href="http://www.imkevinyang.com/tags/google" title="Google" rel="tag">Google</a>, <a href="http://www.imkevinyang.com/tags/microsoft" title="微软" rel="tag">微软</a>, <a href="http://www.imkevinyang.com/tags/%e6%96%87%e5%8c%96" title="文化" rel="tag">文化</a>, <a href="http://www.imkevinyang.com/categories/dailylife" title="生活网事" rel="tag">生活网事</a>, <a href="http://www.imkevinyang.com/tags/%e7%94%a8%e6%88%b7%e4%bd%93%e9%aa%8c" title="用户体验" rel="tag">用户体验</a><br />

	<h4 style="background-color:#3B3B3B;border-bottom:2px groove gray;color:#F2F2F2;margin-top:20px;padding:6px 6px 6px 15px;margin:20px 0px 0px 0px">你可能对下面的文章感兴趣</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.imkevinyang.com/2009/08/4%e8%a1%8cgreasemonkey%e4%bb%a3%e7%a0%81%e6%9c%80%e5%a4%a7%e5%8c%96google-reader%e7%9a%84%e9%98%85%e8%af%bb%e7%a9%ba%e9%97%b4.html" title="4行Greasemonkey代码最大化Google Reader的阅读空间 (2009/08/09)">4行Greasemonkey代码最大化Google Reader的阅读空间</a> </li>
	<li><a href="http://www.imkevinyang.com/2010/03/android%e6%89%8b%e6%9c%ba%e5%88%9d%e4%bd%93%e9%aa%8c.html" title="Android手机初体验 (2010/03/01)">Android手机初体验</a> </li>
	<li><a href="http://www.imkevinyang.com/2010/03/g1%e6%89%8b%e6%9c%ba%e4%b8%8e%e7%ac%94%e8%ae%b0%e6%9c%ac%e5%ae%9e%e7%8e%b0wifi%e4%ba%92%e8%81%94%e5%85%b1%e4%ba%ab%e4%b8%8a%e7%bd%91.html" title="G1手机与笔记本实现Wifi互联共享上网 (2010/03/02)">G1手机与笔记本实现Wifi互联共享上网</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/12/google-analytics%e4%b8%ad%e7%9a%84uniquepageview%e5%92%8cvisits%e7%9a%84%e5%8c%ba%e5%88%ab.html" title="Google Analytics中的UniquePageView和Visits的区别 (2009/12/07)">Google Analytics中的UniquePageView和Visits的区别</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/11/google-wave%e4%b8%ba%e4%bb%80%e4%b9%88%e8%bf%99%e4%b9%88%e7%81%ab.html" title="Google Wave为什么这么火 (2009/11/14)">Google Wave为什么这么火</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/03/google%e5%b7%a5%e7%a8%8b%e5%b8%88matt-cutts%e8%b0%88seo.html" title="Google工程师Matt Cutts谈SEO (2009/03/23)">Google工程师Matt Cutts谈SEO</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/03/google%e6%8e%92%e5%90%8d%e6%9b%b4%e6%96%b0.html" title="Google排名更新 (2009/03/21)">Google排名更新</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/03/google%e7%9a%84%e4%bb%b7%e5%80%bc%e8%a7%82.html" title="Google的价值观 (2009/03/07)">Google的价值观</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/12/win7vista%e9%ab%98%e7%ba%a7%e7%94%a8%e6%88%b7%e5%bf%85%e5%a4%87%e7%9a%84%e5%8f%b3%e9%94%ae%e8%8f%9c%e5%8d%95take-back-my-ownership.html" title="Win7/Vista高级用户必备的右键菜单Take back my Ownership! (2009/12/06)">Win7/Vista高级用户必备的右键菜单Take back my Ownership!</a> </li>
	<li><a href="http://www.imkevinyang.com/2010/02/%e4%bd%bf%e7%94%a8feedburner%e7%83%a7%e5%88%b6rss%e6%9c%80%e5%a5%bd%e7%a6%81%e7%94%a8itemlinkclicks%e7%bb%9f%e8%ae%a1.html" title="使用FeedBurner烧制RSS最好禁用ItemLinkClicks统计 (2010/02/15)">使用FeedBurner烧制RSS最好禁用ItemLinkClicks统计</a> </li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.imkevinyang.com/2009/05/google%e5%92%8c%e5%be%ae%e8%bd%af%e7%9a%84%e4%b8%80%e5%a4%a7%e4%b8%8d%e5%90%8c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>十年MFC经历认识的Microsoft技术</title>
		<link>http://www.imkevinyang.com/2009/03/%e5%8d%81%e5%b9%b4mfc%e7%bb%8f%e5%8e%86%e8%ae%a4%e8%af%86%e7%9a%84microsoft%e6%8a%80%e6%9c%af.html</link>
		<comments>http://www.imkevinyang.com/2009/03/%e5%8d%81%e5%b9%b4mfc%e7%bb%8f%e5%8e%86%e8%ae%a4%e8%af%86%e7%9a%84microsoft%e6%8a%80%e6%9c%af.html#comments</comments>
		<pubDate>Mon, 16 Mar 2009 16:27:25 +0000</pubDate>
		<dc:creator>Kevin Yang</dc:creator>
				<category><![CDATA[好文分享]]></category>
		<category><![CDATA[MFC]]></category>
		<category><![CDATA[微软]]></category>
		<category><![CDATA[技术心得]]></category>

		<guid isPermaLink="false">http://www.imkevinyang.com/2009/03/%e5%8d%81%e5%b9%b4mfc%e7%bb%8f%e5%8e%86%e8%ae%a4%e8%af%86%e7%9a%84microsoft%e6%8a%80%e6%9c%af.html</guid>
		<description><![CDATA[<p><font face="微软雅黑" color="#ff8000" size="2"><strong>原文作者：孙辉</strong></font></p>
<p><font face="微软雅黑" color="#ff8000" size="2"><strong>原文出处：chenbuaa的博客</strong></font></p>
<p>&#160;</p>
<p>自从2005年3月8日下午16时“十年MFC经历认识的Microsoft技术”以帖子的方式发表于CSDN论坛后，引起了许多网友得好评，使得笔者 诚惶诚恐，考虑到该贴过长(人气指数为5000)，因此转移到Blog上，许多网友对此帖的评语只好省略，&#8230;</p>]]></description>
			<content:encoded><![CDATA[<p><font face="微软雅黑" color="#ff8000" size="2"><strong>原文作者：孙辉</strong></font></p>
<p><font face="微软雅黑" color="#ff8000" size="2"><strong>原文出处：chenbuaa的博客</strong></font></p>
<p>&#160;</p>
<p>自从2005年3月8日下午16时“十年MFC经历认识的Microsoft技术”以帖子的方式发表于CSDN论坛后，引起了许多网友得好评，使得笔者 诚惶诚恐，考虑到该贴过长(人气指数为5000)，因此转移到Blog上，许多网友对此帖的评语只好省略，在此鄙人谢过了！为感谢网友的支持，本人希望今 后能发出新的帖子以回报网友对我的鼓励，再一次谢谢！&#160; </p>
<ul>
<h4>初识MFC</h4>
<p>&#160;&#160; 我最初知道MFC大概是在1993年，那个时候Visual C++还没面世，当时Microsoft的C++编译器还很弱，官方的名字是Microsoft C/C++ 7.0，MFC的版本是1.0，几乎没有引起什么反响，那个时期最好的C++开发环境是Borland C++ 3.1，其实，大概是1992年11月份，一个偶然的机会，我领略到Borland公司的厉害，记不得在什么地方，我看到一个绝妙的集成开发环境，即 Turbo&#160; C++ 3.0 for Windows，这是我记忆中第一个真正的Windows环境下的C++集成开发环境，那种激动的感觉至今仍记忆犹新，不客气的说，当时至少在C++方 面，Microsoft与Borland不是一个水平的，Borland明显的要高于Microsoft&#160; ，Borland的产品在技术上给我留下深刻的印象。那个时候Microsoft最好的开发平台是Visual Basic 3.0，而Borland的Delphi正处于开发阶段（Delphi&#160; 的代码名称是：“VB Killer”）……，想起这些十几年前的往事，我不禁感慨万千。</p>
<p>十几年来，我用过许多开发环境，关于Visual&#160; Basic，我用过最早的DOS版本，Windows版的Visual Basic我基本上全都用过，至今我还记得每个版本的VB安装盘磁盘的盘数。同样，我用过各个版本的Delphi，特别是Delphi 2.0，给我留下极好的印象。Delphi提供真正编译的可视化开发环境，那个时候（1994年左右），Delphi就可以开发带有GUI的动态链接 库，你可以想象，在Microsoft&#160; Access 2.0的应用程序中可以加载一个Delphi Form并进行程序交互，那种感觉真是棒极了。</p>
<p>Borland C++是我心中无法抹掉的遗憾，从Turbo C到C++ Builder，我深刻的体验到Borland的辉煌和无奈，Delphi从VB Killer走到为VB护航（你可以想象Delphi一步到位的ActiveX&#160; 控件开发技术有多牛，早期的VB有多土，早期的VB不能开发动态链接库，因此无法开发ActiveX&#160; 控件，想起来真令人嘘唏不已），Borland C++的命运也是不济。Borland C++ 3.1的辉煌永远不再了，十几年的开发工作中，我在C++上投入了大量的精力，Borland C++曾经给我带来无数的激动，然而这个经典的名字却在与Microsoft的竞争中渐渐的流逝了……。</p>
<p>MFC4.0的出现，使得人们感觉Microsoft在C++方面赶上来了，这一版的MFC是Win95推出后出现在Visual&#160; C++ 4中（Microsoft没有VC 3，VC4以前的版本是2.2、2.1、2.0、1.51、1.5、1.0）。也许是对Borland C++的潜意识的失望，我不知不觉的接受了MFC，VC 4.2推出时，我通过正常渠道购买了这个编译器的企业版。</p>
<h4>关于Microsoft </h4>
<p>&#160;&#160; 关于Microsoft，有无数的人要对这个名字叙说感觉，这个令人讨厌的名字！不知道是喜欢还是憎恶，你是程序员，你的心思可能就要因 Microsoft的存在而动，即使你用Linux，你可能也是因为Microsoft技术因素。多少年来，这个名字每天都出现在你、我、他的面前，因为 你不得不面对Windows的存在，可是你憎恨这个名字吗？你讨厌这个名字吗？我不知道是否已经对这个名字麻木了。1998年我个人订了 Microsoft&#160; MSDN Universal&#160; 版，我开始比较全面接触这个公司的开发技术，你可以想象，1998年当你面对上百张技术光盘的时候，你就知道什么叫做“厚度”，当我们有时说出“赶上” 或&#160; “达到”Microsoft某些产品的水平的时候，可能我们缺乏对这个公司“厚度”的真实了解。进入MSDN，我感觉Microsoft简直不是一个“ 公司”，而是（或者正在形成）一个“社会”。当时著名的技术网站<a href="http://www.codeguru.com">http://www.codeguru.com</a>全部的技术资料是可下载的（那个时候<a href="http://www.codeguru.com">http://www.codeguru.com</a>提 供整个网站内容下载服务，大约3M左右），大名鼎鼎的<a href="http://www.codeproject.com 还不存在。一开始">www.codeproject.com 还不存在。一开始</a>，我始终潜意识在技术上对比 Microsoft与Borland，应当说技术上Borland不比Microsoft弱，即使现在也有人持有这个看法，可是为什么Borland走到 今天这个地步？而Microsoft却如日中天？若干年前，这两个公司竞争何等激烈，而现在却是另一番“合作”的景象？可能很多人想过，如果 Borland不存在，对Microsoft不是更有力吗？其实Microsoft可能精通中国历史，读过《三国》、十分了解战国时期的中国，其实 Borland形式上的存在，对Microsoft是十分有利的，至少形式上还有竞争对手，而事实上Borland已经受控于 Microsoft（Microsoft是Borland的大股东）。你可以看到一些微妙的现象：Borland为Microsoft提供了大量的人才， 其中包括Delphi总设计师以及Borland&#160; C++编译器的核心成员；同时也为Microsoft .NET提供强有力的护航服务（看看C# Builder、Delphi .NET）。1998年Microsoft&#160; 的COM技术基本已经成熟，这个技术使人感到震撼，当时Microsoft的对手们提出“OpenDoc”用于对抗“COM”，你看看 “OpenDoc”阵营的几个成员：IBM、Apple、Borland、Novell，你会感到这个阵营十分豪华、强大。但结果却差强人 意，“OpenDoc”无疾而终，而“COM”依然生机勃勃。&#160;&#160; </p>
<p>&#160; 有人说“COM”没落了，那么就太不了解Microsoft了。在与“OpenDoc”的竞争中，“COM”是个彻底的胜利者，在与“Java”的竞争 中，“COM”成功的进化了，在这个过程中Microsoft体现了强大的吸收能力、以及无法想象的韧劲。.NET只不过是COM的“别名”而已。对于一 个经验丰富的C++程序员而言，.NET就是COM的进化，而Microsoft内部.NET就是“COM&#160; 3.0”（OLE2就是COM 2.0），而“CLR”就是一个不择不扣的COM对象。曾经有人问我，既然牛顿时代就奠定了基础（想想著名的牛顿-莱布尼茨公式），几百年后的今天，数 学还研究“微积分”吗？回答当然是依然在研究！“微积分”早期是针对函数的，现代“微积分”是针对“流形（Manifold）、纤维丛（Fiber&#160; Bundle）”的，概念深奥了，可是基本思想不变，只是“微积分”的思想得到合理的延拓与进化，你了解Microsoft吗？Microsoft Research有一批超一流的数学家在为Microsoft工作，其中一些是斐尔兹奖的得主，Microsoft正在实现如同“微积分”进化到“微分 流形”一样将“COM”进化到“.NET”。从科学概念角度上分析COM与Java，可能COM更全面、精确，从实现的成熟度上Java可能更成熟，可是 你看到，Microsoft正在不紧不慢的追赶。Microsoft令人联想起战国时期的强秦。&#160; </p>
<p>战国时期的秦国，采取“远交近攻”“抚弱掠强”等措施傲视六国，今天的Microsoft也是这样，VB1.0时，Microsoft推出“VBX”控件 技术，众多的小公司得以生存，Microsoft自己不开发“VBX”组件，同样“VBX”进化为“OCX”时，Microsoft并不十分强大，可是这 种试探得到众多小公司的响应。1997年Microsoft&#160; Office 97、1998年Microsoft推出Visual Studio 6.0，给众多中、小公司提供了生存、发展的机会，例如Microsoft Office 97中集成了Visual Basic for Application 5.0，这项技术使得几百家软件开发商与Microsoft签署了VBA技术许可协议，即使AutoDesk这样的公司都与Microsoft签署了这 个协议，这个协议使得每个集成VBA的产品的给个用户许可为Microsoft付40$的许可费，如果你了解VSIP（Visual&#160; Studio Integration Protocol）协议，以及有多少公司签订了VSIP协议，你就真正感觉到Microsoft的可怕；Microsoft Office 97、Visual Studio 6.0的用户界面十分漂亮，为什么Microsoft自己的开发工具不提供类似的软件组件？你看到众多第三方的Microsoft盟友纷纷推出自己的界 面库以模仿Microsoft，他们不会反对Microsoft，因为他们已经形成了使得Microsoft以及这些公司得以生存的生态圈。&#160;&#160; </p>
<p>&#160; Microsoft的技术储备有多少，Microsoft之外的人很难说清楚，Microsoft中国公司也未必了解多少，1999年WTL类库刚刚出现 的时候，人们就希望WTL能得到官方的支持，或授权给一个Microsoft之外的一个公司（你能想象出Borland&#160; C++ 5.0内置的ActiveX开发机制是基于Microsoft ATL类库吗？），直到今天，WTL依然如故，我们完全相信，如果Microsoft强力推广WTL，WTL完全可以流行，可是Microsoft不缺 类似的技术，类似的类库还有BCL(Base&#160; Control Library，一个用于开发轻量级ActiveX控件的类库)，Microsoft还有一个基于ATL的类库，这个类库用于开发ActiveX Designer，ActiveX Designer是绝大多数程序员不了解得一类对象，如果你熟悉Office开发，你知道Office VBA&#160; 中有一类对象，即Form2，此外VB6.0&#160; 中的报表设计器（以及著名的Active Reporter），都属于此类对象，用这个类库，你可以为VB6.0以及集成VBA的系统提供定制化的可视化设计机制等等，如今ActiveX Designer已经演化为集成于Visual Studio .NET中的设计器。</p>
<h4><font face="微软雅黑">向Microsoft学习</font></h4>
<p>&#160;&#160; 无论从什么角度评价Microsoft，我觉得Microsoft是值得我们学习的，如果说生活在这个时代有Microsoft存在是一场灾难，你就应 该痛恨这个家伙，但你首先要向这个家伙学习！我无意为Microsoft歌功颂德，我只是想说出十几年我对Microsoft技术的感受。&#160;&#160; </p>
<p>Microsoft在研究式的开发中受益极大，如果你有兴趣，你可以访问<a href="http://research.microsoft.com/">http://research.microsoft.com/</a>， 虽然部分中国公司也有研究院，但与Microsoft相比，真有“米粒之珠，也放光华？”的感觉。2003年，我在北京的一个地方现场体验了 Microsoft亚洲研究院的招聘会，我看到中国的精英们进入Microsoft的渴望，事实上，在中国大陆，Microsoft亚洲研究院的人力资源 已经延伸到各著名高校的相关专业的核心层，我感到，Microsoft几乎不需要“求贤”，因为，只要Microsoft需要，精英们会“蜂拥而至”，每 个人都有“可以理解”的理由而向往那个地方，如果为搞数学研究蜂拥到加州大学，我觉得可以理解，因为那里有数学土壤，出了成果国人也会感到自豪，因为“科 学无国界”。技术是否有国界？不知道是否有定论？！想想DVD等技术专利给国内业界带来的灾难，不知道应不应该痛定思痛，在Microsoft校园招聘现 场的气氛中，我似乎明白了为什么国人“原创技术”少得可怜。我读过几本Microsoft亚洲研究院的高手写的书，明显可以看出，Bill&#160; gate&#160; 是他们的精神领袖以及他们对Microsoft的虔诚，国内的研究机构应当研究一下Microsoft的用人之道，Microsoft好像是三国里的人 物，不知是刘备还是曹操，或者二者的混合物。我经常路过西格玛大厦，第一次西格玛大厦进入真有“朝圣”的感觉，也与Microsoft中国的几个层次的人 打过交道，各中滋味实在一言难尽。&#160;&#160; </p>
<p>&#160;&#160; 在Office大战中，国产软件的确在一些方面与Microsoft进行较量，其实给人的感觉很勉强，界面上的似是而非，或用户习惯方面的接近并不能解 决根本的问题，一个好的软件开发人员必须是一个软件使用的高手，很难想象一个软件操作水平很拙劣的开发人员能开发出高水平的软件，我最早使用的软件之一就 是Microsoft&#160; Word，当时的版本是2.0，大概是1992年的事情，给我留下深刻印象的是集成于Word中的Word Basic，后来，我接触到Excel 3.0，不出所料，Excel中集成的是Excel Basic，后来使用的Access中自然内置Access Basic 1.0，在这些软件集成捆绑成Office之前，我就感觉这些产品的构思十分了不起，很具有Microsoft的风格，因为你知道，即使是一个 DOS，Microsoft都要提供一个内置的QBasic或GW&#160; Basic。虽然关于Microsoft的产品评论很多，作为一个技术人员，我认为Microsoft的产品构思绝对是第一流的，从1994年早期的 Office系列到1997年形成的Office&#160; 4.2，我认为，技术构思上均领先于我国2002年以后的Office产品，你听说过如下说法吗？“Dos&#160; 作为操作系统的时代，Windows是应用软件；Windows是操作系统时，Office成为Dos时代的Windows；那么如果按此规 律，Office会不会替代Windows而成为操作系统？”，现在在开发领域Visual&#160; Studio( .NET)正在成为另一个Office，你注意到了吗？控制Visual Studio( .NET)集成开发环境的仍然是一个Basic语言引擎（Visual Basic .NET）。</p>
<p>&#160;&#160; 与许多公司不同的是，在技术体系上，Microsoft几乎所有的产品是息息相关的，Windows、Office、Visual Studio .NET虽然各不相同，但公共的核心即将形成，我们已经看到，核心组件方面，Office与Visual Studio .NET日渐趋于一致，例如Microsoft正在将Office 2003的核心组件VBA 6.X逐步用新的Visual Studio Tools for Office替代，而我们依然在一些似是而非的现象上与Microsoft的产品比较差距，国家采购或政府采购支持的公司，不去钻研核心技术，只是急功 近利的采用短期行为急于与Microsoft相争，不知是否有蚍蜉撼树的感觉，个人的体验是，先学习Microsoft，踏踏实实的学，了解 Microsoft，深入的了解，然后再喊口号。&#160; </p>
<h4>为什么用MFC？</h4>
<p>&#160;&#160; 经过若干年的竞争，Borland&#160; 的OWL几乎消失了，这个OWL是个非常漂亮的C++类库，在Borland C++ 3.1风光无限的年代，OWL真正的做到了独领风骚。然而，Borland C++ 4.0错过了进入32位程序的最佳时机，BC 4.0推出后不久，迎来了Win95，Borland仓促上阵，以一个小的“Pack”使得BC4可以编译基于Win4的程序，当时的Visual C++是2.0版，支持Window16的版本为Visual C++1.51，有意思的是Borland可以用同一个编译器同时支持Win16、Win32，而Microsoft却不得不为Win16、Win32 提供不同的编译器。然而，非正式版本的Visual C++ 2.1与Visual C++ 2.2却悄悄地支持了Win95的最新特征，即Win95新提供的一组公共控件，在我的印象中，Borland对Win95新特征的支持不利使得MFC 与OWL的距离极大的缩短了。稍后到来的Borland C++ 4.5没有改变这个状况，尽管Borland C++ 5.0同时支持OWL与MFC，可是败象已经显露，Borland C++非常遗憾的只走到了5.5版。C++ Builder虽然形式上引入了Delphi的VCL库，可是许多C++程序员并不买账，因为许多以C++为乐的人更喜欢以编辑的模式进行编码。 Visual&#160; C++ 4.0的出现，在C++这个战场上，Borland开始落败了。</p>
<p>MFC发展到今天，已经十多年了，尽管褒贬不一，但可以肯定，十几年的技术积累已经奠定了MFC的生存基础，即使Microsoft的长角发布，MFC 也不能推出Windows的舞台，事实上，长角（Longhorn）之后的Visual Studio .NET仍将MFC作为一个重要的组成部分，在今年的Visual Studio .NET 2005中，MFC在C++中的位置依然如故。MFC的未来，应该不必担心，只要你深入考察.NET类库，你会发现，MFC的许多思想机制正悄然进 入.NET，与此同时，Microsoft的第三方盟友十多年来已为MFC开发了大量的扩展库，如果Microsoft是船，第三方盟友就是载舟之水。许 多人认为MFC不发展了，其实是一种错觉，Visual&#160; C++ 6的界面十分经典，特别是其中的Docking控制条机制，其实Visual C++ 6的IDE完全就是MFC写的，可是MFC类库中控制条相关的类功能很弱，为什么？你会看到许多与Microsoft友好的公司，他们很快的在MFC基 础上实现了Visual&#160; C++ 6&#160; 的Docking机制，这就是Microsoft的高明之处，Microsoft很会给盟友提供机会，其一贯的做法就是在自己的商品化产品中预先提供一 些有趣的特征，使得其他一些公司进行模仿以带动用户群体。Borland不具备这样的储备。MFC第三方市场的繁荣，得益于Microsoft的策略与明 智。MFC可否跨平台？理论上完全可以，Microsoft不做，也是策略，但是有许多重要的产品Microsoft却默许MFC移植到其他平台，事实 上，Microsoft的合作伙伴之一Mainsoft公司（Windows源码就是从这家公司流失的），几年来就是负责移植MFC程序移植到 UINIX、Linux、AIX等操作系统之上。&#160;&#160; </p>
<p>新版的Visual C++中MFC已经支持.NET开发了，MFC与ATL的协作更好了。根据我的经验，MFC、ATL与.NET库三者完全可以融合在一起综合应用到实际 的开发工作中去，如果你是MFC行家，我希望ATL与.NET库能成为你的忠实的左右手。那么有没有同时支持MFC、ATL与.NET库的程序？当然 有，Visual&#160; Studio .NET IDE就是！而且Visual Studio .NET IDE还支持用ATL与.NET库扩展的Addin。</p>
<h4>认识Application对象 </h4>
<p>&#160;&#160; 如果你熟悉Microsoft Office，你应该进一步的剖析这个大型软件，Microsoft Office中几乎每个程序都是可二次开发的，这一点得益于Microsoft Office内置的二次开发机制，一个是基于COM机制的VBA模型，另一个是基于.NET框架的托管模型：Visual Studio Tools for Office。作为一名程序员，你应当在技术角度解析Office的技术结构。Microsoft的大多数软件的对象结构可以通过Visual Studio提供的工具OLE/COM Object Viewer考察其类型库得到，通过引用类型库，你甚至可以得到描述对象信息的C++头文件。这样做真是好处多多。一个典型的Office通常都有一个 Application对象（或其他一个与之相当的对象），这个对象相当于软件枢纽，在这里，我们不讨论Office，借此话题说说 Application对象。大多数支持扩展（Addin、Plugin）的软件都存在类似的构造。通常，一个系统得Application对象或者是一 个COM对象，或者是一个.NET对象，如果你的系统存在这类对象，你的系统就基本具备支持Addin、Plugin的机制了。一个理想的做法就是在一个 MFC系统中，内置一个ATL对象或.NET对象，稍后我们给出方案如何做到这一点。设计Application对象的关键是如何规划这个对象的属性、方 法、事件。如果你希望系统具备良好的扩展性，Application对象是十分关键的，这也是构架艺术的体现。所谓Addin(Plugin)，是系统运 行时根据需要加载的对象库，Addin(Plugin)之所以可以扩展系统，关键的因素就是系统加载Addin(Plugin)时，将 Application对象传递给Addin(Plugin)库，设想一下，如果Application恰到好处的触发了系统事件，而 Addin(Plugin)库如愿的解释了事件，一个Addin(Plugin)库的任务不就OK了吗！因此Application对象是系统设计的关 键。&#160;&#160; </p>
<p>如果你精通ATL对象，在你的MFC系统中添加一个ATL对象，这个任务可以用VC Wizard完成。你已经接受了一个事实，就是MFC程序中存在一个CXXXApp对象（CWinApp的派生类），现在你要做的是增加一个对应得 ATL对象。这个对象可以在CXXXApp::InitInstance()中创建，如果ATL对象的类是CXXXAppObject，建议你在 CXXXApp对象对象中增加一个成员变量，例如：CComObject&#160; &lt;CXXXAppObject&#160; &gt;*&#160; m_pAppObj，然后可以入下初始化m_pAppObj：</p>
<p>m_pAppObj = new CComObject&#160; &lt;CXXXAppObject&#160; &gt;；&#160;&#160; </p>
<p>注意程序结束时在CXXXApp::ExitInstance()中释放m_pAppObj，语句如下：&#160;&#160; </p>
<p>delete m_pAppObj；</p>
<p>你可以将系统得关键属性设置成CXXXAppObject的属性，例如系统得标题、是否为多文档等等。系统希望外部调用的功能可以实现为 CXXXAppObject的方法，这一点取决于你的需要。系统需要外部扩展的功能，表现为CXXXAppObject的事件，关键是在恰当的位置触发事 件以及提供的事件参数。例如，你可以在CXXXApp::InitInstance()触发应用程序开始的事件OnStartUp，Plugin捕获事件 后，可以进行特定的初始化（身份确认、初始信息查询等等）；&#160;&#160; </p>
<p>你可以在CXXXApp::ExitInstance()触发应用程序结束事件，Plugin捕获事件后，处理用户需要的系统退出工作。所有的设计取决于具体设计。&#160;&#160; </p>
<p>&#160;&#160; 如何加载Plugin，是一个有趣的问题，如果Plugin实现为一个COM范畴（Category），可以运用COM技术枚举这个Category； 可以将Plugin安装到一个特定目录，也可以通过注册表。Plugin的实现可以用COM技术、也可以用.NET框架。适当的机会我会提供例子……&#160; </p>
<h4>一些感想&#160;&#160; </h4>
<p>一时心血来潮，就发了这个帖子，很难说是有心，还是无意。几天前我在新浪网上看应氏杯围棋决赛，我觉得该赢了吧，作为一个围棋迷，我们等了十几年，等到了 属于国人的应氏杯。记得7、8年前在还在大学工作的时候，有一次，一位同事兴致冲冲的走道我面前对我说：“嗨，昨天马XX赢了李昌镐！”，当时我在系办公 室正在看报纸，那位仁兄见我头都没抬，非常不满的抢下报纸，对我吼道：“喂！马XX赢了李昌镐！！你听到没有！！！”，我对他说：“你大惊小怪个啥？！马 XX输了李昌镐多少盘，你知道吗？”，马XX几乎一直在输给李昌镐，人们已经不奇怪了，偶尔赢一次，国人就把他捧得北都找不到了，李昌镐弱冠17的时候就 傲视这个世界了，可至今面孔不变，几天前的农心杯，中日联军5个人，被他打个落花流水，李昌镐是公认的世界第一，以至于有的高手知道下一个对手如果是他， 就会去订回程机票。这次应氏杯，国人竟然感谢崔哲瀚，何也？因为这个弱冠19的小子，挡住了他的大哥李昌镐才使得应氏杯有了悬念。当国人媒体在说韩国仅李 昌镐一人厉害的时候，不知道是出何居心还是自欺欺人，李昌镐年方30，不知道要力压中、日多少年！面对这个名字，真有点麻木了，这个太极虎！软件界又来了 我们一向不齿的印度虎，2001年我们的软件出口额仅是印度的四十分之一，我们震惊了，怎么可能呢？这个四十分之一水分很大，很可能更可怜！当时我在大连 参加一个关于“大连软件出口国内第一”的官方会议，那位大人在会上说：“据说，我们大连软件出口国内排名第一，市有关领导希望今天的会议给出这个第一的数 字依据，希望你们把数据报上来，去年的数据也可申报，注意，我们要的只是数据，你们仔细体会，我们根据数据，有奖励，机会难得呀！”……。某一天，几个朋 友在我家看央视的对话节目，对话一方为国内的软件大鳄们（用友、阿尔派等公司的老总们），另一方为印度软件的一个代表团。当问及中、印软件差距的时候，我 们的刘老总（代表阿尔派）不以为然的说，据他的看法，我们已经快赶上（印度）了，……，言下之意颇有印度的水平不过如此的感觉，印度方的话我至今记忆犹 新：“是否赶上，国际市场说的算！在中国看来，印度程序员的个性不足，技术也不怎么样，其实是个错觉，印度软件首先注重个性，许多重要的美国商品化软件都 是在印度本土开发的……”，我们的舆论总是将印度程序员的水平描述的平庸至极，可是差距日渐拉开，……，围棋、足球（不好意思谈，谈不出口！）、软件，我 们被近邻严酷的封锁了，乐坏了记者们、给媒体带来了生机……&#160;&#160; </p>
<p>&#160;&#160; 日本江户时代的围棋，如果一个人要想世袭一个称号（例如：本因坊），他必须战胜所有的师兄弟，然后，住进师父家的内室，你知道以后的事情吗？以后，这个 棋手，就得为师父一家做饭、带孩子、搞卫生……，其余的门人则一心一意的下棋，这样的人、方式，造就了一代一代的本因坊，他们的棋谱大多数都流芳至今，这 就是早期日本围棋的悟道模式。软件总共有多少语句？我最早接触的计算机软件教材是一本英文版的（影印的D版），不同于我们，那本书的作者构造了“X-语言 ”，他们不讲什么C、Pascal、Basic，一旦缺了什么机制，就给“X-语言”添加些成分。什么C、Pascal、Basic，你感觉差不多，但现 在却分出了等级！我们驾驭语言的能力弱得很，可是我们在语言的细微之处却很讲究，不知道对不对，许多程序员也许是出于虚荣而用C++，事实上，地球人都知 道，做数据库，Delphi、VB远比C++胜任，铺天盖地的C++的书，写的东西几乎雷同，因为，有用的或者作者不写、或者作者不懂。有时我在想，如果 国内没有内需，会怎样？也许软件内需的存在，造就了中国软件的特色，我认为国内业界并没有充分利用中国软件内需的存在，也许中国软件内需的存在是软件落后 的硬伤。&#160;&#160; </p>
<p>&#160;&#160; 我记得一部电影《神辫》，那个英雄的大辫子被洋人炸掉了，最终他成了神枪手，战胜洋人用大刀、秘籍是不行的，用洋的东西战胜洋的技术才是正道。我觉得， 一个好的程序员必须了解软件的历史，学习历史，你知道你为什么弱，别人是如何强大的。我们正在另一个战场上抗美（可笑的是我们却要赶超印度！），无论 Microsoft、Borland如何争斗，无论他们谁统治谁，他们不影响美国的强大，朋友们，学习Microsoft，开发出让国人感到牛的软件！&#160;&#160; </p>
<p>这个帖子出乎本人的意料，愿意与大家共勉，希望这个帖子常在，与大家敞开心扉的交流！</p>
<h4>FireFox与Microsoft&#160; </h4>
<p>FireFox在一片赞扬、欢呼声中激情登场了，也许人们真的期待已久，平静的水面终于被扔进一块石头。我是IE的最早期的用户了，1996年首次 Microsoft的TED（技术教育大会），IE4还没有发布时候，我们有机会目睹了内部版本的IE4（当时内部名称是：纳什维尔，英文名称忘记了）， 那真是一次令人激动的预览，当时IE3与Navigator&#160; 3激战正酣。当你第一次看到想象中的“Active Desktop”，如果你没有身临其境，你不会激动。IE4本质上是一个Shell，其SDK是免费的，Navigator是基于Mozilla的浏览 器，虽然是开源的，由于要照顾更大的共性（与操作系统无关），因此Mozilla不能充分的利用Windows的优势，Mozilla不能为广大的程序员 带来所谓开发人员的“快感”，顶尖程序员可以驾驭Mozilla，以实现技术深度带来的乐趣，最早的Navigator同时提供17个版本（注意：不是 17种自然语言，而是17种操作系统），从数学角度分析，Mozilla就像一组公理，你可以以此为基础开发不同操作系统上的浏览器，Navigator 就是基于Mozilla的一个漂亮的结果，你能欣赏到代码结构的优美，然而失去的却是功能强大的个性（要知道，Windows用户在数量上远大于其他操作 系统用户的总和）。普通用户不可能读懂Mozilla的代码，即使懂了也不能很好的运用，这也许是Mozilla（以及大多数开源代码）失败的致命原因之 一。IE内核聪明的抓住了开发者，你想想：对数以万计的中、初级开发者而言，容易驾驭是首选的选择，也是明智的。我读过Mozilla，但我不会在开发过 程中为一个具体的项目应用它。只要是浏览器，就不可能绝对的安全，无论是Mozilla，还是IE。当我了解到FireFox是基于Mozilla的一个 新的浏览器，我基本上对其失去了信心，我有一个奇怪的观点：FireFox的推出，最大的受益者绝对是Microsoft，即使Microsoft失去 20%的份额，但是会导致Microsoft强化IE，Microsoft正不知道如何促使IE进化的时候，FireFox的出现无疑为 Microsoft提供了机会，物种进化的原则就是竞争，FireFox就是促进IE进一步强大的催化剂。FireFox的扩展机制的确十分灵活，如果对 手不是Microsoft，就很难掀起波澜，而且当高级的开发者逐渐了解FireFox的时候，FireFox的漏洞就会渐渐暴露，试想想，如果某种 Linux取代了Windows，那么，它的漏洞也会与Windows一样多，因为那个时候，会有与研究Windows漏洞一样多的人去研究对应得 Linux的漏洞！从个人的角度上看，Microsoft也许有点“冤”，因为窥视Microsoft弱点的人实在太多了。从理论上看，计算机安全性是个 永远的话题，就像任何社会都需要警察一样，没有了小偷、贼、犯罪，警察也就消失了，你想想，文明是什么？野蛮能消失吗？野蛮消失了，文明也就不存在了，高 度文明就是更不存在了。人类克服了癌症，下一个疾病会比癌症更致命，但这并不意味着不必克服了癌症，进步真是一种挑战……&#160;&#160; </p>
<p>IE的技术构思肯定是个卓越的构思，IE可扩展的机制，会给Windows开发者带来许许多多的益处。我正在计划一片文章，介绍如何将你的对象模型与 MSHTML库实现对接，这样，在HTML文件中可以将你的指令系统与HTML对象模型融合在一起。&#160; </p>
<h4>话说“Hook”&#160; </h4>
<p>&#160;&#160; 在CSDN上时常看到关于“hook”，的问题，令我想起另一个话题，那就是游戏“外挂”。Hook提供一种改变一个Windows窗口消息处理的一种 手段，通常的开发根本用不到，因此，谈不上“常用”，早期的Windows，由于不能很好的支持远东（当然包含汉字）地区的文字，因此出现了许多外挂的软 件补充Windows的不足，中文之星是一个典型的、令国人自豪的软件，监控软件也许要运用hook技术，此外，很难想象什么软件会用到hook。有人问 我，能不能改变一个进程的数据处理行为，我曾经告诉他：能，也不能！感觉告诉我，hook绝大多数场合下是一种“不礼貌”的行为。曾有一段时间，我的服务 器，经常有人悄悄地近来，给我增加许多超级用户，肆意修改我的管理权限，我找到托管商，解决了这个问题，那时，我也买了几本服务器监听、安全方面的书，看 了几天，我就放弃了，为什么？担心学坏（正、邪仅在一念之差），其实，每个服务器都很脆弱，对有经验的系统程序员而言，安全性与道德准则是联系在一起的， 软件技术上走邪路很容易，有时我会想，如果我去设计病毒或者当黑客，会怎样？基础数学出身的我，数论、组合学、密码理论统统不是问题，Windows虚拟 驱动程序开发，也不是问题！为什么那么多的人关心hook？国人的正道软件寥寥无几，可破解术却出神入化，可惜，可惜！hook是一种底层的编成机制，能 理解好hook的人，完全具备掌握一流技术的底蕴，真希望回头……&#160; </p>
<h4>MFC的批判&#160;&#160; </h4>
<p>&#160;&#160; 记得梁羽生先生笔下有一位正邪兼修的高手，名曰“乔北溟”（好像是这个名字），一次此人与大侠张丹枫在一个庙中相遇，乔北溟随手操起香案上的香炉，张丹 枫问他：“你的家伙称手吗?”&#160; ，乔北溟笑答：“以吾辈之见识，还在意手中之物是否为剑？”，张丹枫一愣，心中暗念，此人果然不同凡响……</p>
<p>&#160;&#160; 说起MFC，许多人都会撇撇嘴，高手们会对其提出许多尖锐的批评，例如，刻板的Document-View机制，繁复的框架结构，怪异的COM实现以及 令人莫名其妙的宏，等等。MFC的大而全，不仅捆住了MFC开发组的手脚，也为全面掌握MFC的愿望设置了障碍。高手们批评之余，可能忽略了一个基本的事 实，这个事实就是，你的批评来自于你对MFC的深入理解，当许多人指出MFC的种种弱点时，他们或许不愿意承认：他们的技高一筹、见识超人一等是MFC带 来的，不止一次有人与我谈及：“MFC的COM实现，实在差劲，看看ATL（不容否认，ATL至今仍然是开发COM的最佳C++类库），你就会感觉MFC 的臃肿……”，我们中的许多人潜意识里不知不觉的在作一件事：“当我们借助一部梯子登上一层楼的时候，我们会评价这个梯子是如何如何之糟糕。”1999 年，我的一个项目中需要一个描述引擎，VBS（Visual&#160; Basic Script），是个免费的语言引擎，但功能局限极大，我联系了美国的Summit公司，他们很快寄来了Microsoft的Visual Basic for Application SDK 6.0，当时我的团队可谓很强，其中的几位研究生C++修养很好，拿到VBA SDK时，他们对我说：“应当没问题，我们很快就会搞定VBA SDK”，可是几天过去了，连个例子都没出来，原来，虽然VBA SDK提供了MFC扩展类库（基于模版机制的MFC/ATL合成类库），可实现得极其别扭，我接手后的当天晚上，VBA&#160; 的IDE就集成到系统中，第二天可编程对象顺利出现在VBA&#160; 的IDE中，其余人觉得很奇怪，一看代码，原来我绕过Microsoft的例子，完全是另外的实现途径，那个时候，我感觉到，Microsoft这个家 伙真的可恶，本来清晰的集成途径，却人为的让你绕来绕去增加技术难度，过后想想，也可以理解，不这样，第三方的Summit何以作技术支持？我经常想，如 果没有商业利益，许多技术应当十分简洁、高效，这一点，Microsoft以及其他大公司都十分明白，如果一切都是最佳的实现模式，可能就另外一种局面 了，复变函数论中有一个著名的定理：“复平面上处处解析的函数一定是常值函数。”，&#160; 学生们很难理解，当时我说，如果把一个省几十个县的最好学生组成一个班会怎样？结果是一定有一个较差的学生（除非这个班只有一个学生！），这是个无法抗 拒的定则，你想想，用天下最好的20个菜形成的酒席是什么味道？那一定是最差的！&#160;&#160; </p>
<p>Microsoft的MFC是值得你学习和使用的，如果你讨厌这个东西或者你认为这是个邪恶的东西，你学学乔北溟，实现正邪归一……</p>
<h4>有感于“鸡兔同笼”&#160;&#160; </h4>
<p>&#160;&#160; 小女初到北京时，对北京的教育颇为不适，铺天盖地的数学奥赛培训班向她压过来，孩子真是辛苦。她四年级时，就的对初等数论的基本内容进行强迫性的熟悉， 还好，经过一段时间的努力，掌握了“鸡兔同笼”、“韩信点兵”等中国经典，马马虎虎的能证明费马小定理，有一天，她问我：“爸爸，大学数学什么样？还有‘ 鸡兔同笼’吗？”，我说，有，我特意找了本老外写的《Basic&#160; Algebra》，找到其中的“中国剩余定理”，小孩子接着问道：“这本书中还有中国人的数学内容吗？”，我在习题中给她找到华罗庚老先生的“反同构定 理”，小孩子又接着问：“还有吗？”，我感到很没面子，因为真的找不到了……&#160;&#160; </p>
<p>&#160;&#160; 曾经的一个梦，就是当一个数学家！为此，研究生时期买了大量的数学书，当时我们系的资料室是联合国教科文组织的藏书室，可以说，里面就是一个装满武功秘 籍的宝库。有一天我们打扫资料室的一个仓库，仓库里全是鼓鼓囊囊的麻袋包，上面落满灰尘，手触摸一下，能粘出几毫米厚的灰尘，可以想象有几年没有打扫了。 同学无意中揭开一个麻袋，我们惊呆了，里面是美国60年代各大学的数学杂志，每个杂志的名字都是响当当的，那真叫浩如烟海！当时我们就想，我们的论文能发 表到其中吗？如果侥幸发了几篇，可想而知，我们就可以当博导了，这些比国内所谓核心期刊有分量得多的杂志，就像CSDN上的帖子一样，很快就会被淹没了， 也许很久都不会有人参考、访问……，有一天，我也当了老师，面临着种种考核，于是，我们就成了论文机器，不论是否有价值，只要是核心的，你就高人一等。那 个时候，我经常想起那些麻袋里的文献……&#160;&#160; </p>
<p>&#160;&#160; 我们整体水平的落后，导致整体的浮躁，数量上上去了，质量却下来了。若干年后，也许我成熟了，我们这些曾经站在大学讲坛上的人，没什么好的东西讲（谈不 上&#160; ‘教’）给年轻的学生，记得当年我校的计算中心计划招个培训班，几天过去，仅有7人报名，第8人来时，前7人就退了3人，主任感到奇怪，问学生，学生不 语，其中原委并不复杂。我发此帖并没有精心策划，的确如某些网友所言是随感而发，“鸡兔同笼”、“勾股定理”已经有了历史地位，如果仅仅够用，我们住草房 子一样保暖，为何建大厦呢？为什么放弃传统的长袍、马褂而去穿西装革履？病毒软件大战几乎是自杀性的内战，没有撼动国外产品的分毫，我们许多人喜欢对自己 人说三道四，是不是很少想一致对外？人家卖我们打折的产品，条件是附加一份“忏悔书”，而执行者却是我们国人，为什么？因为我们的东西匮乏！当年别人用钢 铁武器掠夺了我们的财富，他们强大了，地痞无赖换上了绅士面孔，讲起了法律，当你用D版时，人家文明的指责你，你的人力、财力、物力统统为人所用，取之于 你用之于你，而我们却依然陶醉在“鸡兔同笼”、“勾股定理”的历史成就之中，我们依然喜欢争论“勾股定理”谁发现得更早，π是谁最先精确计算的，就像谈论 C++谁的水平更高一样。 </p>
</ul>

	标签：<a href="http://www.imkevinyang.com/tags/mfc" title="MFC" rel="tag">MFC</a>, <a href="http://www.imkevinyang.com/categories/greatpoststoshare" title="好文分享" rel="tag">好文分享</a>, <a href="http://www.imkevinyang.com/tags/microsoft" title="微软" rel="tag">微软</a>, <a href="http://www.imkevinyang.com/tags/%e6%8a%80%e6%9c%af%e5%bf%83%e5%be%97" title="技术心得" rel="tag">技术心得</a><br />

	<h4 style="background-color:#3B3B3B;border-bottom:2px groove gray;color:#F2F2F2;margin-top:20px;padding:6px 6px 6px 15px;margin:20px 0px 0px 0px">你可能对下面的文章感兴趣</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.imkevinyang.com/2009/05/google%e5%92%8c%e5%be%ae%e8%bd%af%e7%9a%84%e4%b8%80%e5%a4%a7%e4%b8%8d%e5%90%8c.html" title="Google和微软的一大不同 (2009/05/06)">Google和微软的一大不同</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/12/win7vista%e9%ab%98%e7%ba%a7%e7%94%a8%e6%88%b7%e5%bf%85%e5%a4%87%e7%9a%84%e5%8f%b3%e9%94%ae%e8%8f%9c%e5%8d%95take-back-my-ownership.html" title="Win7/Vista高级用户必备的右键菜单Take back my Ownership! (2009/12/06)">Win7/Vista高级用户必备的右键菜单Take back my Ownership!</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/03/%e6%af%8f%e6%97%a5%e4%b8%80%e5%8f%a52009-03-23.html" title="一句话博客2009-03-23 (2009/03/23)">一句话博客2009-03-23</a> </li>
	<li><a href="http://www.imkevinyang.com/2009/03/%e5%9c%a8%e5%8d%8e%e4%b8%ba%e5%b7%a5%e4%bd%9c%e5%8d%81%e5%b9%b4%e7%9a%84%e6%84%9f%e6%82%9f.html" title="在华为工作十年的感悟 (2009/03/16)">在华为工作十年的感悟</a> </li>
	<li><a href="http://www.imkevinyang.com/2010/11/%e5%be%ae%e8%bd%afazure%e5%b9%b3%e5%8f%b0%e7%9a%84%e8%ae%a1%e8%b4%b9%e6%a8%a1%e5%9e%8b.html" title="微软Azure平台的计费模型 (2010/11/12)">微软Azure平台的计费模型</a> </li>
	<li><a href="http://www.imkevinyang.com/2010/06/%e5%be%ae%e8%bd%af%e6%8a%80%e6%9c%af%e7%a4%be%e5%8c%ba%e7%b2%be%e8%8b%b1%e8%ae%a1%e5%88%92%e4%bd%a0%e4%b9%9f%e6%9d%a5%e5%8a%a0%e5%85%a5%e5%90%a7.html" title="微软技术社区精英计划&mdash;&mdash;你也来加入吧 (2010/06/02)">微软技术社区精英计划&mdash;&mdash;你也来加入吧</a> </li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.imkevinyang.com/2009/03/%e5%8d%81%e5%b9%b4mfc%e7%bb%8f%e5%8e%86%e8%ae%a4%e8%af%86%e7%9a%84microsoft%e6%8a%80%e6%9c%af.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk: enhanced

Served from: www.imkevinyang.com @ 2012-02-08 00:54:25 -->
