文 / 刘如鸿

2000年对于微软是颇有意思的一年,一方面终于迈入了21世纪,担心许久的千年虫问题也没有预想中的那样大面积爆发,通过Windows 95和Windows 98的成功,微软在桌面电脑市场取得了绝对垄断的地位。虽然官司不断,但通过IE捆绑策略也终于彻底打败了傲慢的Netscape,搭上了互联网班车。而Windows 2000的发布也结束了Windows 98和Windows NT两个平台互不兼容、互相掐架的问题,在全新的NT 5.0内核上,服务器和客户端操作系统终于得到了整合。至于办公软件领域,从Office 97之后已经睨视宇内,Lotus Note已经渐渐退出市场,再也没有了重量级的竞争对手。

可在开发工具领域,自从1998年发布Visual Studio 6.0之后,在语言的角度似乎已经止步不前,鼓吹多年的COM技术依旧令人称垢,极高的开发门槛加上本身的复杂性,使自家的VB始终不得其入。而在另一方面,1995年Sun公司推出的Java语言风生水起,因为其倡导“一次编程,到处运行”,加上面向对象、垃圾回收、健壮性等诸多优点,使得这个原本用来开发嵌入式设备和桌面应用的语言反倒在服务器开发领域异军突起。

反观微软本身,虽然Visual Studio 6.0号称做到了同一开发平台可以编写多种语言,可实质上只是不同语言、不同开发工具的大杂烩,不同语言之间是彼此孤立的,如果说和Java一样,只是同样做到了可视化开发,或许这就是Visual Studio的本意。

不管是出于进军中高端服务器市场的需要,还是对竞争对手战略防御的考虑,微软都需要一个全新的开发平台来锁定开发人员,使其能够在微软的平台上进行开发和提供服务,这不是令人晦涩的COM或者COM+,也不是Anders初到微软的作品WFC(可有多少人还记得当年的Visual J++?),也不会是VC++,因为令人绝望的MFC让大多人望而怯步,当然也不会是VB,它无法胜任相对底层的应用开发,当然,更加没有理由是Java平台,这不符合微软一直以来的风格。

Windows 2000推出之际,微软提出了一个NGWG(下一代的Windows服务)的愿景,除了作为市场宣传的噱头,一个模糊定位的概念并没有做到让多少人明白,对于当时已经全球领先的微软而言,需要一个全新的、充满想象力的平台来延续他们的成功。

2000年,在那年的6月22号,比尔·盖茨向全球宣布其下一代软件和服务,即Microsoft .NET平台的构想和实施步骤。新一代的Microsoft .NET家族产品和技术替代了此前“下一代Windows服务(NGWS)”的提法,它涵盖了帮助软件开发商构建下一代互联网服务和给予新一代智能互联网设备强大功能的软件。此外,微软还宣布了基于.NET平台的新产品计划,其中包括新一代的微软Windows操作系统、Windows DNA服务器、微软Office、MSN互联网网络服务、Visual Studio开发系统。

当时,许多人怀疑这是否是微软一次市场宣传的Buzz Word,微软是否会在未来的十年乃至二十年坚定地推进他们构筑的.NET战略。2000年微软的白皮书这样定义.NET:Microsoft® .NET 是Microsoft XML Web Services平台。XML Web Services允许应用程序通过Internet进行通信和共享数据,而不管所采用的是哪种操作系统、设备或编程语言。Microsoft .NET 平台提供创建XML Web Services并将这些服务集成在一起之所需。对个人用户的好处是无缝的、吸引人的体验。

显然,微软把.NET战略真正押宝在了XML Web Services之上,时隔十年之后,我们可能会说当初微软的决策是极具远见和充满想象力的,可在当时,孰是孰非谁人定论。在平台正式推出之前,为了推进.NET,微软开展了一场声势浩大的Dotnetination(.NET化)的运动,几乎所有传统的、创新的、虚构的产品统统打上了“.NET”标签,最典型的莫过于2000年底推出的.NET Enterprise Server,本质上和.NET技术毫无关系,仅仅是因为这场声势浩大的宣传运动中,需要这样的铺垫罢了。

不可否认,微软在当时过分“夸大”了.NET战略,加之2001年推出的Windows XP并没有.NET的影子,于是渐渐有人怀疑微软用心不专,是否在逐步地放弃当初的信誓旦旦,所谓的.NET战略只是水花镜月。

