转载自【雨声论坛】
原作:software_young
----------------------转载开始----------------------------
本文的目的是希望引发关于Windows.Net和VisualStudio.Net的一些讨论,因此,本文的内容和结构如果不能够引人入胜或者贻笑大方,敬请各位高人海涵。
一。微软的.Net战略是微软自成立以来最为宏大的项目,也是业界近年来少有的大手笔,其结果对微软和业界都将是决定性的。如果成功的话,微软将建立起对Unix和Java的巨大优势;而如果失败的话,它将成为微软的天鹅之歌。
二。.Net的设计目标:
设计一个基于Web,平台独立,包含多个层次的目标的庞大软件服务体系。它以Web为中心,组织各种服务,使得微软的以客户机和服务器为中心的COM/DCOM/COM+转化为以Web为中心的各种服务,成为庞大的Web ASP(应用服务供应商);通过将.Net与宿主操作系统的相对分离,实现了相对的平台独立性,使其不仅可以应用于传统的Windows,而且可以应用于Unix系统和嵌入系统、甚至是手持设备;各种用户前端,包括手持设备、嵌入系统、传统的台式机、甚至传统的主机,都将成为其客户;.Net包含了对多个层次目标的支持,可以满足从手持设备、嵌入系统到64位的高档服务器等各个市场段的需要。
三。.Net的影响:
如果.Net成功的话,它将使微软可以入侵传统上各个相对较小的的侧翼市场,通过微软巨大的装机量、大量的现成应用程序、大量的用户群所产生的市场震撼,以多米诺骨牌的方式摧毁对手。从而建立现代高科技市场上的蒙古大帝国。这一点,大家可以从近来Palm的失势和Pocket PC的胜利,XBox的市场表现以及微软和Borland的力量对比的变化看出来。
四。.Net的结构的力量:
传统的Windows都是在Kernel之上密集积累各种Service来实现其功能(大家可以通过察看各个版本的Windows NT的Service来发现其所具有的各种服务功能)。大量的功能进入系统内核,一方面提高了系统的集成度,一方面也使得系统十分庞大,使得系统的性能和稳定性都成为问题,使得进入不同的市场段变得困难,同时限制了对于简单应用的性能表现。Linux在某些应用方面的性能优势,其实正是由于它相对简单和功能较少。
.Net的设计,将其各种功能从操作系统中分解出来,通过组合不同的功能来对应不同的市场需要,各个版本的Windows.Net实际上就是不同部件的各种组合。它可以说是世界上第一个完全以部件模型来设计的操作系统。这一点,实际上从Windows XP已经开始。
Windows XP的力量并不在于它有美丽的用户界面,和各种利于用户体验的各种工具,如MediaPlayer,而在于它所提供的服务集和体系结构。关于服务集,大家可以对比Windows XP和Windows 2000 Professional来发现Windows XP提供了多少新的服务和这些服务的面向的目标。而在体系结构上,Windows XP已经可以去掉其图形用户界面,以嵌入系统的方式工作了。这意味着,它的图形用户界面实际上已经离开了系统的内核,成为一个可装配的部件。这是一个十分重要的变化。
Windows.Net的结构,实际上应该分为两个部分:微软专有平台部分和可移植部分。前者包括了硬件相关部分和传统的Windows市场;后者则构成了Windows.Net的精华,随着时间的推移,前者将逐渐简化,后者将日趋强化。
目前,运行于Unix的.Net支持部件正在开发中。如果能够成功的话,.Net将可以作为Unix的一部分运行在Unix上面,Unix将成为一个宿主系统,就像Unix是Java的一个宿主系统一样。
宿主系统下的软件如果足够强大的话,一样可以构成一个操作系统,至少可以构成一个强大的软件层,前者的例子是今天的Oracle 9i,大家可以看到它离操作系统还有多远,这既是Oracle在市场上的巨大力量所在,也是宿主系统的噩梦,后者的例子是微软的Office,Office不仅仅在于其易于使用,而且在于其所含的Visual Basic for Application,它使得Office成为了一个软件平台,这一点,是IBM的Lotus Office和Corel的Perfect Office无论如何无法比拟的,他们的失败也就不可避免了。
以这种方式,传统的Unix将逐步被淘空,成为一个空壳,最后走向消亡。因此,.Net的设计结构,使得它成为现代的特洛伊木马。
五。关于VisualStudio.Net。
VisualStudio.Net是Windows.Net的开发工具。它和前代产品的巨大差异,成为人们争论的目标和担忧的所在。
VisualStudio 6.0的设计是基于COM/DCOM,后来又加入了COM+。它是以本机软件为设计目标的。软件开发直接生成平台相关的代码。不同的编程语言的级别和功能大不一样,而都直接生成平台相关的代码。这使得二进制级的移植实际上不可能。
VisualStudio.Net的设计则完全是基于Web的服务和应用。它实际上是以一种虚拟机的模式来设计的,CLR(通用语言运行环境)构成了其基础。软件开发生成的是中间码,它在实际运行时转换成对应的机器码,这种设计的好处是和Java相似的,一种理论上的无限可移植性。但是微软的唯一性,使得这种理想更加接近于现实。
不同的编程语言所访问的都是那个CLR。ASP具有了更多的面向目标的特性,Visual Basic实际上第一次成为真正面向目标的编程语言。各种编程语言面向CLR的设计模式,使得CLR,而不是各种编程语言成为开发的中心。历史上第一次,编程语言的选择成为了个人的爱好而与目标无关。我在想,这是否敲响了Windows.Net市场上C++的丧钟?
VisualStudio.Net实际上为不同的市场段准备了不同的部件。为标准的台式机、服务器市场准备了标准的VisualStudio.Net;而为嵌入市场准备了Embed VisualStudio.Net,一种小型的VisualStudio.Net,它很像Visual Basic和VBScript的关系。
VisualStudio.Net的工作基础是CLR、XML和SOAP,这些都还是不太确定的东西,它为VisualStudio.Net的前景增加了一些变数。
VisualStudio.Net中的各种语言,都和其前代大不相同。VisualBasic.Net几乎是完全重新设计的;Visual C++的变化也十分的巨大,虽然语言级没有多少变化,但是其类库则完全重新设计;C#则是一种全新的编程语言,它和Java比较接近,但只是形式上,我认为,它是比Java更好的Java,而且是最没有包袱、最易于和CLR结合的编程语言;至于Java.Net,除了继续支持原来的Visual J++的用户和利于Java程序的移植外,我看不出它有多大的用处;谈到Java程序的移植,我觉得不太容易,毕竟双方的体系结构的不相容要远远大于其语言的相似性。
无疑,VisualStudio.Net是Windows.Net的开发利器,但是其和前代的巨大差异和所导致的开发人员的重新学习,使得人们对它的可接受性产生了一定的怀疑。
说句实话,VisualStudio.Net使得几乎所有的Windows软件编程人员都变成了初学者,当然起点是不会一样的。这就是为什末我强调技术的思想,而不是技术的细节。技术不能够没有细节,但是过份专注于细节,在总是变幻的IT市场,将使人们陷入虚无。
顺便说一句,我的爱好是历史(真正的历史,不是随便让人改的政治),而不是软件技术。人应该有些寄托,总不能最后要末是半吊子,要末都出家了。
不好意思,又扯得太远了。谢谢各位。
software_young 编辑于 2002-02-01 13:47
----------------------转载结束----------------------------