在蹉跎中一路前行---谈Microsoft .NET战略
在蹉跎中一路前行
——谈Microsoft .NET战略
Eric Liu(刘如鸿) 2004年《程序员》杂志第六期
题记
四年的时间对于历史而言只是沧海一粟,而对于一个商业公司而言,却足以重生几回。从微软提出.NET战略到现在也接近四年了,而今的我们应该怎样去看待.NET四年走过的历程,怎样去评价.NET战略。
从职业角度来讲,过去的半年实在是疯狂,绝对的疯狂,至少我是这样。其中有很多原因,但最重要的一个原因实际上是我们公司正在经历的变迁。而今天所作的介绍从某种意义上可以说,许多人、尤其是我,度过了无数个不眠之夜、花费了无数心血来认真思考这场变革。但是从某种意义上讲,正是这一变革,促使比尔·盖茨在年初作出了重要决策。我们确实花费了全部时间来认真考虑新一代的互联网会是什么样,怎样把如此众多的部分,包括我们已经做过的一些开发,完美地结合起来,继续保持世界领先地位,成为100%的比尔·盖茨时代。
微软总裁兼首席执行官——史蒂夫·鲍尔默
.NET的激情起航
2000年6月22日,这是一个所有“微软人”都应该记住的日子,因为从这一天起,微软公司将下一场赌注,一场押上全部身家的世纪豪赌——这一天,比尔.盖茨向全球宣布其下一代软件和服务,即Microsoft .NET平台的构想和实施步骤。新一代的Microsoft .NET 家族产品和技术替代了此前“下一代Windows服务(NGWS)”的提法,它涵盖了帮助软件开发商构建下一代互联网服务和给予新一代智能互联网设备强大功能的软件。此外,微软还宣布了基于.NET 平台的新产品计划,其中包括新一代的微软Windows操作系统、Windows DNA服务器、微软Office、MSN互联网网络服务、Visual Studio开发系统。
这样的决定对于当时已经全球领先的微软而言,无疑是“押宝”,将未来十几年内的发展押给了他们构筑的.NET,当然也正是从那一刻开始,这家全球最大的软件公司也会不会遗力的去推进这个“伟大的梦想”。
那时的.NET
l .NET基础设施和工具
l .NET服务构造块
l .NET设备软件
用户永远是上帝,脱离用户讨论战略没有实际意义,为此除开倡导的平台核心技术以外,微软还承诺对于个人用户提供.NET用户体验,其中包括:
Windows .NET
MSN .NET
用户订购服务
Office .NET
bCentral for .NET
Visual Studio .NET
从这些文字我们可以看出,微软几乎可以将自己的全部产品加上“.NET”的字眼,但是那是不是因为着这就是“.NET”?
Everything is .NET
大概是为了强化.NET在人们心目中的印象,微软此时开展了一场dotnetialization(.NET化)运动,几乎所有传统的、创新的和虚构的产品都被打上“.NET”的标签。
为了扩展.NET战略的宣传,微软将其很多仍使用传统技术的产品都加上了“.NET”字眼。最典型的莫过于2000年底发布的.NET Enterprise Server系列。这套服务器软件虽然打上了.NET标签,但与.NET技术没有任何关系。
真正创新的思想是Web Service。微软当时极力推动Web Service从概念走入应用的最核心。
此外,微软还虚构了、或者至少是过早描绘了一些新的、以“.NET”命名的产品与服务。
一切都是.NET,微软这样做的结果就是将.NET这个品牌叫得路人皆知,而其实质概念则几乎没有人了解。除了提供一些开发工具的支持,其他方面的.NET推进有点做作的感觉,更加实际的来说.NET战略只是一个CLR的平台,其他方面的概念解释都让人牵强。
艰难晦涩的.NET改变终于带入微软走入了一个尴尬的境地,.NET Enterprise Server就如同水中望月,而Office XP的推出除了绚丽的图形表现界面以外,也没有太多东西让人发现和.NET有关,这是一段迷惘而痛苦的岁月。
迷惘
经过一年多的喧嚣,.NET已经渐渐热起来,越来越多的人开始使用.NET,至少开始关注这个平台,C#的正确发音已经尽人皆知。但是,看得出来,微软自己对于.NET的态度已经发生了微妙的变化。原来的计划太庞大,即使微软这样的巨人也无法掌控。前面的路应该怎么走?微软也产生了迷惘。
2001年5月31日Office XP正式发布,它显然不是“传说”中的Office.NET。微软强调这个XP版本加大的是“体验”(experience)及其网络的整合,而“用户体验”和与网络的融合都是“.NET战略”的一部分。但是,实质的改进有什么呢?除了返璞归真的平面图形菜单(戏剧性的是这样的界面成了日后众多软件界面模仿的对象),和内建支持了SOAP工具包及其联机搜索能力,我们发现和当初预想的Office.NET有天壤之别。
Office开发采取滚动方式进行,也就是在发布Office XP之前,下一版Office已经在开发中。据说部真的正在开发一个雄心勃勃的Office.NET。在这一激进的计划中,所有的访问都是通过Web Service来完成的,应用程序与网络的融合史无前例。不幸的是,这个产品最终流产,并且直接导致一个副总裁的辞职。究竟是技术上太不现实,还是微软意识到这个产品无法被用户接受?我们已经不得而知。
如果说Office曾经太激进,那么那些支持IT应用基础架构的应用服务器又是如何呢?在商业应用中的Commerce Server 2002,Biztalk Server 2002,Content Management Server 2002等等,虽然在一定程度加上了.NET Framework的支持,但是感觉有点是被微软强行联姻的“亲家”罢了,Visual Studio .NET对于其开发的支持依然是一种有心无力的感觉,并且这写服务器提供的并不是完整的托管类库,很大一部分功能仍然需要通过COM的方式来完成访问。.NET是一个庞大的战略,但是在短短的时间内希望完成到一个新的平台的迁移不是那么容易的事情,而此时.NET Enterprise Server系列的2002版本虽然在一个.NET的名头下依然是一个服务器群集,但是根本无法体现出.NET曾经的设想。
此时的VS.NET有点孤军奋战的感觉,毕竟和其他应用服务器的结合不是那么尽如人意,并且在Managed C++方面的表现也不足以作为系统级开发的利器,因此还是有些人在等待,而不会去考虑将已有的应用全部迁移到.NET平台上来。
所有这些情况,不仅体现了,同时也导致了微软的困惑。一个技术概念,如果不能与切实可用的产品结合起来,就会变成空中楼阁。
对于用户而言,最重要的是能够实际带来什么,而不是仅仅带来概念,经历了那段迷惘,微软对于.NET的理解终于“尘归尘,土归土”,穿过水花镜月,一路坚定的走来。
务实
在反思中摒弃浮躁,在务实中前行,经过两年时间的喧嚣和反思,.NET正在一点一点地走进现实应用。
也也就是从此刻开始,VS.NET成为一个最强大的开发平台,多语言集成的开发环境,开发人员不仅可以开发传统的Windows应用,能够开发Web应用程序,同时在移动开发,企业级组件方面都提供了良好的支持。
未来展望
但是我们相信,未来的.NET会成功,就如同微软一贯以来的成功,于是今天我们不是考虑是否使用.NET而是考虑何时选择.NET,当然,每一次的选择和放弃都是一种痛苦。
不知道是刻意或是纯粹出于偶然,营销名词和技术名称以及通用词汇竟然都在同一个时间点代表了同样的意义:过去与现在,传统与流行。
.NET重要技术思考
.NET Remoting
.NET Remoting恰恰是这个战略的牺牲品,虽然拥有与生俱来的优点,不过依然生不逢时。
Enterprise Services
Web Service
ASP.NET
这个世界没有绝对的完美,但是会一点一点走向完美,也许ASP.NET 2.0就有太多东西值得期待。
ADO.NET
相信大家不会忘记ADO(ActiveX Data Object),我想Windows上面数据库开发流行它功不可没,通过统一的接口来实现对于数据库的访问,从而屏蔽复杂的数据库访问协议。而到了.NET时代,ADO.NET进一步将数据访问“进化”,不要以为ADO.NET只是ADO的一个升级,在ADO的技术上提供了一个托管类库,除了都是数据访问框架,其他没有太多本质的关联。
虽然ADO.NET带来的震撼远远不如其他技术,可依然有很多东西值得我们去欣喜,毕竟创新总是一件好事情,何况是这个最成功的软件公司带来的创新,那么我们就来看看到底带来了什么:
1. 除了提供了传统ADO的Connection,Command以外,我们意外的没有看到Recordset这样的对象,而是提供了DataReader用来处理向前滚动的数据访问,最最重要的是加入了DataSet这样的概念,因为如此,我们能够实现很多数据库应用中需要的“Disconnected Application”,能够实现“InProc-Database”,而这一切,通过DataSet能够得到很好的解决。
2. 以更加透明的方式提供了数据库连接池,同时开发人员能够通过变成的方式控制具体的运行方式。
3. 提出DataAdapter,让开发人员能够以一种统一的方式去访问异种数据库,唯一的区别在于具体适配器的实现不同罢了。
4. “Typed Dataset”让开发人员能够非常方便的将DataSet 中的Table、Field映射到自定义类。
5. 对于XML提供了良好的支持,所有的DataSet都能够非常容易的系列化或者反系列化成XML文档。
当然ADO.NET不是万能的,在数据持久层(Data Presistent Layer)方面的支持显然不如Java,到现在为止都没有一个很好的O/R Mapping工具,而Java方面的Hibernate已经非常成熟,ADO.NET 2.0中的ObjectSapce也许能够改变目前的现状,就让我们耐心去等待,虽然需要到2005年。
“我们离破产只有18个月”,这是全球最成功的软件公司对于自己的告诫,于是他始终走在最前端,通过概念——务实——再概念的循环一次又一次的改变自己,同时改变了整个世界。
.NET改变了什么?
Microsoft,是否依旧“Micro”?
原先的Microsoft已经不再“Micro”,20多年的高速成长,这家从PC起家的软件公司已经早早称霸全球,除了在PC机方面保持绝对的垄断优势以外,在服务器市场,也已经发起对于高端应用的冲击,Windows 2000就是这个战役的经典之作,按照一贯的策略,微软依赖其价格优势和最简单的操作界面一点一点地换取中小企业的“芳心”,而对于大企业应用,虽然还无法改变其“小丑”形象,但是显而易见,那样的关系越来越“暧昧”。
评论界很多人都认为微软是一个以销售起家的公司,毕竟微软的技术从来不是最好,却能够笑到最后,我们无法否认过去很长一段时间微软是依靠Windows和Office的销售来支撑整个公司的高速运转,但.NET战略的推出则展现出微软从销售型转向服务型企业。毕竟随着技术的发展,在操作系统和办公软件上面的利润已经越来越透明,加上Linux的冲击和微软自身旧产品如Windows 98,Office 97等等已经足够“好用”,这样带来的结果必然是企业IT采购成本的大幅度缩减,微软自身也必须找寻更好的商业模式来获取稳定的收入。
将“Windows时代”带入“.NET时代”,对于微软公司而言,需要做的有很多很多,包括自身定位,包括如何打破用户的顾虑和恐惧,当然还有一直以来不是很友好的公关形象。于是.NET战略成了微软一个新的战场。
改变了开发人员
带来一个新的选择,带来更高的生产力,带来一种新的理念, 作为一线的开发人员,我们曾经为选择一个工具或者平台困惑、迷惘、狂热、追逐,最后坚定或者放弃。
这个世界本来就是一个需要不断探索的世界,.NET同样如此。从总体上来说.NET,经历从狂热到迷惘,在到务实,从而逐步走向成熟的过程。
在蹉跎中一路前行---谈Microsoft .NET战略相关推荐
- 华清远见智能家居ppt_怀揣梦想,一路前行——西安华清与西安培华实训集
2020年9月-10月,华清远见西安中心与西安培华强强联合展开了为期一个月的项目合作. 在华清远见西安中心老师的指导下,培华学子们干劲十足,纷纷动手操作,团队合作,完成了一项项优秀的作品~智能家居.智 ...
- 正视周期,创业在衰退中砥砺前行
比衰退更重要的是,早期投资机构正在面临结构性机遇. @数科星球原创 作者丨苑晶 编辑丨大兔 周期,犹如一只隐形的手,在2023年影响着芸芸众生.从经济周期.行业周期再到货币周期,这个隐形的手牵动着消费 ...
- Windows xp/2003 中安装虚拟网卡 Microsoft Loopback Adapter
Windows xp/2003 中安装虚拟网卡 Microsoft Loopback Adapter 方法 1 (命令行下安装) devcon.exe install %windir%\inf\net ...
- Windows XP中安装虚拟网卡microsoft loopback adapter
在安装虚拟机Vmware后,如果要实现本机和虚拟机的互通,则必须要求本机是有一个联网的环境.在没有该环境下可以通过安装虚拟网卡的形式来实现.在Windows XP中可以通过安装Microsoft Lo ...
- 当代计算机技术在建筑设备中的应用,计算机技术在建筑设计中应用浅谈.doc
计算机技术在建筑设计中应用浅谈 计算机技术在建筑设计中应用浅谈 [摘要]计算机技术在建筑设计中的应用有效地提高建筑设计工作效率和设计的准确度.本文就当前建筑设计中比较常用的计算机技术进行了浅谈,以期能 ...
- 新书上市 |《谁在掷骰子?》在“不确定性时代”中确定前行
这是一本关于不确定性,以及多年来人类如何试图在一个不确定的宇宙中不断前行的书. 1989 年,我的第一本科普书<上帝掷骰子吗?混沌之新数学>在英国出版.那本书是关于当时新发现的混沌现象的. ...
- Nutanix:疫情中积极前行,推动企业向云转型
一场猝不及防的疫情,席卷了整个中国,并且正在全球蔓延.疫情正在影响着全球的经济走势,并且也让人们的生产生活方式发生了巨大变化.有别于十几年前的非典期间,人们只能在家通过简单的电话或邮件交流,现在科技的 ...
- Tinyfool的2013年总结————在困惑和挣扎中试图前行
Tinyfool的2013年总结----在困惑和挣扎中试图前行 | Tinyfool的Blog Tinyfool的2013年总结----在困惑和挣扎中试图前行
- 0x000007FEFD72A06D 处(位于 Opencv_Test.exe 中)引发的异常: Microsoft C++ 异常: cv::Exception
错误 0x000007FEFD72A06D 处(位于 Opencv_Test.exe 中)引发的异常: Microsoft C++ 异常: cv::Exception,位于内存位置 0x0000000 ...
- 计算机专业在校生的十大生存法则:如何在代码丛林中砥砺前行
标题:计算机专业在校生的十大生存法则:如何在代码丛林中砥砺前行 亲爱的计算机专业在校生们,欢迎来到这个充满代码.逻辑和奇思妙想的世界!在这片神秘的领域里,你们将面临无数挑战和机遇.为了帮助你们在这片代 ...
最新文章
- 在博客中加入“花絮”效果
- 非常实用的 Python 技巧
- redis缓存java对象_Redis缓存系统-Java-Jedis操作Redis,基本操作以及 实现对象保存...
- python wxpython backend wxagg_如何刷新wx.面板正确地?
- 使用Spring Boot打造文件文档在线预览平台
- 第3批鸿蒙手机排名,荣耀手机也能升级!第三批鸿蒙手机升级名单大曝光:全球第三稳了...
- 整理一下var和函数function的一些小知识点
- Oracle Database 11g 数据库普通用户登录时提示 ORA-28002: the password will expire within 5 days
- sv队列和动态数组的区别_systemverilog中几种数组类型的基础知识
- java定制化报表_定制自己的报表!7款实用开源报表工具
- Express全系列教程之(六):cookie的使用
- 使用scrapy框架爬虫实战
- 微信小程序实现地图自定义大小画圆以及地图自适应(iview-Weapp+微信开发者工具)
- C语言 数字实现字母表 链表实现字母表
- ps命令 查看系统进程信息
- Blazeds(一)
- 【网络原理】网络通信与协议
- 关于端口号Port与TCP/UDP协议
- Windows11 安装教程(Ultraiso-制作启动盘)
- Inserting操作导致死锁Oracle
热门文章
- UVM-sequence和sequencer
- 基于python的opencv图像处理对交通路口的红绿灯进行颜色检测(最简单的方法)
- Tryhackme-New Year
- linux shell sed快速开始-(添加文本到文件的第一行和最后一行、文本的行尾添加字符)
- 关于后台应用进程被杀的相关知识
- RT-Thread移植到STM32单片机过程
- Hexo | yilia主题美化
- c8t6高电平电压_什么是高电平和低电平?
- 通过securecrt连接ubuntu12.04不能使用insert键及配色问题
- 计算机键盘设置功能键取消,键盘insert操作怎么取消?电脑键盘insert操作取消教程...