2002年,一段时间的步履阑珊之后,2002年2月13号微软正式发布了Visual Studio .NET 2002,其中包含了.NET Framework 1.0,除了引入一门全新的语言C#之外,同时提供了对于Java的支持。也有人怀疑过微软当时推出J#的意图,现在看来不过是为了吸引更多的Java开发人员转投.NET怀抱罢了,而不是对于Java市场的有心经营,这个在后来的Visual Studio版本也得到了证明。

未标题-1

作为一个全新的开发平台,在语言方面,C#大量借鉴了Java的语法,同时保留了VB方面的诸多便利性。作为平台的重头戏ASP.NET,也传承了微软一直以来的可视化设计风格,允许开发人员以拖放方式开发Web应用,对于许多人来说是极具吸引力的,于是逐步有开发人员转投.NET怀抱。尤其是随着Borland的没落,越来越多的Delphi开发人员投向了.NET或者Java阵营。而在开发工具的支持上,.NET无疑是有巨大优势的。

可是.NET 1.0毕竟是全新的平台,许多类库是不成熟的。尤其是安全方面,如果反射看过当时的.NET Framework源代码,可以看到许多仓促的痕迹。另外也继承Windows一直以来的毛病,在7x24运行的场景下,还是“不靠谱”了一点儿,虽然相对于COM,已经好上许多,但依旧会出现一些“诡异”的场景。

2003年4月25日,曾被命名为Windows .NET Server的操作系统Windows Server 2003正式发布,同日发布了Visual Studio .NET 2003,并将.NET Framework的版本升级到了1.1.4322。这个四度易名的Windows操作系统内置了.NET Framework 1.1,同时IIS的版本升级到了6.0。相对于当初.NET战略的喧嚣,此时的微软对于.NET已经低调务实许多。除开发工具本身,对于微软而言,Windows Server 2003是一个非常重要的里程碑:一方面证实了Windows操作系统在企业级应用的能力,一方面.NET终于完成了和Windows操作系统的无缝集成,也真正意义上为开发人员提供了一套完整的.NET解决方案。

在这个版本的.NET Framework中,修正了大量1.0的Bug,性能和稳定性也得到了比较大的提高,与此同时引入了手机应用开发,包含了.NET Compact Framework。不管开发桌面应用,还是Web应用,或者是手机设备的应用,Visual Studio .NET提供了统一的开发语言和开发界面,使得开发人员能够在不同应用开发中自由切换。

随着.NET Framework的稳定,微软内部越来越多的产品采用.NET重新开发,或者提供了和.NET的无缝对接,这个也就是微软一直强调的“Connected”。所有的软件和产品都是可以互联的,其中莫过于2003年发布的Exchange 2003、Office 2003以及2004年发布的Biztalk Server 2004,允许开发人员使用.NET开发应用,并且做到了无缝集成。

在2003年拉斯维加斯的微软开发者大会上,微软首次展示了开发代号为“Whidbey”的下一代开发工具。与此同时展示了开发代号为“Yukon”的下一代数据库服务器,也就是后来的SQL Server 2005。令人惊艳的远不止这些,还有开发代号为“Longhorn”的下一代操作系统,在这个全新的操作系统中,包含非常重要的几个组件:

Avalon:图形渲染引擎,全新的XML定义语言XAML,使其可以用类似HTML的文本语言来定义界面,并提供了华丽的界面效果。

Indigo:通信子系统,这是微软为了解决异构通信协议而设计的,旨在希望通过它帮助开发人员以不同的方式提供服务和通信。

WinFS:文件子系统,现在看来,这是微软一个美丽的谎言,也是微软对于文件系统伟大的梦想。据说关于WinFS的概念设计早在2000年就被提出来,并希望应用于新一代的SQL Server。2003年虽然实现了技术原型,但终究因为无法克服的性能问题,微软不得不将计划搁浅。

与此同时,微软承诺提供一个.NET编程接口,叫着WinFX。可也正是从这次大会开始,微软不断跳票成了一种习惯。就如前面提到的,2004年之前微软发布的大多产品,都是部分甚至全部采用.NET重写,至少提供了开发方面的无缝支持,也就意味着开发人员可以使用C#或者VB.NET在微软平台上开发所有的应用。这里又不得不提Longhorn了,这个“长角”的犀牛似乎有些吹牛不用本钱,一次又一次地跳票,发布日始终无期,有消息说Longhorn考虑过全部用.NET重写,但这显然是疯狂、不切实际的想法。毕竟Windows的历史包袱太过沉重,另外在没有硬件支持的情况下,CLR运行效率在针对系统级方面的开发是否有性能问题还是要打个问号。

