概述
从Windows 1.0 到Windows 10,对于普通用户来说,显而易见地,用户界面已经发生了很多变化。
对于Windows的开发者来说,伴随着Windows系统的不断发展,API技术演化也已经在不知不觉经历了好几代的变化。
演化
为了便于比较和讨论,本文将API技术分为5代。
第一代:C风格的API(Win32API)
Windows主要是用C语言开发的,第一代的API使用C风格也是意料之中。这一类API看上去简单高效,但由于缺少封装,参数往往过于复杂。比如说,创建窗口的函数CreateWindow,要填写11个参数。在没有代码智能提示的时代,要记住每个函数的参数也是醉了。
第二代:C++Class Library (MFC)
面向对象风潮来袭,微软用C++对Win32 API进行了一次改头换面的“装修”,创建了Windows平台开发的基础类库,也就是后来著名的MFC。从此,程序员们告别了创建窗口需要11个参数的日子,程序有 “对象” 了,世界也美好了。但是,由于C++缺少一个二进制级别的标准,却给C++类库风格的API带来了意想不到的隐患(我将会在后续的小实验中做展示)。
第三代:COM(DirectX,Office)
COM通过分离接口和实现弥补了C++没有二进制级别标准的不足,确保了模块的稳定性。它的首次应用是OLE2.0 。接口化编程和引用计数的思想对当时面向对象的C++程序员来说是个思维上的冲击,这让当时的开发者们有些不太适应(COM本质论的作者DON当时也认为使用COM是一个 “噩梦” ,直到他顿悟了COM的精髓,写下COM本质论)。另外,由于微软当时