微软软件开发技术二十年回顾
今年11月,微软新一代的操作系统Vista即将正式发布,它将会极大地改变原有的Windows编程机制。近20年来,随着技术和应用的变化、发展,微软的开发技术也历经变迁。随着微软下一代开发平台vista即将发布,微软会把开发者引向何方?
自Windows 1.0问世到今年11月份,微软Windows操作系统已经走过了它辉煌的二十一年。沧海桑田一瞬间,让我们再次追随Windows的踪迹,了解微软核心技术发展史,评析她当时所处的位置并展望其今后的发展趋势。
一、 操作系统篇
Win16时代(1985~1995)
1985年11月,微软公司正式发布了第一代窗口式多任务系统──Windows 1.0,代表了MS-DOS时代将逐渐终结,Windows王朝正式拉开了序幕。该操作系统的推出标志着PC机开始进入了图形用户界面(GUI)时代。1987年12月9日,Windows 2.0发布,但这个版本依然没有获得用户的广泛认同。
1990年5月22日,微软推出Windows 3.0,由于在界面/人性化/内存管理多方面的巨大改进,终于获得用户的认同。1992年4月,windows 3.1发布,在最初发布的两个月内,销售量就超过了一百万份;至此,微软公司的资本积累/研究开发进入良性循环。随后,首次发布了Windows 3.2中文版本。不论是图形操作系统的稳定性还是友好性,Windows 3.X都有了巨大的改进。Windows 3.X在界面人性化和内存管理上有了较大的改进:具备了模拟32位操作系统的功能,图片显示效果大有长进,对当时最先进的386处理器有良好的支持。另外,这个系统提供的对虚拟设备驱动(VxD)的支持,极大改善了系统的可扩展性。
1992年10月,Windows for Workgroups 3.1发布,标识微软公司吹响了进军企业服务器市场的号角。1993年,Windows NT 3.1发布,它是第一款真正面向服务器市场的产品。值得注意的是,在这个版本中,微软把主要的API改为32位的版本。
Win32时代(1995~2005)
1995年8月24日,微软推出具有里程碑意义的Windows 95。这是微软开发的第一个独立的32位操作系统,并实现真正意义上的图形用户界面。从此,个人电脑进入了普及化阶段。
另外,Windows 95是单用户多任务操作系统,它能够在同一个时间片中处理多个任务,充分利用了CPU的资源空间,并提高了应用程序的响应能力。同时,Windows 95还集成了网络功能和即插即用功能。
1996年8月,Windows NT 4.0发布,增加了许多了管理方面的特性,稳定性进一步提高。同年11月,针对各种嵌入式系统和产品设计的Windows CE 1.0发布。这标识着微软的战线从桌面系统杀到了服务器市场,又转攻到嵌入式行业;至此,微软帝国的雏形已基本形成。1997年11月,Windows CE 2.0发布。
1998年6月25日,Windows 98发布;与Internet的紧密集成是Windows 98最重要的特性。1999年6月10日,Windows 98 SE发布,以内置方式提供了Internet Explorer 5、Windows Netmeeting 3、Internet Connection Sharing、对DVD-ROM和对USB的支持。
Windows 2000(Windows NT 5.0)Professional于2000年年初发布,它是第一个基于NT技术的纯32位的Windows操作系统,实现了真正意义上的多用户。从此,Windows操作系统进入商业用户市场。Windows 2000包含新的NTFS文件系统、EFS文件加密、增强硬件支持等新特性。
2001年10月25日,Windows家族中极具开创性的版本Windows XP面世。Windows XP具有全新的图形用户界面,整合了更多更实用的功能:防火墙,即时通讯,媒体播放器,增强的即插即用特性。Windows XP具有全面为中国用户开发的中文技术及特性,能够全面满足中国用户在数字时代的需求。
2003年4月,Windows Server 2003发布。这个版本对活动目录、组策略操作和管理、磁盘管理等面向服务器的功能作了较大改进,对.net技术的完善支持进一步扩展了服务器的应用范围。
2004年9月微软发布Windows XP SP2。
Windows Vista(2006.11~)
今年11月,微软新一代的操作系统Vista即将正式发布,它将会极大地改变原有的Windows编程机制。
Vista生成器最终将跟以前的Win32 API进行分离,取而代之的是可管理的WinFX,而WinFX将成为微软继DOS、Win16、Win32之后推出的第四代API。据外刊报道,以前利用Win32 API开发的软件,在微软承诺的维护期之后将不能运行。
Win32 API历经Windows 95到XP,受到众多应用软件开发商的追捧。过去,无论是最常用的字处理、电子邮件、即时通讯软件,还是专业的杀毒、ERP软件等,大都利用微软提供的API进行开发。微软提供了近7.8万个Windows API以及大量的辅助开发工具,这种友好的服务极大地鼓励了无数程序员在微软平台上创造各种应用软件。但另一方面,微软又通过API“控制”了软件的开发,帮助自己成就了霸主地位。如今,在Win32 API逐渐淡出人们的视野后,新一代的API还能如微软设想的那样延续Win32时代的辉煌吗?
微软已经看到了这些威胁。所以,Vista的发行中配带了全新的WinFX。同时,微软的WinFX已经把繁杂的Win32 API减少到8千个左右,在.NET框架下采用可管理代码编程模式,进一步减轻程序员的负担。另外,WinFX还加入全新的图形用户界面子系统Avalon、文件子系统WinFS和网络服务通讯子系统Indigo,使得开发环境更加友好。时势所趋,正如Win32取代DOS和Win16一样,Win32 API也终将被WinFX所替代,而成为新操作系统中的“遗留物”。
据估计,在一段时间内,程序员还可以继续使用Win32 API开发应用程序,但利用WinFX开发的程序并不向下兼容,只能在Vista平台上运行。另一方面,Vista操作系统带来的变化和WinFX开发者框架迟早将会刺激开发者转向.NET框架。因此,作为Windows开发人员,应当尽早掌握.NET框架可管理编码的技能以便应对在2008年全面使用WinFX时可能出现的种种问题。
二、 API篇
随着Windows操作系统开始占据主导地位,开发Windows平台下的应用程序成为人们的需要。当然,这也为传统的DOS程序员提供了一种新的编程方法—一种不受设备限制并由事件驱动的编程方法。另一方面,Windows GUI的开发迫使传统的DOS程序员的编程方法发生了变化。当时,大多数DOS软件以过程方式编写,即一个函数调用另一个函数,主程序始终处于控制之下,而事件驱动的编程模式使得程序放弃它们的全部控制权,等待外部事件发生并对外部事件作出响应,以便将它们的函数全部提供给最终用户。结果是,今天的Win32(当然包括早期的Win16)GUI程序的结构仍然与1987年时的结构相同。
1.Windows GUI应用程序的基本结构。
其中,每一个程序都包含一个进入点、主窗口创建、一个消息循环和主窗口撤消。此外,都有一个函数与主窗口过程相关联,称为窗口过程,它包含用于处理系统事件和应用事件(如键盘输入、鼠标移动和点击、定时器报警、菜单选择和按钮点击)的代码。
在Windows程序设计初期,Windows程序员所能使用的编程工具唯有API(应用程序编程接口)函数,这些函数是Windows提供给应用程序与操作系统的接口,它们犹如“积木块”一样,可以搭建出各种界面丰富功能灵活的应用程序。所以,可以认为API函数是构筑整个Windows框架的基石,在它的下面是Windows的操作系统核心,而它的上面则是各种功能的Windows应用程序。当时,因为缺乏良好的Windows编程平台,程序员想编写具有Windows风格的软件,必须借助API,API也因此而被赋予至高无上的地位。相应地,程序员还必须熟记一大堆常用的API函数,而且还得对Windows操作系统有深入的了解。
随着软件技术的不断发展,在Windows平台上很快出现了很多优秀的可视化编程环境(诸如VB、VC ++、DELPHI等),程序员可以采用“即见即所得”的编程方式来开发具有精美用户界面和功能强大的应用程序。但实际上,要真正开发出更灵活、更实用、更具效率的应用程序,必然要涉及到直接的API函数调用;对于比较复杂和特殊的功能来说,使用类库和控件往往难以实现,这时就需要采用API函数来实现。
【提示】关于钩子技术
Windows操作系统是建立在事件驱动机制之上的,系统各部分之间的沟通也都是通过消息的相互传递而实现的。但在通常情况下,应用程序只能处理来自进程内部的消息或是从其他进程发过来的消息,如果需要对在进程外传递的消息进行拦截处理就必须采取一种被称为HOOK(钩子)的技术。钩子是Windows操作系统中非常重要的一种系统接口,用它可以轻松截获并处理在其他应用程序之间传递的消息,并由此可以完成一些普通应用程序难以实现的特殊功能。钩子的本质是一段用以处理系统消息的程序,通过系统调用,将其挂入到系统。值得注意的是,钩子技术成为许多种Windows软件的核心技术,例如屏幕抓词、垃圾邮件过滤、软件界面高级定制等。
[
本帖最后由 星雨 于 2007-2-14 15:33 编辑 ]