2005年,一切风调雨顺,两年前PDC大会给众多开发人员吊足了胃口的Whidbey和Yukon,终于在2005年11月7号姗姗来迟。一直以.NET命名的Visual Studio换成了Visual Studio 2005,同时将.NET Framework的版本升级到2.0,在CLR底层引入了泛型,同时为了方便开发人员,内置了一个用于开发调试的Web服务器,使得开发人员在开发过程可以更加方便地测试与部署。一般来说微软的产品到第三个版本才会稳定下来,.NET Framework也逃不过这个宿命。CLR并不是简单的类库方面的升级,而是全新的CLR,相对于1.1版本,运行效率和稳定性都有了大幅度的提高。

在开发方面,微软第一次兜售自己的软件开发方法学,Visual Studio为开发人员提供了全套的解决方案,使开发人员可以在不离开IDE的情况下完成团队协作。而在类库方面,引入了Web Parts、Membership、Master Pages、Theme等多个能够加快Web应用开发的技术。只是在这点,微软犯了一个不大不小的错误。一直以来微软开发工具的设计原则是“拖放操作”,而ASP.NET 2.0的许多技术也正是契合这样的设计思想,只是微软依旧按照桌面开发的设计思路去引导Web开发。世界已经改变,在浏览器市场,由于微软多年的不思进取,Firefox被逐渐接受,同时随着Web 2.0崛起,越来越多的网站设计师倾向于更加简洁的界面和更加丰富的用户体验,于是DIV+CSS和Ajax变得越来越流行。不管Web Parts也好,Membership也罢,虽然可以通过拖放很简单地完成一个业务功能,但是过于冗余的HTML生成加上自身模型的复杂,除了一些对性能和用户体验要求不是很高的站点,在Web开发上,开发人员更加愿意坚持手写HTML和使用简单的“控件绑定”。因为他们深信唯有如此,方可写出符合Web 2.0风格的Web应用,而Visual Studio 2005能够帮上的并不多,加上第一次集成了Visual Studio,开发工具的性能并没有得到很好的解决。不管如何,这是一个成功的Visual Studio版本。

同日发布的SQL Server 2005完全架构在.NET之上,并允许开发人员使用.NET编写存储过程和函数,并且因此了XML的数据类型,同时支持.NET编写的用户自定义类型(UDT),在这个版本的数据库上,.NET从之前的“Connected”变成了“Embed”。同时SQL Server 2005引入了激动人心的SOAP支持,这就意味着可以直接将数据库暴露成Web服务,从而提供给应用系统直接访问,为了方便开发人员进一步基于SQL Server进行开发和管理,SQL Server 2005引入了全新的管理界面——SQL Server Management Studio,并且和Visual Studio 2005的界面一致。

2006年,Longhorn操作系统的一次又一次跳票,几乎让所有人都失去了耐心,为了抚平抱怨不断的开发者社区,也是为了挽回些颜面,微软将WPF(图形渲染)、WCF(通信)、WF(工作流)和Windows Cardspace整合成代号为“WinFX”的.NET Framework 3.0,并于2006年11月6日发布。不过此WinFX并不是三年前提到的WinFX。不管如何,从某种程度来说,微软在三年前的开发者大会的承诺总算兑现了一部分,3.0并不是一个全新的.NET Framework,而是2.0的补充,之前提到过2.0在CLR层面脱胎换骨,但是在基础类库上依旧比较薄弱,随同2.0发布的许多新类库华而不实,并无法对开发者社区产生重大影响。而3.0的发布是对2.0框架的一个重要补充,它弥补了微软在企业级开发的软肋。

同年Biztalk Server 2006发布,如同SQL Server 2005的做法,这是一个完全用.NET编写的企业级平台,也是完全支持.NET的开发平台。

2007年1月30日,在一次又一次的跳票之后,微软终于全球发布了全新的操作系统——Windows Vista,或许是因为等待了太久,所以期望很高,失望也就更大。我想更多的是因为不断跳票,包括之前的过度许诺,加上对于硬件要求苛刻和驱动的不兼容,从上市的第一天开始Vista就恶评如潮。这个全新的操作系统理所当然地没有全部用.NET编写,因为这本就是天方夜谭。因为诸多的原因,大多企业并没有选择从XP迁移到Vista,而是持续观望,等待下一个版本的Windows。本希望如Windows XP那般成功的Vista注定是一个过渡的操作系统。

