本文仅仅是一篇程序员职业行为建议,不存在任何源代码,也并不能自动化解决问题。但是相信做的人多了,自然也会有效果了。适用于两类读者:
1 使用 .Netframework开发应用程序(主要是桌面程序)的程序员
2 后台语言不限,工作中接触到css和javascript的WEB程序员。
总共分为两章:.Net篇和IE6篇
本文所描述的主题就是关于.NET的,所以,谢绝“应该以VC6或者VB6去做开发”之类的建议。
好久没有写文章了,最近有空回来瞎扯些怨念。正文开始:
我们的环境:皆因微软而起,又因微软而终。
第一章:.Net篇。
我们以一个寓言开头: 庄周家境贫寒,于是向监河侯借粮。监河侯说:“行,我即将收取封邑之地的税金,打算借给你三百金,好吗?”庄周听了脸色骤变忿忿地说:“我昨天来的时候,有谁在半道上呼唤我。我回头看看路上车轮辗过的小坑洼处,有条鲫鱼在那里挣扎。我问它:‘鲫鱼,你干什么呢?’鲫鱼回答:‘我是东海水族中的一员。你也许能用斗升之水使我活下来吧。’我对它说:‘行啊,我将到南方去游说吴王越王,引发西江之水来迎候你,可以吗?’鲫鱼变了脸色生气地说:‘我失去我经常生活的环境,没有安身之处。眼下我能得到斗升那样多的水就活下来了,而你竟说出这样的话,还不如早点到干鱼店里找我!’”
.Net发布有7年了,但是微软有一点做得非常非常不好:在不断发布新版本Framework的时候,却没有去实现.NET的大规模普及。套用微软官方的术语:您可以选择我们的VISTA系统,已经内置了.netframework3.0。WINDOWS7则内置了3.51。如果你去相信这些与现实世界不着边的鬼话,那么你就是上面故事中的那条鱼。现实世界是VISTA的装机率很不乐观,而装机量最大的XP则根本就没有内置任何版本的.NET。2010年之前(也就是监河侯收税之前),你仍然会面临很多的XP客户。
所以,至今仍然有一个最根本的问题摆在我们这些.NET程序员面前:客户装了.NetFramewok没有?如果没有装,你的程序写得再好再漂亮都是徒劳。你怎么去让他装?怎么和他解释这个必要性?如果他不愿意怎么办?能不能实现自动化安装?从前我在一些朋友的博客里也时常留言有这个观点,无外乎归纳出这么一种解决办法:
在项目发布中把.NET集成封装进去,让它在客户那里实现自动安装。
这种做法固然是可取并且是必须的,但是存在两个缺陷:
面对客户,你不能以程序员的观念去和他们谈问题,他之所以找你做程序,是因为你是程序员,而他不是。
所以,“可靠性”、“易于开发”、“易于移植”、“稳定性好”等等这些字眼,对客户来说,全是扯蛋,他们最关心的就是一点:“方便使用”。
我的解决方案,谈不上能够本质上得到解决,只能说是3个建议,本着上面提到的几点:
第二章 WEB篇
第一次世界大战期间,同盟国开发了一种秘密武器,叫 NetScape,通过宣扬邪教信息来专杀协约国的政要。人都有七情六欲,协约国的政要们官位再大,也终究是人,也抵御不起这个诱惑,终于一个二个地败走,协约国眼看这损失惨重,于是也不甘视若,开发了一个同等威力的武器,叫 Internet Explorer,这个漂亮的玩艺让南斯拉夫的王储,费迪南大公给迷上了。天天迷恋于上网收集不健康信息,无心政务,国内流氓横行,分裂主义四起,激起民愤,最终爆发了世界大战。战争的结果是:协约国依靠强大的经济手段,免费将 Internet Explorer 空投到欧洲,彻底瓦解了同盟国人民,不言而喻,同盟国就这样战胜了。
Internet Explorer 实际上并不是免费的,再说,飞机飞那么远也要耗油的,谁来付钱呢?当然是同盟国赔了。同盟国中,尤其德国赔得最厉害,穷得连当初生产NetScape的鲁尔工业区都转手卖了几次。最要命的是,希特勒为了减少国内开支,对德国的科技公司大量裁员,德国的程序员穷困潦倒,纷纷逃离。
古人有云:狗急跳墙,穷则思变。这不,德国发毛了,联合起太阳帝国搞起 Java Applet,联合意大利共同开发了JavaScript,德国自己开发了新武器:Navigator。就这样,装备了三件武器的坦克开进了协约国的阿尔萨斯、洛林、波兰。这一切,都归功于德国的科学家阿尔索斯·古斯塔夫。它的观点是:
E = NJ2
Energy = Navigator × JavaScript × JavaApplet
旧协约国看到这个情况,慌了神了,张伯伦和罗斯福赶紧商议成立新的军事联盟,这其中,有两位人物发挥了举足轻重的作用,一位是美国富豪,保尔·盖茨,另一位是从德国逃出来的程序员,他的名字叫阿尔伯特·爱因斯坦。保尔提供资金支持,爱因斯坦提供技术支持,继续搞基于免费策略的“经济战术”,想要拖垮轴心国。爱因斯坦的观点是:
E = MC2 [爱因斯坦版本]
Energy = Mhtml× Jscript × ActiveX
正在这两个阵营打得水深火热的时候,俄罗斯携带着大批信仰E=MC2的部队站在了盟军一边。幸好地球是圆的,所以俄罗斯能够既在东方联合美军打太阳帝国,又在西方联合英美联军扫荡德意军队。结局注定了:易伯河会师标志着Navigator彻底没落,广岛事件和东北战役标志着JavaApplet被打入冷宫。但是,事情远远没有这么简单。
自从珍珠港事件之后,美国一直在研究太阳帝国究竟是使用了什么武器能够这么快速给自己带来如此惨重的伤害。终于,在中途岛战役中,美国获得了这个技术,并且秘密开发自己的新型全球战略。
在瓜分战后欧洲地盘后,世界格局开始变动了。在斯大林格勒战役中Navigator落入了俄罗斯手中,并且被改造成一个新的武器:firefox, 俄罗斯的宝林斯基教授指出:爱因斯坦的理论存在很多不稳定性和不安全性,而且核心技术掌握在美国人手中,这样很不利于俄罗斯统一世界,最终实现共产主义大社会的理想。于是,俄罗斯在E = NJ2的基础上,开始研究出新的理论观点:
E= FS2
Energy = Firefox × JavaScript × ActionScript
爱因斯坦理论的不完美性,同盟国也有发现,为了生怕俄罗斯制造出超级武器,爱因斯坦的继承人,同盟国的 史蒂芬·霍金 根据旧有的E=MC2和当年诺曼底战役和解放巴黎战役中缴获的Javascript,催生并强化了西欧盟军自己的Jscript。 并且提出了一个更富于时代需求的诠释:
E = MC2 [史蒂芬·霍金第一版本]
Energy = MSXML × Css ×JScript
柏林墙架起之后,欧洲国家心理很不是滋味:他娘的,你们两个要打架也别到我们的地盘来打。但是,这种话也只能在心里自我安慰一下,谁也没有胆量敢说出来。唉,还是暗地里慢慢来吧,将来有实力了再说。于是,一些欧洲国家向美国打了请示报告:“大哥,我们眼下缺这缺那的,煮顿饭吃都不容易,我们想自己搞个钢铁承包责任制,您看行不?”,大哥说:“去去去,要搞什么自己搞去,以后这种鸡毛蒜皮的小事少来烦老子”。于是,欧洲钢铁联盟就这样建立了,其实,他们内心想的是:“今天我管你叫大哥,明天我要你管老子叫爹”。
“古巴导弹危机”致使苏联的颜面尽失,为了报仇雪恨,宝林斯基已经针对史蒂芬·霍金的MSXML而开发出了更强悍的XMLHttpRequest级洲际导弹,射程更加精确。 苏联即将开展“切尔诺贝利”行动,以189枚核弹荡平欧洲。打算先杀鸡给猴子(美国)看。他们的路线图是这样的:
E = FX2
Energy = FireFox × XMLHttpRequest × XML
但是,这个美好的计划破产了,捷克斯洛伐克出卖了苏联,把这个风声透露给北约。为什么?是否记得“布拉格之春”事件?
就在核弹即将发射的前夜,一名北约特种部队士兵携带者一只短小精悍的AJAX型号无声枪,混入了克里姆林宫,暗杀了苏联总理,她的名字叫谭雅。并且从克格勃主任尤里的私人部队那里获得了不少机密资料。第三次世界大战终于没有爆发。根据这些机密资料,最终由北约司令部建立了适用于全球的终极防御理论:
E = EX2
Energy = ECMASCRIPT × XMLHttpRequest × XHTML
如今,苏联垮台了,美国也因为亚洲金融危机和雷曼兄弟公司破产带来的连锁性世界金融危机而元气大伤,还记得前面说过那个“欧洲钢铁联盟”吗?不知啥时候已经改名叫“欧洲联盟”了,趁着当年美国和苏联斗得你死我活,他们东方卖铁给苏联,西方卖米给美国,现在美国得管欧盟叫“谷哥”了。光搞经济不行,军事也要过硬,东方有个国家有句老话:“两手都要抓,两手都要硬”。欧盟强大了之后,史蒂芬·霍金终于可以不再被逼效力于美国了,于是他回到英国剑桥大学,再一次诠释了爱因斯坦的理论:
E = MC2 [史蒂芬·霍金第二版本]
Energy = GMail × Chrome × Cloud
与此同时,在世界各地分布着一些阴险的组织,尤其是最大的基地组织,长期以来,仗着美苏争斗而无人关注他们,于是便有了充足的时间和精力制造大规模杀伤性武器,他们有着共同的宗教信仰:
E = BS2
Energy = Browse × ActionScript × JavaScript
前面说到过美国曾经在二战中从太阳帝国那里缴获了秘密武器,如今,研发阶段已经成熟,这下,可以拿出来对付恐怖份子的大规模杀伤性武器,顺便给欧盟一个下马威,“小样的,你这吃里扒外的东西别得意,这个世界还是老子说了算”:
E = NS2
Energy = .Net × SilverLight × JavaScript
故事依然没有完结……
看到这里,也应该能够想象到,浏览器中最不争气,最不安全,最不稳定的,当属IE6以及那些旧有的基于微软专用技术开发的HTML格局。各种病毒、木马、就是通过IE6给放进来的。当然firefox和IE7、IE8也不是绝对的就安全,但是根据现实情况,相比之下,还是安全多了(谢绝死扣字眼)。
上面提到的安全性也许和我们无关,但是另一个重点:兼容性,就是和我们有关了。为了我们自己,为了我们不再因为IE6的兼容性而加班加点工作,能多一个客户告别IE6,就是为我们多带来一点希望。不要去等微软,微软铁定了心“我们的VISTA系统……”,也不要去等别人。人人等别人,无人是别人。一切都要从自己做起,看到一个客户,就宣扬一次IE6的坏处,哪怕是欺骗、诱惑、威胁、行贿……等等不限手段。
为了要做到斩草除根,我们该推荐的东西就不是Firefox,也不是chrome,更不是opera,而是IE7。IE7和非IE浏览器的兼容性已经是非常的相像,基于firefox做的测试开发,在IE7上面的兼容性都是非常好,Firefox可以和IE6共存,但是IE7不可能和IE6共存(那些多IE绿色版本不在考虑之列,那种东西是不可能进入寻常百姓家的)。装了IE7,就是格了IE6的命。
可能有人会说:“我装遨游,360浏览器等等等,也非常安全,没有必要升级到IE7(8)”,但是请注意,这篇文章是发布在什么地方的?是写给什么人看的?看这篇文章并且能够坚持看到这一段话的你,又是什么人? 99.99%都是程序员。你具备这种专业知识,并且拥有解决问题的能力,保证系统安全性是理所当然的,保证各个浏览器的兼容性也是理所当然的。而环顾我们的四周,千千万万个连firefox是什么东西都没听说过的人,你也就不要白费口舌去解释“基于XX内核”、“浏览器安全性”、“javascript漏洞”等等术语了。你最该做的事情,就是让他们装上IE7,不是为了使用IE7而装,而是为了“不再使用IE6”而装。同时也是为了你早日不再需要 try XMLHttpRequest catch{ new MSXML2 }。
好了
两个章节都只是一个工作建议,如果你是.NET程序员,你就该亲自为你身边的人们安装上FrameWork,如果你是WEB程序员,你就该尽可能让你身边的人永远不再使用IE6(window2000等有特殊原因的客户例外),在可能的情况下,不应该是你去被动地兼容它,而是应该放弃它。如果你是ASP.NET程序员,你就该两件事情都做。
*世界大战的故事纯属娱乐性质的虚构,请勿通报各国领事馆。
最好,打个义务广告:国内的.NET空间目前还是1.1比较多,建议不要买这种空间,目前已经没有必要开发1.1程序了。 国外空间基本都支持ASP.NET2.0,SQL2005。而且价格也要便宜过国内。一般300多至400RMB一年,而且还有另外一个彼此心照不宣的原因:把东西放国外比较有利于网站安全。godday(应该是这么写吧,懒得去查了)和另一个与它知名的服务商(忘记了,自己搜)那里就有。