我们的环境:皆因微软而起,又因微软而终。
第一章:.net篇。
我们以一个寓言开头: 庄周家境贫寒,于是向监河侯借粮。监河侯说:“行,我即将收取封邑之地的税金,打算借给你三百金,好吗?”庄周听了脸色骤变忿忿地说:“我昨天来的时候,有谁在半道上呼唤我。我回头看看路上车轮辗过的小坑洼处,有条鲫鱼在那里挣扎。我问它:”鲫鱼,你干什么呢?‘鲫鱼回答:“我是东海水族中的一员。你也许能用斗升之水使我活下来吧。’我对它说:”行啊,我将到南方去游说吴王越王,引发西江之水来迎候你,可以吗?‘鲫鱼变了脸色生气地说:“我失去我经常生活的环境,没有安身之处。眼下我能得到斗升那样多的水就活下来了,而你竟说出这样的话,还不如早点到干鱼店里找我!’”
.net发布有7年了,但是微软有一点做得非常非常不好:在不断发布新版本Framework的时候,却没有去实现.net的大规模普及。套用微软官方的术语:您可以选择我们的Vista系统,已经内置了.netframework3.0.Windows7则内置了3.51.如果你去相信这些与现实世界不着边的鬼话,那么你就是上面故事中的那条鱼。现实世界是VISTA的装机率很不乐观,而装机量最大的XP则根本就没有内置任何版本的.net.2010年之前(也就是监河侯收税之前),你仍然会面临很多的XP客户。
所以,至今仍然有一个最根本的问题摆在我们这些.net程序员面前:客户装了.netFramewok没有?如果没有装,你的程序写得再好再漂亮都是徒劳。你怎么去让他装?怎么和他解释这个必要性?如果他不愿意怎么办?能不能实现自动化安装?从前我在一些朋友的博客里也时常留言有这个观点,无外乎归纳出这么一种解决办法:
在项目发布中把.net集成封装进去,让它在客户那里实现自动安装。
这种做法固然是可取并且是必须的,但是存在两个缺陷:
如果我们发布的是不需要安装即可运行的绿色程序怎么办?
把2.0集成进去还勉强可以接受,但是如果程序中使用到3.0甚至是3.5的技术,难道你要把60多M的3.0(忘记是多少了,反正是大于或等于60M)和180多M的3.5也集成进去?记得有一位朋友曾经在某篇博客的留言中说,对于企业级程序,集成这些进去是可以接受的。但是,现实中没有没有那么多的“企业级”。我们需要的是实实在在的面向广大群众。以他们能够接受的方式来传播我们的程序。
面对客户,你不能以程序员的观念去和他们谈问题,他之所以找你做程序,是因为你是程序员,而他不是
所以,“可靠性”、“易于开发”、“易于移植”、“稳定性好”等等这些字眼,对客户来说,全是扯蛋,他们最关心的就是一点:“方便使用”。
我的解决方案,谈不上能够本质上得到解决,只能说是3个建议,本着上面提到的几点:
如果你的应用程序面向群众广泛,那么,只能建议你最低最低限度的,只使用2.0就够了。然后封装个23M的framework进去。至于LINQ,拉姆达表达式之类的概念,还是等你拥有了比较稳定的客户群体之后再去在版本升级中考虑吧。要知道,好事不出门,坏事传千里,如果在面向大众化的程序中要求安装3.0和3.5,90%会遇到某个热门论坛或者某个热门评论说“要装个什么百多M的东西”、“为什么我的电脑不能运行”,“建议大家不要下载”的时候,足以给你造成很大的客户损失,到时候你就是丞相遇到兵了,个中滋味就慢慢体会吧。今天是2008年12月6日,这个建议足以保证在未来2年内有效。
如果你的程序是针对性的面向某些客户群体,那么可以使用3.0和3.5,但是一定要准备好各种各样的台词,以花言巧语、诱骗、欺诈、甚至是威胁来宣扬.net的必要性(对于公司企业客户,他们是可以接受的),因为你要时刻警惕来自Java、PHP、WIN32等竞争对手公司的商业性贬损。要怪就怪微软把这种本来是他们该做的事情丢在我们头上。
“ASP好还是JSP好,JSP好还是ASP.NET好,ASP.NET好还是PHP好,.net好还是JAVA好……”,这样的月经话题时常出现在各大程序员社区,并且已经被视位弱智议题。但是,面对现实情况,你必须有能力向客户解释清楚:为什么要用.net开发,它的好处在哪里,为什么别人用JAVA开发而你不用,为什么别人用VB6,VC6而你不用,为什么别人用PHP而你不用……,以客户能够理解的方式,以有利于客户的观点来阐述兼容性、稳定性、版本支持、易于二次开发等问题,而不要去谈真泛型和假泛型、单一继承和多重继承、字符串操作效率等等客户不关心的东西。
最幸运的一点,如果你本来就是为VISTA(以及更高版本OS)系统开发程序(例如VISTA优化大师),那么什么都不需要担心了。
基于我们的职业着想,亲自为我们自己的亲戚、朋友、面对面的客户装上.net,也许你不能为天下所有XP用户都做这个事情,但是当你的身边人能够以一种良好的体验来感受到你的程序自身所带来的便利性和帮助性的时候,他们自然会为你做义务推广,到那时,客户们也就不介意你那个“百多M的东西”了。这不是帮助谁,而是为你自己。做的人多了,客观上自然也就会体现出效果了。当然,前提条件是应用程序自身要做好,要不然暴雪或EA也不敢要求客户保证“directX9.0C”(这东西同样也是20多M,但是XP-SP2却内置了,你说微软它歹毒不?)。
写给“XX花园后续版”、“XX论坛精简版”、“XX政府OEM版”的作者和电脑城装机人员,本着大家都是搞IT的同行,也请你们在工作中为我们稍微提供一些便利性,顺手放个framework进去,对大家都有益。将来的Windows7时代也同样要靠你们帮助的(那时候会有8.0、9.0问题)。