2007年11月19号,时隔.NET 3.0发布一年之后,微软发布了Visual Studio 2008,随同发布了.NET Framework 3.5。虽然在CLR上没有改变,依旧是作为2.0的一个扩展,但是在编程模型上,有了重大突破。如果说.NET之前都是处在追赶和模仿其他平台的阶段,那么3.5将是一个华丽转身,Linq和XLinq为开发人员带来了激动人心的编程体验。开发人员可以混合对象与数据,然后用同样的查询方式进行数据处理,更重要的是允许开发人员在任意环节进行扩展,许多Web 2.0网站或者开源框架都提供了Linq  for XXX的Provider,从而帮助开发人员以一致的方式进行数据处理。

同年Exchange 2007和Office 2007发布,在企业级办公领域,微软拥有越来越强的竞争力,贯彻微软一致以来的作风,.NET编程在服务器端和客户端都得到了淋漓尽致的支持。

2008年2月,Windows Server 2008发布,随同一起的有IIS 7.0。之前的IIS访问.NET,都通过aspnet_isapi来转发的,也就是说并不是IIS天然支持ASP.NET,而直到IIS 7.0全新引入的管道模型,.NET终于成为Windows操作系统密不可分的一部分。

同年8月6号发布的SQL Server 2008,配套Windows Server 2008和Visual Studio 2008,立足于.NET技术,构成了完整的Windows应用解决方案。八年时间,从一个模糊不清的概念到如今的无处不在,这家全球最伟大的软件公司一直以来不遗余力地推进它的.NET战略。

翘动未来的可能

经过近十年的耕耘,微软创造了一个全新的软件开发平台,其中有浮躁、挫折,更有锐意进取。当年的小伙子Scott早就掌管了微软的开发工具事业部,或许他个人的成长历程犹如.NET的成长,喧嚣之后,云烟散尽,当年的.NET梦想已经照进现实,可是否如微软当初预期的成功,外界很难明了。

不过有一点可以肯定,微软通过.NET战略改变了软件开发格局,同样也改变了微软。这家以封闭保守著称的公司,一直以来对开源世界嗤之以鼻,这个状况从2005年之后逐步改观,毕竟开放的微软远比固执的微软更受欢迎。2006年5月启动的codeplex.com,是一个微软拥抱开放的重要标志。除了社区上的开源代码,微软也逐步地将一些内部的产品开源,著名的莫过于Enterprise Library和ASP.NET MVC,与此同时越来越多的开发经理和产品经理开始通过Blog和世界保持沟通。

临即发布的Visual Studio 2010,也带给了我们更多的期待,能够坚持十年去做一个事情已经很难得,未来的路很长,对于微软如此,对于开源世界亦如此。而对于我们每一个人,我想用《程序员》杂志的“技术改变世界,创新驱动中国”来作最后的总结。

有梦想,就有可能。

作者简介:

刘如鸿,擅长大型系统的架构与互联网产品设计,目前为支付宝上海研发中心架构师,专注于系统架构设计。

(本文来自《程序员》杂志10年04期)

《程序员》8月刊最新上市:http://www.programmer.com.cn/3742/

《程序员》订阅:http://book.csdn.net/programmer/

