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