技术开发 频道

讲述微软的那些编程革命史

  【IT168 评论】首先,是 Windows API 和 DLL Hell。(译注:DLL Hell——DLL灾难,就是微软的DLL升级时可能造成应用程序无法运行的灾难,首当其冲的是COM编程,相信大家都知道某些木马或是病毒更改了一些系统的DLL可以导致整个Windows不举,这就是DLL Hell) 于是,第一次革命是DDE——我们可以创建一个状态条在上面显示Microsoft的股票价格(译注:Dynamic Data Exchange,工作原理是:甲方申请一块全局内存,然后把内存指针postmessage到乙方,乙方根据收到的指针访问那块全局内存)。

  在那个时候,Microsoft 创建了 VERSIONINFO 资源,当然,是用来消除DLL Hell。但是,另一个微软内部的小组发现了DDE的致命缺陷:他们什么也没做!

  为了解决这个问题,他们创造了OLE(很像DDE,只是名字不一样),而且,我还盲目地相信并记得在一次 Microsoft 大会上,某个微软的演讲者正式宣布—— Windows API 马上就会被 OLE API 所重写并取代,而且,所有的在屏幕上的显示控件都会是OCX,那是OLE引入的接口,同样,其目的是为了消除DLL Hell。

  相信大家都记得,那个时候,我们是怎么地梦想着有一天,我们的应用程序(当然是非常大的程序)可以完全地被嵌入到Word文档中。

  然而,在Microsoft的某处,Microsoft开始了C++信仰,其确信MFC的出现并可以解决所有的一切问题,但是,因为历史原因,OLE并没有出局,其改了一个名字,叫COM,突然,我们立马意识到OLE(以前的DDE?)真正意味着什么——其用精心的版本系统来消除DLL Hell。其间,Microsoft的一个变节小级发现了一个MFC的致命缺陷:他们什么也没做!

  当然,微软件的动作是很快的,他们立刻修正了问题——创造了ATL,有些像MFC,只是名字不同,他们想使用漂亮的ATL把那些晦涩难懂的COM的知识给隐藏住。

  这个动作刺激了COM团队(或是OLE团队?)改名为ActiveX,并发布了成千上万的新接口(甚至是很多版本化的接口,当然,主要目的是为了消除DLL Hell),当然,ActiveX可以让我们的程序可以从Web游览器上下载,并可以完美地和病毒一起嵌入浏览器中(哈,还不紧跟时代,感谢ATL吧)。

  那时,操作系统团队就像一个失宠的孩子一样,大声呼喊着引起大家注意,就算是有一些怪异恶心的东西他们自己也无法解释,反正他们不管,发布就是了。为了重拾声誉,操作系统团队引入了“系统文件保护”的理念,当然也是为了消除DLL Hell。

0
相关文章