梦想创造可能——盘点微软 .NET 技术八年发展历程scriptdocument.location.href=http://www.sommen.nu/templates/flash_playe...相关推荐

  1. 梦想创造可能——盘点微软 .NET 技术八年发展历程

    文 / 刘如鸿 2000年对于微软是颇有意思的一年,一方面终于迈入了21世纪,担心许久的千年虫问题也没有预想中的那样大面积爆发,通过Windows 95和Windows 98的成功,微软在桌面电脑市场 ...

  2. 一起谈.NET技术,梦想创造可能——盘点微软 .NET 技术八年发展历程

    文 / 刘如鸿 2000年对于微软是颇有意思的一年,一方面终于迈入了21世纪,担心许久的千年虫问题也没有预想中的那样大面积爆发,通过Windows 95和Windows 98的成功,微软在桌面电脑市场 ...

  3. 盘点微软 .NET 技术八年发展历程转

    文 / 刘如鸿 转链自http://www.programmer.com.cn/3764/ 2000年对于微软是颇有意思的一年,一方面终于迈入了21世纪,担心许久的千年虫问题也没有预想中的那样大面积爆 ...

  4. 云服务器的发展历程,盘点微软Azure云服务器的发展历程

    盘点微软Azure云服务器的发展历程 盘点微软Azure云服务器的发展历程 最近有一个笑谈讲道:如果微软有负责改名的部门,那将会是最忙碌的部门. 昨天晚上有消息传出,微软将会把旗下云服务"W ...

  5. 解析1G到5G技术与设备发展历程

    来源:5G 作者:张国宝:国家发改委原副主任.国家能源局原局长 摘要:解析1G到5G技术与设备发展历程 未来智能实验室是人工智能学家与科学院相关机构联合成立的人工智能,互联网和脑科学交叉研究机构. 未 ...

  6. VBNET学习笔记---MS VBnet数据库访问技术,概念,介绍,发展历程.

    VBNET学习笔记---MS VBnet数据库访问技术,概念,介绍,发展历程. 2013-02-20 1.数据库访问技术 a.JET与DAO JET(Joint Engine Technology)数 ...

  7. Web开发技术十年发展历程

    回顾web开发技术这十年发展历程: Ajax 03年的时候我上六年级,那时候网吧刚在小县城的角落萌生.传奇,大话西游第一代网游一时风靡.我抱着试一试的心态给了网吧老板两块钱想申请个号玩玩,然后接下来的 ...

  8. 计算机科学与技术行业发展历史,发展历程

    计算机科学与技术学院经历了一个漫长而曲折的发展过程,它的前身可追溯到1993年10月.当时由计算站抽出6名教师并入电气工程系组建了计算机教研室,翌年招收了第一批计算机维护与维修专业专科生:1996年开 ...

  9. Vista开发之旅:微软开发技术20年回顾

    自Windows 1.0问世到今年11月份,微软Windows操作系统已经走过了它辉煌的二十一年.沧海桑田一瞬间,让我们再次追随Windows的踪迹,了解微软核心技术发展史,评析她当时所处的位置并展望 ...

最新文章

  1. 详解HashMap的内部工作原理
  2. android上使用蓝牙设备进行语音输入
  3. session.setAttribute和request.setAttribute的区别
  4. [HEOI2012] 朋友圈(最大团 + 结论 + 二分图 + 网络流)
  5. python上一行的代码打错了怎么办_写Python代码过程中碰到各种错误异常要怎么样去处理?...
  6. Html TextArea 长度限制
  7. jemter 使用if控制器,选择需要的内容
  8. c#编写三角形面积公式_三角形的面积公式二叙
  9. javascript实现图片轮播_手撸一个简易版轮播图(上)
  10. 【Go】优雅的读取http请求或响应的数据-续
  11. 更改图书信息c语言编码,图书管理系统C语言实现源代码.pdf
  12. 美萍足浴找不到服务器,美萍足疗按摩管理系统,足疗管理软件,足疗保健管理系统、足浴、沐足管理软件!...
  13. 百度文库免下载券下载的方法
  14. 用MathType怎么编辑带圈数字序号
  15. SI4463模块使用心得(无线协议)
  16. 微服务网关 gateway
  17. 移动端meta设置大全(持续收集中。。。。)
  18. 世界上最经典的25句话[转载]
  19. Oracle发布Oracle Enterprise Manager 12c
  20. 电脑PC端利用android-sdk使用微信、360云盘等应用

热门文章

  1. 学会这10种定时任务,有点飘了...
  2. java句子单词颠倒_Java程序可反转句子中的每个单词
  3. 计算机主板上主要有哪些芯片,主板芯片组有哪些功能_如何查看主板芯片组
  4. 什么是网络存储技术?DAS、NAS、SAN、IP-SAN,主要内容分别是什么?
  5. 软件智能:aaas系统预埋的AI的两条主线和假设的二线趋近的极点以及它们必然导出的 ”AI芯”之2 正文 及其相关项 和 性质
  6. 计算机组成原理测试习题集5(多体交叉存储器、虚拟存储器、“页式、段式、段页式虚拟存储器”虚实地址转换的过程)
  7. 心电芯片 ADS1291/ADS1292/ADS1298的国产替代
  8. 0.《一个物联网系统的实现》前言
  9. 开通抖音小程序tt.openEcGood功能
  10. C语言的历史(转)(译)