<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_billq</title><subtitle type="text">[觉得为时已晚的时候，也许恰恰是最早的时候]</subtitle><id>http://feed.cnblogs.com/blog/u/20988/rss</id><updated>2012-01-17T13:53:14Z</updated><author><name>Bill Qian</name><uri>http://www.cnblogs.com/billqian/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/billqian/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/20988/rss"/><entry><id>http://www.cnblogs.com/billqian/archive/2011/04/06/2006762.html</id><title type="text">抛砖引玉：我看微软.NET各子技术领域之应用前景</title><summary type="text">抛砖引玉：我看微软.NET各子技术领域之应用前景 金旭亮 从2002年发布.NET 1.0，历经8年发展，.NET发展到了4.0，已经成为一个庞大而复杂的软件开发与运行平台，其架构日益复杂，其应用领域也在不断地扩展，包容了“一堆”的子技术领域。在.NET 4.0即将发布之际，回顾一下已发布的各项.NET技术，看看哪些技术用得很火，哪些被打入冷宫，再猜猜.NET 4.0中可能会有哪些技术会得到“青睐”，是件有意思的事。 1 桌面应用程序开发技术（ Windows Form和WPF）。 在.NET桌面应用程序开发领域，Windows Form是“前辈”，相比以前的老祖宗MFC，其开发效率高得多，即</summary><published>2011-04-06T06:08:00Z</published><updated>2011-04-06T06:08:00Z</updated><author><name>Bill Qian</name><uri>http://www.cnblogs.com/billqian/</uri></author><link rel="alternate" href="http://www.cnblogs.com/billqian/archive/2011/04/06/2006762.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/billqian/archive/2011/04/06/2006762.html"/><content type="html">&lt;div&gt;&lt;p align="center"&gt;&lt;span style="font-family: 宋体; font-size: 18pt;"&gt;抛砖引玉：我看微软&lt;/span&gt;&lt;span style="font-size: 18pt;"&gt;.NET&lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 18pt;"&gt;各子技术领域之应用前景&lt;/span&gt;&lt;/p&gt;  &lt;p align="center"&gt;&lt;span style="font-family: 宋体;"&gt;金旭亮&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family: 宋体;"&gt;从&lt;/span&gt;2002&lt;span style="font-family: 宋体;"&gt;年发布&lt;/span&gt;.NET 1.0&lt;span style="font-family: 宋体;"&gt;，历经&lt;/span&gt;8&lt;span style="font-family: 宋体;"&gt;年发展，&lt;/span&gt;.NET&lt;span style="font-family: 宋体;"&gt;发展到了&lt;/span&gt;4.0&lt;span style="font-family: 宋体;"&gt;，已经成为一个庞大而复杂的软件开发与运行平台，其架构日益复杂，其应用领域也在不断地扩展，包容了&lt;/span&gt;&amp;#8220;&lt;span style="font-family: 宋体;"&gt;一堆&lt;/span&gt;&amp;#8221;&lt;span style="font-family: 宋体;"&gt;的子技术领域。在&lt;/span&gt;.NET 4.0&lt;span style="font-family: 宋体;"&gt;即将发布之际，回顾一下已发布的各项&lt;/span&gt;.NET&lt;span style="font-family: 宋体;"&gt;技术，看看哪些技术用得很火，哪些被打入冷宫，再猜猜&lt;/span&gt;.NET 4.0&lt;span style="font-family: 宋体;"&gt;中可能会有哪些技术会得到&lt;/span&gt;&amp;#8220;&lt;span style="font-family: 宋体;"&gt;青睐&lt;/span&gt;&amp;#8221;&lt;span style="font-family: 宋体;"&gt;，是件有意思的事。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;1 &lt;span style="font-family: 宋体;"&gt;桌面应用程序开发技术（&lt;/span&gt; Windows Form&lt;span style="font-family: 宋体;"&gt;和&lt;/span&gt;WPF&lt;span style="font-family: 宋体;"&gt;）。&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: 宋体;"&gt;　　在&lt;/span&gt;.NET&lt;span style="font-family: 宋体;"&gt;桌面应用程序开发领域，&lt;/span&gt;Windows Form&lt;span style="font-family: 宋体;"&gt;是&amp;#8220;前辈&amp;#8221;，相比以前的老祖宗&lt;/span&gt;MFC&lt;span style="font-family: 宋体;"&gt;，其开发效率高得多，即使比一向以&lt;/span&gt;&amp;#8220;&lt;span style="font-family: 宋体;"&gt;高效率&lt;/span&gt;&amp;#8221;&lt;span style="font-family: 宋体;"&gt;著称的&lt;/span&gt;VB&lt;span style="font-family: 宋体;"&gt;、&lt;/span&gt;Delphi&lt;span style="font-family: 宋体;"&gt;之类，也不逊色，因此在很长的一段时间内，&lt;/span&gt;Windows Form&lt;span style="font-family: 宋体;"&gt;成为&lt;/span&gt;.NET &lt;span style="font-family: 宋体;"&gt;桌面领域的主流技术，而且有一大批各式各样的第&lt;/span&gt;3&lt;span style="font-family: 宋体;"&gt;方控件，其功能可谓应有尽有，使用方便。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;Windows Form&lt;span style="font-family: 宋体;"&gt;的问题是&lt;/span&gt;&amp;#8220;&lt;span style="font-family: 宋体;"&gt;千人一面&lt;/span&gt;&amp;#8221;&lt;span style="font-family: 宋体;"&gt;，要想做出&lt;/span&gt;&amp;#8220;&lt;span style="font-family: 宋体;"&gt;与众不同&lt;/span&gt;&amp;#8221;&lt;span style="font-family: 宋体;"&gt;的界面，真得费不少力气。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;.NET 3.0&lt;span style="font-family: 宋体;"&gt;中出现的&lt;/span&gt;WPF&lt;span style="font-family: 宋体;"&gt;，在界面设计和用户体验上比&lt;/span&gt;Windows Form&lt;span style="font-family: 宋体;"&gt;要强得多，比如其强大的数据绑定、动画、依赖属性和路由事件机制，都非常棒。然而，&lt;/span&gt;WPF&lt;span style="font-family: 宋体;"&gt;最头痛的是性能，另外，在需要快速开发原型的场景，&lt;/span&gt;WPF&lt;span style="font-family: 宋体;"&gt;暂时还比不上&lt;/span&gt;Windows Form&lt;span style="font-family: 宋体;"&gt;方便。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: 宋体;"&gt;　　&lt;/span&gt;.NET 4.0&lt;span style="font-family: 宋体;"&gt;中，&lt;/span&gt;WPF&lt;span style="font-family: 宋体;"&gt;在性能上有较大的改进，这点在使用&lt;/span&gt;WPF&lt;span style="font-family: 宋体;"&gt;开发的&lt;/span&gt;Visual Studio 2010&lt;span style="font-family: 宋体;"&gt;上体现极为明显，&lt;/span&gt;Visual Studio 2010 CTP&lt;span style="font-family: 宋体;"&gt;和&lt;/span&gt;BETA1&lt;span style="font-family: 宋体;"&gt;只能用&amp;#8220;惨不忍睹&amp;#8221;一词来形容，&lt;/span&gt;BETA2&lt;span style="font-family: 宋体;"&gt;就有一个性能上的飞越，但还是不是地玩点&lt;/span&gt;&amp;#8220;&lt;span style="font-family: 宋体;"&gt;崩溃&lt;/span&gt;&amp;#8221;&lt;span style="font-family: 宋体;"&gt;、&lt;/span&gt;&amp;#8220;&lt;span style="font-family: 宋体;"&gt;挂死&lt;/span&gt;&amp;#8221;&lt;span style="font-family: 宋体;"&gt;的把戏，而当前的&lt;/span&gt;RC&lt;span style="font-family: 宋体;"&gt;版本，我觉得其使用体验已经超越了&lt;/span&gt;VS 2008&lt;span style="font-family: 宋体;"&gt;。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: 宋体;"&gt;　　我认为，&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 黑体; font-size: 12pt;"&gt;WPF&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 黑体; font-size: 12pt;"&gt;取代Windows Form是必然的&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体; font-size: 12pt;"&gt;。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;2 &lt;span style="font-family: 宋体;"&gt;数据存取技术&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: 宋体;"&gt;　　&lt;strong&gt;（&lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;）&lt;/span&gt;ADO.NET&lt;/strong&gt;&lt;span style="font-family: 宋体;"&gt;。这不用多说了，在实际开发中用得太多了，事实证明了它的成功。&lt;/span&gt;&lt;/p&gt; &lt;p style="text-indent: 20.25pt;"&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;（&lt;/span&gt;2&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;）&lt;/span&gt;LINQ&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;。&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p style="text-indent: 20.25pt;"&gt;&lt;span style="font-family: 宋体;"&gt;这也是个很大的领域，里面最牛的是&lt;/span&gt;&lt;strong&gt;LINQ to Object&lt;/strong&gt;&lt;span style="font-family: 宋体;"&gt;，我一用就喜欢上了。&lt;/span&gt;&lt;/p&gt; &lt;p style="text-indent: 20.25pt;"&gt;&lt;strong&gt;LINQ to XML&lt;/strong&gt;&lt;span style="font-family: 宋体;"&gt;也很好，它把程序员从代码中解放出来，可以完成大部分&lt;/span&gt;XML&lt;span style="font-family: 宋体;"&gt;存取功能，让大家很高兴有机会能和原先&lt;/span&gt;.NET&lt;span style="font-family: 宋体;"&gt;所提供的&amp;#8220;一堆&amp;#8221;&lt;/span&gt;XML&lt;span style="font-family: 宋体;"&gt;相关类说声&amp;#8220;不见&amp;#8221;。&lt;/span&gt;&lt;/p&gt; &lt;p style="text-indent: 20.25pt;"&gt;&lt;strong&gt;LINQ to DataSet&lt;/strong&gt;&lt;span style="font-family: 宋体;"&gt;。作为一个&lt;/span&gt;ADO.NET&lt;span style="font-family: 宋体;"&gt;技术的补充，这是一个无足轻重的小卒子，在开发中可以用，也可以直接忽略。&lt;/span&gt;&lt;/p&gt; &lt;p style="text-indent: 20.25pt;"&gt;&lt;strong&gt;LINQ to SQL&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;和&lt;/span&gt;ADO.NET&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;实体框架。&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体;"&gt;这两个技术功能重叠，基本上让人怀疑其中有一个是不是&amp;#8220;没有存在的必要&amp;#8221;，所以曾有&amp;#8220;&lt;/span&gt;LINQ to SQL&lt;span style="font-family: 宋体;"&gt;已死&amp;#8221;的传言。当然，后来微软公司表态说仍然会继续开发&lt;/span&gt;LINQ to SQL&lt;span style="font-family: 宋体;"&gt;的后续版本，争论平息。&lt;/span&gt;&lt;/p&gt; &lt;p style="text-indent: 20.25pt;"&gt;&lt;span style="font-family: 宋体;"&gt;但我个人觉得，在实际开发中还是使用&lt;/span&gt;ADO.NET&lt;span style="font-family: 宋体;"&gt;实体框架更合适。&lt;/span&gt;LINQ to SQL&lt;span style="font-family: 宋体;"&gt;有的功能它都有，而且用起来更为灵活，难得的是它的使用并不比&lt;/span&gt;LINQ to SQL&lt;span style="font-family: 宋体;"&gt;复杂多少。&lt;/span&gt;&lt;/p&gt; &lt;p style="text-indent: 20.25pt;"&gt;ADO.NET&lt;span style="font-family: 宋体;"&gt;实体框架还延伸到了其它的技术领域，是一项重要的基础数据存取技术。&lt;/span&gt;&lt;/p&gt; &lt;p style="text-indent: 20.25pt;"&gt;&lt;span style="font-family: 宋体;"&gt;因此，&lt;/span&gt; &lt;strong&gt;ADO.NET&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;实体框架&lt;/span&gt; vs LINQ to SQL&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;，前者胜出&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体;"&gt;。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;（&lt;/span&gt;3&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;）&lt;/span&gt;WCF Data Service&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;。&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: 宋体;"&gt;这是一项非常值得关注的技术，原先叫&lt;/span&gt;ADO.NET Data Service&lt;span style="font-family: 宋体;"&gt;，它体现了&amp;#8220;数据是一种服务&amp;#8221;的思想，让数据可以通过&lt;/span&gt;HTTP&lt;span style="font-family: 宋体;"&gt;请求直接获取，它设计了一套&lt;/span&gt;URI&lt;span style="font-family: 宋体;"&gt;模式，可以完成投影、选择、分页等功能，用起来方便灵活。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: 宋体;"&gt;我觉得在&lt;/span&gt;SOA&lt;span style="font-family: 宋体;"&gt;大行于世的分布式系统时代，&lt;/span&gt;WCF Data Service&lt;span style="font-family: 宋体;"&gt;应该会得到应用。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: 宋体;"&gt;但这一技术问题在于性能。由于数据需要走互联网，所以如果网速很慢的话，基于此技术搭建的应用程序其用户体验将&amp;#8220;惨不忍睹&amp;#8221;。而且，互联网服务安全问题非常关键，保证基于&lt;/span&gt;WCF Data Service&lt;span style="font-family: 宋体;"&gt;技术搭建的应用程序数据安全，想必将成为开发者最费脑筋的地方。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;（&lt;/span&gt;4&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;）&lt;/span&gt;WCF RIA Service&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;。&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: 宋体;"&gt;这个技术与&lt;/span&gt;Silverlight&lt;span style="font-family: 宋体;"&gt;密不可分。我还没有系统地了解这一技术领域，不予评说。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;3 Web&lt;span style="font-family: 宋体;"&gt;开发技术&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: 宋体;"&gt;这一领域，没说的，&lt;/span&gt;ASP.NET&lt;span style="font-family: 宋体;"&gt;中的&lt;/span&gt;Web Form&lt;span style="font-family: 宋体;"&gt;是当之无愧的主流。经过多年的发展，&lt;/span&gt;Web Form&lt;span style="font-family: 宋体;"&gt;已高度成熟。&lt;/span&gt;VS 2008&lt;span style="font-family: 宋体;"&gt;中加入的&lt;/span&gt;AJAX&lt;span style="font-family: 宋体;"&gt;系列组件，如&lt;/span&gt;ScriptManger&lt;span style="font-family: 宋体;"&gt;、&lt;/span&gt;UpdataPanel&lt;span style="font-family: 宋体;"&gt;之类，再配合一堆的应用了&lt;/span&gt;AJAX&lt;span style="font-family: 宋体;"&gt;技术的控件，让&lt;/span&gt;Web Form&lt;span style="font-family: 宋体;"&gt;更是如虎添翼。基于这种成熟技术开发&lt;/span&gt;Web&lt;span style="font-family: 宋体;"&gt;网站，不管是用户还是开发企业，都比较放心。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: 宋体;"&gt;从&lt;/span&gt;.NET 3.5 SP1&lt;span style="font-family: 宋体;"&gt;开始，&lt;/span&gt;Web&lt;span style="font-family: 宋体;"&gt;领域多了些新东西。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;（&lt;/span&gt;1&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;）&lt;/span&gt;ASP.NET MVC&lt;/strong&gt;&lt;span style="font-family: 宋体;"&gt;。&lt;/span&gt;MVC&lt;span style="font-family: 宋体;"&gt;这一设计模式已有多年的历史，也有很多的成熟的框架，但在&lt;/span&gt;.NET&lt;span style="font-family: 宋体;"&gt;&amp;#8220;官方&amp;#8221;平台上，却是个新加入的&amp;#8220;成员&amp;#8221;，并不算成熟，我觉得其应用前景要看看再说。我不知道业界是否已有基于此技术开发的实际项目，有这方面项目经验的朋友，不妨谈谈自己的看法。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;（&lt;/span&gt;2&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;）&lt;/span&gt;ASP.NET Dynamic Data&lt;/strong&gt;&lt;span style="font-family: 宋体;"&gt;。这是一个看上去很酷的技术。当使用它来创建网站时，&lt;/span&gt;Visual Studio 2010&lt;span style="font-family: 宋体;"&gt;会帮你创建一个&lt;/span&gt;DynamicData&lt;span style="font-family: 宋体;"&gt;文件夹，里面放了数十个模板文件，构建了一个网站的&amp;#8220;脚手架&amp;#8221;，几乎不用编码，就可以生成一个全功能的&amp;#8220;&lt;/span&gt;CRUD&lt;span style="font-family: 宋体;"&gt;&amp;#8221;数据驱动网站。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: 宋体;"&gt;它的设计思想很好：底层使用&lt;/span&gt;ADO.NET&lt;span style="font-family: 宋体;"&gt;实体框架或&lt;/span&gt;LINQ &amp;nbsp;to SQL&lt;span style="font-family: 宋体;"&gt;构造数据模型，通过提取数据模型中的元数据，动态选择合适的模板生成网页。这就避免了真实项目中不得不为每个数据存取任务设计不同网页的负担，而且这一技术提供了很多的方式去允许你定制网站。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: 宋体;"&gt;我当初刚一接触时，也很兴奋，这是个好东西啊！但后来我改变了看法，这一技术的问题在于它过于&amp;#8220;自动化&amp;#8221;了，而且需要包容数十个文件，让其与现有的&lt;/span&gt;ASP.NET&lt;span style="font-family: 宋体;"&gt;网站集成相当不便，配置起来麻烦。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: 宋体;"&gt;我个人认为，&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 黑体; font-size: 12pt;"&gt;在现有.NET Web开发技术应用现状之下，任何一个与现有的ASP.NET网站（以Web Form+AJAX为主体技术）集成麻烦的技术，都很难有&amp;#8220;美好&amp;#8221;的前途。&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体;"&gt;很不幸，&lt;/span&gt;ASP.NET Dynamic Data&lt;span style="font-family: 宋体;"&gt;是这样的例子，&lt;/span&gt;ASP.NET MVC&lt;span style="font-family: 宋体;"&gt;也有同样的问题，但没有&lt;/span&gt;ASP.NET Dynamic Data&lt;span style="font-family: 宋体;"&gt;严重，而且&lt;/span&gt;ASP.NET MVC&lt;span style="font-family: 宋体;"&gt;架构清晰，还是比较易于维护。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;（&lt;/span&gt;3&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;）&lt;/span&gt;Silverlight&lt;/strong&gt;&lt;span style="font-family: 宋体;"&gt;。这实际上是另一种&lt;/span&gt;Web&lt;span style="font-family: 宋体;"&gt;应用架构的代表技术，其立足点在于充分利用客户端的计算资源，可以大大地降低对服务端的依赖，而且易于构造良好的用户体验，我个人认为其发展大有可观。是一个需要重点关注的技术。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;4 &lt;span style="font-family: 宋体;"&gt;插件技术&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;.NET 4.0&lt;span style="font-family: 宋体;"&gt;引入了一个&amp;#8220;&lt;/span&gt;&lt;strong&gt;Managed Extensibility Framework&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;（&lt;/span&gt;MEF&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;）&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体;"&gt;&amp;#8221;，我在此郑重推荐！&lt;/span&gt;&lt;/p&gt; &lt;p&gt;MEF&lt;span style="font-family: 宋体;"&gt;通过简单地给代码附加&amp;#8220;&lt;/span&gt;[Import]&lt;span style="font-family: 宋体;"&gt;&amp;#8221;和&amp;#8220;&lt;/span&gt;[Export]&lt;span style="font-family: 宋体;"&gt;&amp;#8221;标记，我们就可以清晰地表明组件之间的&amp;#8220;服务消费&amp;#8221;与&amp;#8220;服务提供&amp;#8221;关系，&lt;/span&gt;MEF&lt;span style="font-family: 宋体;"&gt;在底层使用反射动态地完成组件识别、装配工作。从而使得开发基于插件架构的应用系统变得简单。够酷的技术！&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: 宋体;"&gt;另外，请忘记&lt;/span&gt;.NET 3.5&lt;span style="font-family: 宋体;"&gt;所引入的&amp;#8220;&lt;/span&gt;&lt;strong&gt;MAF&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;（&lt;/span&gt;Managed Add-in Framework &lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 宋体;"&gt;）&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体;"&gt;&amp;#8221;吧，&lt;/span&gt;MAF&lt;span style="font-family: 宋体;"&gt;引入了一个复杂的宿主与插件间的通讯管道架构，仅仅是创建一个最简单的&lt;/span&gt;SayHello&lt;span style="font-family: 宋体;"&gt;宿主和插件，你也必须创建多达&lt;/span&gt;8&lt;span style="font-family: 宋体;"&gt;个项目！&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: 宋体;"&gt;最要命的是&lt;/span&gt;MAF&lt;span style="font-family: 宋体;"&gt;设计者&amp;#8220;想&amp;#8221;得过多，设计了复杂的接口和类继承体系，而且选择让插件运行于与宿主不同的应用程序域中，这就使得插件与宿主之间的通讯变得复杂。个人认为，这些实在不是一个好的设计决策。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: 宋体;"&gt;我估计，&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 黑体; font-size: 12pt;"&gt;MAF&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-family: 黑体; font-size: 12pt;"&gt;会&amp;#8220;无疾而终&amp;#8221;&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family: 宋体; font-size: 12pt;"&gt;。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;5 WCF&lt;span style="font-family: 宋体;"&gt;和&lt;/span&gt;.NET Remoting&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: 宋体;"&gt;其实这是一个不需要讨论的问题，有了&lt;/span&gt;WCF&lt;span style="font-family: 宋体;"&gt;，我还要&lt;/span&gt;Remoting&lt;span style="font-family: 宋体;"&gt;干什么？&lt;/span&gt;&amp;nbsp;&amp;nbsp; &lt;span style="font-family: 宋体;"&gt;因为前者包容后者的所有功能，而且还提供了更多。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;WCF&lt;span style="font-family: 宋体;"&gt;的问题是微软企图用一个框架解决所有的问题，因此其架构非常复杂，任何一名想探究其底层运行机理的人，都必须要有足够的心理准备和耐心。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: 宋体;"&gt;我们可以看到&lt;/span&gt;WCF&lt;span style="font-family: 宋体;"&gt;向其它领域的渗透，比如前面的&lt;/span&gt;WCF Data Service&lt;span style="font-family: 宋体;"&gt;，还有&lt;/span&gt;Workflow Service&lt;span style="font-family: 宋体;"&gt;（将工作流发布为&lt;/span&gt;WCF&lt;span style="font-family: 宋体;"&gt;服务），看来微软是将&amp;#8220;宝&amp;#8221;押在&lt;/span&gt;WCF&lt;span style="font-family: 宋体;"&gt;上了，&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family: 黑体; font-size: 12pt;"&gt;凡是带有&amp;#8220;服务&amp;#8221;字样的，微软都有把它改造为WCF服务的冲动。&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: 宋体;"&gt;因此，&lt;/span&gt;WCF&lt;span style="font-family: 宋体;"&gt;是不得不学习和掌握的技术。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;6 &lt;span style="font-family: 宋体;"&gt;多线程与并行计算&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: 宋体;"&gt;关于并行计算，我已经写过不少文章了，废话少说，在多核时代，我认为&lt;/span&gt;.NET&lt;span style="font-family: 宋体;"&gt;并行计算中的任务并行库和并行&lt;/span&gt;LINQ&lt;span style="font-family: 宋体;"&gt;，会得到较多的应用。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;7 &lt;span style="font-family: 宋体;"&gt;工作流&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: 宋体;"&gt;这个技术，我看是微软自己把事弄砸了。工作流从&lt;/span&gt;.NET 3.0&lt;span style="font-family: 宋体;"&gt;开始引入，到&lt;/span&gt;.NET 3.5&lt;span style="font-family: 宋体;"&gt;已经比较完善了，也有了一些实际的应用。但&lt;/span&gt;.NET 4.0&lt;span style="font-family: 宋体;"&gt;就来了个另起炉灶，&lt;/span&gt;WF4&lt;span style="font-family: 宋体;"&gt;与&lt;/span&gt;WF3.5&lt;span style="font-family: 宋体;"&gt;相比，简直是另一个产品，而且&lt;/span&gt;WF4&lt;span style="font-family: 宋体;"&gt;的&lt;/span&gt;BETA1&lt;span style="font-family: 宋体;"&gt;和&lt;/span&gt;BETA2&lt;span style="font-family: 宋体;"&gt;相比，居然在对象模型上也有大的改动，&lt;/span&gt;RC&lt;span style="font-family: 宋体;"&gt;版本中的&lt;/span&gt;WF4&lt;span style="font-family: 宋体;"&gt;我还没看，不知又有什么变动，应该不会再变了吧？！&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: 宋体;"&gt;对于这样一个&amp;#8220;变色龙&amp;#8221;，谁用谁胆大。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;8 &lt;span style="font-family: 宋体;"&gt;函数式编程语言&lt;/span&gt;F#&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: 宋体;"&gt;函数式编程很有趣，&lt;/span&gt;VS 2010&lt;span style="font-family: 宋体;"&gt;中&lt;/span&gt;F#&lt;span style="font-family: 宋体;"&gt;成为&lt;/span&gt;.NET&lt;span style="font-family: 宋体;"&gt;正式成员。&lt;/span&gt;F#&lt;span style="font-family: 宋体;"&gt;中的许多特性，比如不可更改&lt;/span&gt;(immutable)&lt;span style="font-family: 宋体;"&gt;的数据结构，声明性编程风格，强大的类型推断，所有东西都是表达式等，都让习惯了面向对象风格的程序员感到新奇。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: 宋体;"&gt;我个人觉得，&lt;/span&gt;F#&lt;span style="font-family: 宋体;"&gt;如果用于开发多线程并行计算程序，会有较高的开发效率，而函数式编程的特点，也会使它在科学计算中有较好的表现。但用于开发&lt;/span&gt;CRUD&lt;span style="font-family: 宋体;"&gt;之类的&lt;/span&gt;MIS&lt;span style="font-family: 宋体;"&gt;系统，至少目前还是免谈吧。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;strong&gt;9 &lt;span style="font-family: 宋体;"&gt;云计算&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Visual Studio 2010&lt;span style="font-family: 宋体;"&gt;集成了云计算开发的项目模板。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: 宋体;"&gt;云计算是一个说不完的话题。微软在这方面投入巨大。它精心打造了&lt;/span&gt;Azure&lt;span style="font-family: 宋体;"&gt;这个云计算平台。了解&lt;/span&gt;Azure&lt;span style="font-family: 宋体;"&gt;的最佳方法是看&amp;#8220;&lt;/span&gt;&lt;span style="font-size: 11.5pt;"&gt;DAVID CHAPPELL&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;&amp;#8221;的文章《&lt;/span&gt;INTRODUCING WINDOWS AZURE&lt;span style="font-family: 宋体;"&gt;》，这篇文章可以在微软网站上找到。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: 宋体;"&gt;虽然我个人认可云计算是一个大的发展方向，但对于中国，这个技术是一道远方的亮丽风景，&lt;/span&gt;&lt;span style="font-family: 宋体; font-size: 12pt;"&gt;&lt;strong&gt;仅供观赏&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family: 宋体;"&gt;。因为国内还没有一个成熟的云计算平台，而微软的&lt;/span&gt;Azure&lt;span style="font-family: 宋体;"&gt;目前又没有开放中国大陆的云计算购买服务，加上中国又有特殊的国情，所以一切都只是空中楼阁。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: 宋体;"&gt;云计算真正应用于国内，诸位请继续等待吧。&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;(转自：&lt;div&gt;http://blog.csdn.net/bitfan/archive/2010/03/03/5341985.aspx)&lt;br /&gt; &lt;/div&gt;&lt;img src="http://www.cnblogs.com/billqian/aggbug/2006762.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/billqian/archive/2011/04/06/2006762.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/billqian/archive/2011/01/12/1933714.html</id><title type="text">解析互联网的产品精神(转)</title><summary type="text">互联网的九个产品精神：　　1、关注用户：要以用户痛处为契机，把用户需求放在第一位。　　2、快速迭代，经过开源、云计算、网络商店降低的开发成本，先推出Minimally valuable product，每周更新，专注很少新功能，小团队，快动作，敏捷地开发验证，直到可解决用户痛处，然后才开始推广。　　3、数据导向：用互联网的特性获取用户使用轨迹，做A-B Test理解用户需求和选项，从中判断如何设计产品和排序功能。　　4、清晰定位：知道你的产品的核心需求和功能，两句话说清楚。清晰目标用户是谁，不能太广。用定位来挑选功能，避免功能膨胀。　　5、重视细节：产品经理必须是骨灰级玩家，对所有产品了如指掌</summary><published>2011-01-12T03:46:00Z</published><updated>2011-01-12T03:46:00Z</updated><author><name>Bill Qian</name><uri>http://www.cnblogs.com/billqian/</uri></author><link rel="alternate" href="http://www.cnblogs.com/billqian/archive/2011/01/12/1933714.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/billqian/archive/2011/01/12/1933714.html"/><content type="html">&lt;p&gt;互联网的九个产品精神：&lt;/p&gt;&#xD;
&lt;p&gt;1、关注用户：要以用户痛处为契机，把用户需求放在第一位。&lt;/p&gt;&#xD;
&lt;p&gt;2、快速迭代，经过开源、云计算、网络商店降低的开发成本，先推出Minimally valuable product，每周更新，专注很少新功能，小团队，快动作，敏捷地开发验证，直到可解决用户痛处，然后才开始推广。&lt;/p&gt;&#xD;
&lt;p&gt;3、数据导向：用互联网的特性获取用户使用轨迹，做A-B Test理解用户需求和选项，从中判断如何设计产品和排序功能。&lt;/p&gt;&#xD;
&lt;p&gt;4、清晰定位：知道你的产品的核心需求和功能，两句话说清楚。清晰目标用户是谁，不能太广。用定位来挑选功能，避免功能膨胀。&lt;/p&gt;&#xD;
&lt;p&gt;5、重视细节：产品经理必须是骨灰级玩家，对所有产品了如指掌，关注每个细节，在意每一个缺陷，把产品当作自己的baby。&lt;/p&gt;&#xD;
&lt;p&gt;6、打破陈规：不要被过去的思维束缚，才能开发出有创意的产品，有时候，一个小小的修改就可能是大大有价值的创意。&lt;/p&gt;&#xD;
&lt;p&gt;7、追求简约：不要太复杂，最简单的解决方案是最好的，要用简约的界面隐藏复杂的内涵。&lt;/p&gt;&#xD;
&lt;p&gt;8、整合领域：大部分的创新产品既不是山寨也不是突破式，而是结合不同领域的点子，形成新产品。&lt;/p&gt;&#xD;
&lt;p&gt;9、洞悉未来：看清楚方向可能就是成功的一半，要对产业有清晰的战略判断。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/billqian/aggbug/1933714.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/billqian/archive/2011/01/12/1933714.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/billqian/archive/2010/12/19/1910818.html</id><title type="text">普华永道、IBM、麦肯锡、埃森哲 (转)</title><summary type="text">1、普华永道： 各大公司到非洲去看大象，轮到普华永道的哥们儿，过去先跟大象说：我是普华永道的。大象就哭了，因为连大象都知道普华干的活辛苦。 然后他跟大象说：我们来非洲数大象。大象就乐了，原来普华永道还是不着四六靠审计吃饭。 最后他跟大象说：我们来非洲还打算招几头大象回公司上班，结果大象吓得一边哭一边掉头就跑。2、IBM 两个食人族到IBM上班，老板说“绝对不许你们在公司吃人，否则我立刻开除你们！”。  三个月下来大家相安无事，突然有一天老板把两个食人族叫到办公室大骂一顿： “不让你们吃人不让你们吃人，还吃，明天你们不用再来上班了！” 两个食人族收拾东西离开IBM，临出门时一个忍不住骂另一个：“</summary><published>2010-12-19T14:04:00Z</published><updated>2010-12-19T14:04:00Z</updated><author><name>Bill Qian</name><uri>http://www.cnblogs.com/billqian/</uri></author><link rel="alternate" href="http://www.cnblogs.com/billqian/archive/2010/12/19/1910818.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/billqian/archive/2010/12/19/1910818.html"/><content type="html">&lt;div&gt;1、普华永道：&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 各大公司到非洲去看大象，轮到普华永道的哥们儿，过去先跟大象说：我是普华永道的。大象就哭了，因为连大象都知道普华干的活辛苦。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 然后他跟大象说：我们来非洲数大象。大象就乐了，原来普华永道还是不着四六靠审计吃饭。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 最后他跟大象说：我们来非洲还打算招几头大象回公司上班，结果大象吓得一边哭一边掉头就跑。&lt;br /&gt;&lt;br /&gt;2、IBM&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 两个食人族到IBM上班，老板说&amp;#8220;绝对不许你们在公司吃人，否则我立刻开除你们！&amp;#8221;。 &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 三个月下来大家相安无事，突然有一天老板把两个食人族叫到办公室大骂一顿： &amp;#8220;不让你们吃人不让你们吃人，还吃，明天你们不用再来上班了！&amp;#8221;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 两个食人族收拾东西离开IBM，临出门时一个忍不住骂另一个：&amp;#8220;告诉过你多少遍不要吃干活儿的人，三月来我们每天吃一个部门经理，什么事都没有，昨天你吃了一个清洁工， 立刻就被他们发现了！&amp;#8221;&lt;br /&gt;&lt;br /&gt;3、麦肯锡&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 有一个老头，正在草地上放羊，忽然走来一个年轻人，年经人走到老头面前说：老先生，我可以为您服务，我将告诉您您的这群羊有几头，作为酬劳您需要给我一头羊。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 老头还未作答，年青人就开始了工作，年轻人用笔记本电脑无线上网，链接上NASA的内部网，调动低轨道卫星，把卫星遥感成像的图片再通过软件分析，数十分钟后，年轻人再次走到老头面前：老先生，您的羊群共有763头。说完后他抱起一只羊就要走。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 老头这时叫住了年青人：年青人，如果我能猜出你就职的公司，你可不可以把酬劳还给我？可以，年轻人答。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 你是麦肯锡公司的，老头说。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 年轻人很惊讶，您怎么知道？&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 老头笑了：因为你具有该公司咨询人员的所有特点啊，第一.你不请自来。第二.你告诉我的分析结果是我本就知道的。第三.你抱走的不是羊，而是我的牧羊犬。&lt;br /&gt;&lt;br /&gt;4、埃森哲&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 上周末，我去一间熟悉的西餐厅吃晚饭，发现餐厅内部刚装修过，餐厅服务生的装束也有所改变。我发现服务生们上衣夹克的口袋里都多放了一把勺子。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   于是我叫来相熟的亨利，向他打听最近的变化。亨利告诉我，餐厅老板最近请了埃森哲公司作业务流程重组的咨询，以改进餐厅的工作效率和服务质量。埃森哲的咨 询顾问经过两个礼拜的现场工作，发现33.333％的餐桌在就餐过程中都会发生一次勺子掉在地上的情况。而以往服务生需要单跑去厨房一次给客人换干净勺 子。如果在服务生的夹克口袋里放一把备用勺，则他们不必单独跑一次厨房，可以在下次上菜时顺路换掉勺子，这样可以将服务生的劳动生产率提高 17.365％。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 正说着，我旁边的桌子响起叮当一声：他们的勺子掉地上了。只见亨利从容地从口袋里拿出备用勺，及时给客人换上。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 看到这个场景，我对埃森哲公司的咨询建议相当佩服。这时，我又留意到所有服务生西裤的拉链外有一根很细的绳子，其质地和隐性胸罩带一样，所以较难发现。&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 于是，我又向亨利提出这个新问题：&amp;#8220;你们这根细绳儿是干嘛用的？&amp;#8221;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;   亨利环顾了一下，将身子倾斜过来，小声说道：&amp;#8220;好眼力！不是每个人都象您这样观察入的！&amp;#8221;亨利接着说：&amp;#8220;埃森哲公司通过对餐厅工作流程的现场观察和数据分 析，发现服务生每班次平均要小便5.125次，而每次小便完平均要花1.306分钟洗手和烘干手。埃森哲的顾问建议我们在那儿上面系上这根绳子，以后每次 小便直接把自己那活儿拉出来，可以避免手接触到，这样就可以省去洗手和烘干的麻烦，既提高服务生的劳动生产率，又节约餐厅的水费和电费．．．&amp;#8221;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 听完亨利的介绍，我对埃森哲公司更敬佩了。不过，我还有一点小小的疑问：&amp;#8220;亨利啊，你们可以用绳子把自己那活儿拉出来，但是怎么能不用手把它给放回去呢？&amp;#8221;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 亨利又一次谨慎地环顾左右，将身子倾得更低，用更小的声音对我说： &amp;#8220;我不知道其他人是怎么解决的，但我是用的那把勺子。&amp;#8221;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/billqian/aggbug/1910818.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/billqian/archive/2010/12/19/1910818.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/billqian/archive/2010/09/30/1839301.html</id><title type="text">软件编程21法则</title><summary type="text">[英文出处]：21 Laws of Computer Programming [译文出处]：外刊IT评论  任何一个有经验的程序员都知道，软件开发遵循着一些不成文的法则。然而，如果你不遵循这些法则也并不意味着会受到惩罚；相反，有时你还会获得意外的好处。  下面的就是软件编程中的21条法则： 任何程序一旦部署即显陈旧。 修改需求规范来适应程序比反过来做更容易。 一个程序如果很有用，那它注定要被改掉。...</summary><published>2010-09-30T02:46:00Z</published><updated>2010-09-30T02:46:00Z</updated><author><name>Bill Qian</name><uri>http://www.cnblogs.com/billqian/</uri></author><link rel="alternate" href="http://www.cnblogs.com/billqian/archive/2010/09/30/1839301.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/billqian/archive/2010/09/30/1839301.html"/><content type="html">&lt;div id="OSChina_News_12178"&gt; 								&lt;p&gt;[英文出处]：&lt;a href="http://www.devtopics.com/21-laws-of-computer-programming/"&gt;21 Laws of Computer Programming&lt;/a&gt;&lt;br /&gt; [译文出处]：&lt;a href="http://www.aqee.net/2010/09/30/21-laws-of-computer-programming/" target="_blank"&gt;外刊IT评论&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;任何一个有经验的程序员都知道，软件开发遵循着一些不成文的法则。然而，如果你不遵循这些法则也并不意味着会受到惩罚；相反，有时你还会获得意外的好处。&lt;/p&gt;  &lt;p&gt;下面的就是软件编程中的21条法则：&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;ol&gt;&lt;li&gt;   任何程序一旦部署即显陈旧。  &lt;/li&gt;&lt;li&gt;   修改需求规范来适应程序比反过来做更容易。  &lt;/li&gt;&lt;li&gt;   一个程序如果很有用，那它注定要被改掉。  &lt;/li&gt;&lt;li&gt;   一个程序如果没用，那它一定会有很好的文档。  &lt;/li&gt;&lt;li&gt;   任何程序里都仅仅只有10%的代码会被执行到。  &lt;/li&gt;&lt;li&gt;   软件会一直膨胀到耗尽所有资源为止。  &lt;/li&gt;&lt;li&gt;   任何一个有点价值的程序里都会有至少一个bug。  &lt;/li&gt;&lt;li&gt;   原型完美的程度跟审视的人数成反比，反比值会随着涉及的资金数增大。  &lt;/li&gt;&lt;li&gt;   软件直到被变成产品运行至少6个月后，它最严重的问题才会被发现。  &lt;/li&gt;&lt;li&gt;   无法检测到的错误的形式无限多样，而能被检测到的正好相反，被定义了的十分有限。  &lt;/li&gt;&lt;li&gt;   修复一个错误所需要投入的努力会随着时间成指数级增加。  &lt;/li&gt;&lt;li&gt;   软件的复杂度会一直增加，直到超出维护这个程序的人的承受能力。  &lt;/li&gt;&lt;li&gt;   任何自己的程序，几个月不看，形同其他人写的。  &lt;/li&gt;&lt;li&gt;   任何一个小程序里面都有一个巨大的程序蠢蠢欲出。  &lt;/li&gt;&lt;li&gt;   编码开始的越早，花费的时间越长。  &lt;/li&gt;&lt;li&gt;   一个粗心的项目计划会让你多花3倍的时间去完成；一个细心的项目计划只会让你多花2倍的时间。  &lt;/li&gt;&lt;li&gt;   往大型项目里添加人手会使项目更延迟。  &lt;/li&gt;&lt;li&gt;   一个程序至少会完成90%，但永远完成不了超过95%。  &lt;/li&gt;&lt;li&gt;   如果你想麻烦被自动处理掉，你得到的是自动产生的麻烦。  &lt;/li&gt;&lt;li&gt;   开发一个傻瓜都会使用的软件，只有傻瓜愿意使用它。  &lt;/li&gt;&lt;li&gt;   用户不会真正的知道要在软件里做些什么，除非使用过。  &lt;/li&gt;&lt;/ol&gt; 			&lt;/div&gt;&lt;img src="http://www.cnblogs.com/billqian/aggbug/1839301.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/billqian/archive/2010/09/30/1839301.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/billqian/archive/2010/08/19/1803677.html</id><title type="text">软件产品在什么情况下一定要走精品路线</title><summary type="text">我最近一直思考这个问题。下文暂且使用目前比较流行的说法，原子经济 vs 比特经济 原子商品的边际成本不为零。比如小车，一辆宝马和一 辆QQ的制造成本是不同的，做5辆QQ和5万辆QQ，每台车的成本摆在那儿，所以原子产品有贵的有便宜的，消费者可以根据自己的消费能力去购买不同档次的 产品。对于原子商品，品质100可以卖100块钱，品质60可以卖60块钱，消费区间能拉开。 而对于比特商品，软件，成本集中在...</summary><published>2010-08-19T08:39:00Z</published><updated>2010-08-19T08:39:00Z</updated><author><name>Bill Qian</name><uri>http://www.cnblogs.com/billqian/</uri></author><link rel="alternate" href="http://www.cnblogs.com/billqian/archive/2010/08/19/1803677.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/billqian/archive/2010/08/19/1803677.html"/><content type="html">&lt;p&gt;我最近一直思考这个问题。下文暂且使用目前比较流行的说法，原子经济 vs 比特经济&lt;br /&gt;  &lt;br /&gt;  原子商品的边际成本不为零。比如小车，一辆宝马和一 辆QQ的制造成本是不同的，做5辆QQ和5万辆QQ，每台车的成本摆在那儿，所以原子产品有贵的有便宜的，消费者可以根据自己的消费能力去购买不同档次的 产品。对于原子商品，品质100可以卖100块钱，品质60可以卖60块钱，消费区间能拉开。&lt;br /&gt;  &lt;br /&gt;  而对于比特商品，软件，成本集中在初期，出 第一份拷贝，到出第1万份拷贝，每份拷贝的边际成本约等于零。比如我们做一个在线斗地主，服务器搭起来后，有5个用户，和有5000个用户，对我们来说成 本是一样的。这种边际成本为零的商品，消费者自然会要求你免费。即使你不免费，由于它复制几乎不花成本的特点，自然也会有人帮你免费，那就是盗版和破解， 于是你就&amp;#8220;被免费&amp;#8221;了&lt;br /&gt;  &lt;br /&gt;  所以，对于免费的产品，品质是100，和品质是60，消费者同样都不用付钱的情况下，自然会去选择品质100的产 品。品质60的会一点市场也没有。品质100的产品有了众多用户后，它才可能通过交叉补贴或者后向广告等其他方式来赢利，而品质60的产品则直接出局，非常残酷。&lt;br /&gt;  &lt;br /&gt;  就像我去年做一个类似GOOGLE手机地图的导航软件，别人看了后多数会问：这和GOOGLE手机地图有什么差别？给我个理由来使用你这软件。实际上我们做完这套软件，自己需要找路时仍然是用GOOGLE地图来搜索信息和定位。当然这个项目的投资者最后一分钱也没收回来。&lt;br /&gt;  &lt;br /&gt;  一 件商品只有边际成本不为零的时候，才会有消费区间，做到60分的产品才会有生存空间。比如软件搭载了技术支持服务，如用友的ERP，它在软件上捆绑了人工 的技术支持服务，卖给1家企业和卖给10家企业，人工服务的边际成本不为零，所以ERP类软件会有价格差异，软件做得差一点也会有资金不宽裕的小企业买 单。&lt;br /&gt;  &lt;br /&gt;  看官可以参考一下这篇文章：《开发者:苹果App Store游戏根本不挣钱》  http://www.pcpop.com/doc/0/407/407455.shtml 。文章说，一个在苹果App  Store上排名第34位的应用，保持每天有30-35次的下载量，在苹果扣除了相关费用后，开发者每天只能获得20美元左右的收益。折算下来一个月只有 4000RMB左右的收入。而iPhone的应用已经号称有10万个了，无数边际成本为零的软件，几乎没赚到什么钱。&lt;/p&gt;  &lt;p&gt;综上，我认为可以得到下面这么几个结论：&lt;/p&gt; &lt;p&gt;1、边际成本为零（或近似为零）的产品，一定会进入免费市场 &amp;nbsp;&lt;/p&gt; &lt;p&gt;2、在免费市场中，产品一定要走精品路线&lt;/p&gt; &lt;p&gt;3、纯软件是边际成本为零的比特商品，&lt;/p&gt; &lt;p&gt;所以，我思考的结论是：如果想做纯软件就一定要走精品路线，把品质尽量做好；如果软件自身水准达不到业内领先，做个六七成水准就拿出来卖，那么最好捆绑上一些边际成本不为零的原子商品，比如人工技术支持服务、硬件电路板，这样避免开在免费世界里竞争，才会有生存的可能。 &lt;/p&gt;   &lt;p&gt;著作权声明：本文由&lt;a href="http://www.walzer.cn/"&gt;Walzer&lt;/a&gt; 原创，欢迎转载分享。请尊重作者劳动，转载时保留该声明和作者博客链接，谢谢！&lt;/p&gt; &lt;p&gt;Walzer的微博： &lt;a href="http://t.sina.com.cn/walzer/"&gt;http://t.sina.com.cn/walzer/&lt;/a&gt; &lt;/p&gt;&lt;img src="http://www.cnblogs.com/billqian/aggbug/1803677.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/billqian/archive/2010/08/19/1803677.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/billqian/archive/2010/07/05/1771283.html</id><title type="text">Tiger Woods 和工资</title><summary type="text">最近老是被人追问公司能开多少工资的问题，晚上看到电视上放的一个节目，谈到这个问题很有意思，记录一下：Tiger Woods从来不关心自己拿多少钱，他说过这样的话，自己是打球的，如果球打的最好，那么不太可能拿第二名的工资；</summary><published>2010-07-05T05:10:00Z</published><updated>2010-07-05T05:10:00Z</updated><author><name>Bill Qian</name><uri>http://www.cnblogs.com/billqian/</uri></author><link rel="alternate" href="http://www.cnblogs.com/billqian/archive/2010/07/05/1771283.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/billqian/archive/2010/07/05/1771283.html"/><content type="html">&lt;p&gt;最近老是被人追问公司能开多少工资的问题，晚上看到电视上放的一个节目，谈到这个问题很有意思，记录一下：&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Tiger Woods从来不关心自己拿多少钱，他说过这样的话，自己是打球的，如果球打的最好，那么不太可能拿第二名的工资； &lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/billqian/aggbug/1771283.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/billqian/archive/2010/07/05/1771283.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/billqian/archive/2010/06/09/1754716.html</id><title type="text">用C#保存网页为mht文件</title><summary type="text">1. 增加 COM ReferenceMicrosoft CDO for Windows 2000 Library  (C:\WINDOWS\System32\cdosys.dll) 2. 程序：  CDO.Message msg = new  CDO.MessageClass(); CDO.Configuration cfg = new  CDO.ConfigurationClass(); ms...</summary><published>2010-06-09T06:14:00Z</published><updated>2010-06-09T06:14:00Z</updated><author><name>Bill Qian</name><uri>http://www.cnblogs.com/billqian/</uri></author><link rel="alternate" href="http://www.cnblogs.com/billqian/archive/2010/06/09/1754716.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/billqian/archive/2010/06/09/1754716.html"/><content type="html">&lt;p&gt;1. 增加 COM Reference&lt;br /&gt;&lt;strong&gt;Microsoft CDO for Windows 2000 Library&lt;/strong&gt;  (C:\WINDOWS\System32\cdosys.dll)&lt;/p&gt; &lt;p&gt;2. 程序：&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: Arial;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CDO.Message msg = new  CDO.MessageClass();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CDO.Configuration cfg = new  CDO.ConfigurationClass();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  msg.Configuration = cfg;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; msg.CreateMHTMLBody&lt;strong&gt;("http://www.sina.com.cn",&lt;/strong&gt;  CDO.CdoMHTMLFlags.cdoSuppressAll, "", "");&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: Arial;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  msg.GetStream().SaveToFile&lt;strong&gt;("c:\\a.mht",&lt;/strong&gt;  ADODB.SaveOptionsEnum.adSaveCreateOverWrite);&lt;/span&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/billqian/aggbug/1754716.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/billqian/archive/2010/06/09/1754716.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/billqian/archive/2010/06/07/1752954.html</id><title type="text">觉得为时已晚的时候，恰恰是最早的时候。</title><summary type="text">我荒废的今日，正是昨日殒身之人祈求的明日。觉得为时已晚的时候，恰恰是最早的时候。幸福或许不排名次，但成功必排名次。请享受无法回避的痛苦。</summary><published>2010-06-07T01:18:00Z</published><updated>2010-06-07T01:18:00Z</updated><author><name>Bill Qian</name><uri>http://www.cnblogs.com/billqian/</uri></author><link rel="alternate" href="http://www.cnblogs.com/billqian/archive/2010/06/07/1752954.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/billqian/archive/2010/06/07/1752954.html"/><content type="html">&lt;p&gt;&lt;strong&gt;我荒废的今日，正是昨日殒身之人祈求的明日。&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;觉得为时已晚的时候，恰恰是最早的时候。&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;幸福或许不排名次，但成功必排名次。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;请享受无法回避的痛苦。&amp;nbsp;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/billqian/aggbug/1752954.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/billqian/archive/2010/06/07/1752954.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/billqian/archive/2010/01/29/1659167.html</id><title type="text">[转帖]能感动天地的老人，你拿什么来感动CC-TV</title><summary type="text">９３岁的他静静地走了。无数活着的人在口口相传中记住了他&amp;#8212;&amp;#8212;蹬三轮的老人白芳礼。这不是神话：这位老人在７４岁以后的生命中，靠着一脚一脚地蹬三 轮，挣下３５万元人民币，捐给了天津的多所大学、中学和小学，资助 了３００多名贫困学生。而每一个走近他的人都惊异地发现，他的个人生活几近乞丐，他的私有财产账单上是一个零。他一年四季从头到脚穿戴的总是不配套的衣衫 鞋帽，都是他从街头路边或垃...</summary><published>2010-01-29T05:26:00Z</published><updated>2010-01-29T05:26:00Z</updated><author><name>Bill Qian</name><uri>http://www.cnblogs.com/billqian/</uri></author><link rel="alternate" href="http://www.cnblogs.com/billqian/archive/2010/01/29/1659167.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/billqian/archive/2010/01/29/1659167.html"/></entry><entry><id>http://www.cnblogs.com/billqian/archive/2010/01/29/1659092.html</id><title type="text">SharePoint: 设置People or Group字段默认值为当前用户</title><summary type="text">check the code below: [代码]设置其他字段的默认值： Using Javascript to Manipulate a List Form  Field</summary><published>2010-01-29T03:41:00Z</published><updated>2010-01-29T03:41:00Z</updated><author><name>Bill Qian</name><uri>http://www.cnblogs.com/billqian/</uri></author><link rel="alternate" href="http://www.cnblogs.com/billqian/archive/2010/01/29/1659092.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/billqian/archive/2010/01/29/1659092.html"/></entry></feed>
