在说正题之前先来两段小八卦。
Silverlight的老用户可能会知道,在微软发布该产品之初曾经推出一个名为Silverlight Streaming Service的免费服务,允许开发人员在上面Host 自己的Silverlight应用程序和相关的媒体资源。推出此服务的目的当然意在吸引开发者对Silverlight技术的兴趣,我就曾经在上面放过两个小程序。但是大约在一年前,微软悄无声息的取消了该服务,据说是为了让位于Azure平台。实际上这已经可以看作一个微弱的信号,表明微软的战略确实有转变的倾向,而且这个倾向早在一年前就开始了。
另一个消息就比较近了。有位开发者进入微软,并且目睹了微软内部团队在到底是HTML5还是Silverlight的问题上存在争论。他把自己的见闻发表了出来,引起了不小的风波。这之后又有微软的经理出来辟谣,说Silverlight和HTML路线不同,不存在矛盾云云。现在再来看这则旧闻,当真是空穴来风,未必无因。一个人的看法或许会失之片面,但是微软内部对自己的发展路线也存在分歧这一点,现实地来看应该是没有错的。
本来,一种技术的兴衰犹如人有生老病死,本不足论。但我以为这次的事件暴露出微软的一个痼疾,即自从GDI时代以后,微软在表示层的战略问题上一直是举棋不定的。
有多年经验的开发人员可能还会记起,微软在上个世纪末的时候曾经有一段时间非常钟爱HTML技术。不仅在Visual Studio的各个版本中都要求用户安装最新版的IE,许多软件界面,包括Windows平台开发SDK的安装界面都是用HTML来做的,还专门开发了强大的HTA技术,以及堪称Ajax鼻祖的异步Xml通信技术等一大堆新鲜玩意。但时间进入21世纪,微软开启.Net平台战略,这一块也就渐渐不再为人提起了。
进入.Net时代以后,微软主推的客户端表现层技术是WinForm。但说实话,Net 1.0和1.1版的WinForm远远达不到成熟的地步,直到2.0的时候才算大器堪成,但是微软这时候作了一件让很多开发人员吃惊的事情:在很多开发人员还在学习WinForm 2.0时,很快又推出可以说是彻底推倒重来的WPF,这在开发社区中引起了相当的震动和混乱。尽管从技术角度可以有很多理由来说明WPF的出现有其合理性,但还是有很多开发者因此对微软产生了技术平台更新换代过于频繁、罔顾保护开发者技术投资的恶评,很多社区因此弥漫着对微软不信任的态度。老实说,我认为微软当时推行3W(WPF/WCF/WF)的做法是过于冒进了。后来的事实也证明,当时的WPF无论在完整性和性能上都存在重大问题,WCF也受到过于繁琐等诟病,WF——大家都知道了——几乎被彻底改写。如果微软能够把节奏放慢一些,等这些技术更加成熟之后再推介给开发者,也许局面就会好得多。
如果你认真看看微软现在的表现层技术,你或许会为其数量而吃惊。客户端技术有WinForm和WPF,当然你还可以算上更老的MFC;浏览器上有ASP.NET,后来又变化出ASP.NET MVC,还有WPF/XBAP,再有Silverlight;为了引入Ajax自己开发了Atlas,后来又引用开源的JQuery。一个公司维护这么多风格迥异的表现层开发技术,这恐怕是史上绝无仅有的,就算能够以微软的财力维持这么多技术并行开发,在思想上引起的混乱也是不可低估的,前面的八卦也可以说明这一点。
我以前就认为,以微软在表现层上技术路线上的混乱现状,实际上早就到了非收缩战线不可的地步。如果微软自己人意见都无法统一的话,更遑论对外攻城略地?目前,基本上不再更新的WinForm和微软都不再有兴趣维护的Atlas(ASP.NET Ajax)已经有出局的迹象,ASP.NET和ASP.NET MVC的争论在很长时间内仍将继续,而这次被曝的是Silverlight,则有点出乎我的意料。毕竟在此之前Silverlight给人的印象是处于急速上升期并且微软也在力捧的技术,难道这么快就要被边缘化了?不论微软自己如何解释,Web已经不能算是一个可以把蛋糕无限做大的新兴市场,HTML5流行起来的话无论如何都会挤压Silverlight的生存空间。如果微软认真检讨一下自己的平台战略,能够定下一个明确的前进方向,那也未尝不是一件好事;但若让这种混乱的局面继续维持下去的话,对开发者将是难以承受之重,对网络时代已经成为后来者的微软来说,恐怕也不是什么好兆头吧。
最后还是用一个八卦结尾。有消息称,微软和Adobe的老总最近密会了相当长的时间。根本的理由当然是共同对付苹果,但是这两家坐到一起,在过去恐怕是难以想象的。移动平台这一块暂且按下不表,如果微软和Adobe彼此当真有兴趣的话,你认为这对Flash和Silverlight来说意味着什么?