微软公司在今年早些时候公布说将要开放应用程序接口(
API),以及通信协议
微软此次宣布的互操作性原则和相关举措所涵盖的
微软产品,将包括Windows Vista,Windows Server 2008, SQL Server 2008,Office 2007,Exchange Server 2007,Office SharePoint Server 2007以及这些产品的未来版本。根据
微软的计划,该公司将在其网站上公布与上述产品有关的所有应用程序接口(
API)和通信协议的相关文件,以“确保这些产品的连接开放”。开发者不需要获得许可或交许可费或其他费用即可获得这些信息。自2月21日起,
微软已经开始在MSDN上公开公布多达3万余页的Windows客户端和服务器协议说明文件,此前这些文件只可通过
微软工作组服务器协议计划(WSPP)和
微软通信协议计划(MCPP)授予的商业秘密许可来获得。
大部分的评论者对此表示审慎的赞赏,即使最乐观的人也很难一下子就把这个小动作跟开源软件相比。大家只能简单的认为
微软在全球诉讼的压力下似乎选择了更理智的途径。
微软开放API只为减轻诉讼压力? 微软开放
API只为减轻诉讼压力?从软件开发的角度来看,我有点不同的看法。在目前的大环境下,单机应用软件的日薄西山和网络应用的旭日东升已经成鲜明的对照,两者的此消彼长根本不需要任何专业人士来分析,仅有的操作系统和办公应用领域也在云计算的侵蚀下即将灰飞湮灭,面对咄咄逼人的对手,
微软能坐视山河日下吗?要想对这些问题进行一次性解答似乎是个相当不容易的事情。
现在的主要问题是,
微软希望通过开放
API提高开发者粘度,简单说就是提高单机应用软件开发者的参与度。目前网上广大SNS社区其实是这方面的先行者,这种提供更多方便,让用户自己搭建娱乐应用平台的方式始于FaceBook,这一全美最大的SNS社区提供了大量开放的
API给第三方,让这些用户能够在其平台上开发出各种各样好玩的游戏,然后通过这些游戏让更多用户参与。
微软则以此意识到作为一个操作系统和办公软件的全球最大供应商也有业务为更多的开发者提供类似的功能,以便他们能够在自己的应用程序当中和
微软的平台进行整合。
API开放的细节 另外一个值得关注的事实就是这些
API开放的细节问题,很多人批评
微软这次公布的
API有点大而笼统,我仔细看了MSDN网站上的相关内容,得到了不同的结论。
这些
API的价值有两点,第一就是为系统开发人员提供了一些特别的功能,举例来说,我们在windows 98时代都直到可以通过编写虚拟设备驱动VXD文件来达到直接访问硬件的目的,也就是所谓的突破系统内三环,直接访问环0级别的驱动,比如直接访问数据总线,或者直接访问外设接口。在Windosw98时代的后期,这一技术被滥用了,陈盈豪利用它开发出了第一款能够对硬件造成伤害的病毒CIH,一时间大家谈CIH色变。后来在Windows进入2000时代以后由于其架构基于NT服务器平台,这一隐患消失了,但是接踵而来的新问题就是我们在一切情况下需要访问外设的时候遇到了很多限制。现在一般的方式是使用封装的MFC类或者.NET平台下有限的几个接口,很多比较复杂的功能实现起来需要很多技巧,而且明显效率偏低,坊间传闻说
微软内部有一些技术能够让这一访问变得简单快捷,据说是某种未公开的
API。
当然这次公开的
API中还是没有这些传闻中的“未公开
API”,但是它提供了一些明确的指向性意义,告诉我们这一开放平台的方向在哪里。同时开放的
API还提供了进程互调用和互锁定的方法,提高进程优先级的方法等等,这些技术为我们进行内核级开发打开了一扇大门。
另一方面,
微软通过开放这些
API让我们了解这一庞大平台的运转机制,之前我们都只是基于猜测来了解这一巨大平台的运转方式,很多情况下我们在没有第一手文档的情况下猜测各种程序接口的来源,我们对一些溢出漏洞愤愤不平,因为从我们的角度看来这些错误“太低级”,然而逐渐开放的
API文档库让我们了解到这一庞大系统的运行规范,以及这一系统中的哪些地方可能会出现漏洞,这使开发者不在限于盲人摸象的猜测当中,如同在黑暗中给予我们火种。