软件框架由微软于1996年推出
ActiveX是微软创建的一个已弃用的软件框架,它改编了其早期的组件对象模型(COM)和对象链接和嵌入(OLE)技术,用于从网络,特别是从万维网下载的内容。微软在1996年引入了ActiveX。原则上,ActiveX不依赖于Microsoft Windows操作系统,但在实践中,大多数ActiveX控件只运行在Windows上。大多数控件还要求客户机运行在基于x86的计算机上,因为ActiveX控件包含已编译的代码。(页面需要)
从Windows 10到Internet Explorer 11仍然支持ActiveX,而ActiveX在默认的web浏览器Microsoft Edge中不支持(它有一个不同的,不兼容的扩展系统,因为它是基于谷歌的Chromium项目)。
ActiveX控件
ActiveX是基于组件的软件工程中使用的主要技术之一。与javabean相比,ActiveX支持更多的编程语言,而javabean支持更多的平台。许多快速应用程序开发技术都支持ActiveX,如Active Template Library、Delphi、JavaBeans、Microsoft Foundation Class Library、Qt、Visual Basic、Windows Forms和wxWidgets,使应用程序开发人员能够将ActiveX控件嵌入到他们的产品中。
许多Microsoft Windows应用程序——包括许多来自Microsoft本身的应用程序,如Internet Explorer、Microsoft Office、Microsoft Visual Studio和Windows Media player——使用ActiveX控件来构建它们的特性集,并将它们自己的功能封装为ActiveX控件,然后可以嵌入到其他应用程序中。Internet Explorer也允许在网页中嵌入ActiveX控件。
历史
面对OLE 2.0的复杂性和MFC中对COM的不支持,微软在1996年简化了该规范并将该技术重新命名为ActiveX。即使在简化之后,用户仍然需要控制来实现大约6个核心接口。为了应对这种复杂性,Microsoft生产了向导、ATL基类、宏和c++语言扩展,以简化控件的编写。
从Internet Explorer 3.0(1996年)开始,微软增加了在HTML内容中托管ActiveX控件的支持。如果浏览器遇到一个页面指定一个ActiveX控件通过一个对象标记(标记的对象添加到HTML 3.2规范了查理?Kindel微软代表W3C)它会自动下载并安装控制在很少或没有用户干预。这使得网络“丰富”,但引发了反对(因为这类控件,在实践中,只在Windows上,和单独控制所需的每种受支持的平台:一个用于Windows 3.1 / Windows NT 3.51,一个用于Windows NT / 95,和一个用于Macintosh F68K / PowerPC)和安全风险(特别是由于缺乏用户干预)。微软随后推出安全措施,使包括ActiveX在内的浏览更安全。
例如:
安装包(机柜文件和可执行文件)的数字签名
对于s,控件必须显式声明它们自己是安全的图书馆的
越来越严格的默认安全设置
Internet Explorer维护着一个不良控件的黑名单
ActiveX从一开始就备受争议;虽然微软在其营销材料中声称,与Java applet相比,ActiveX编程简单且性能良好,但批评者很快指出了安全问题和缺乏可移植性,使其无法在受保护的内部网之外使用。ActiveX安全模型几乎完全依赖于使用一种名为Authenticode的代码签名技术来识别受信任的组件开发人员。开发人员必须在Verisign注册(个人每年20美元,企业每年400美元),并签署合同,承诺不开发恶意软件。被识别的代码会在浏览器中以完全权限运行,这意味着代码中的任何bug都是一个潜在的安全问题;这与当时Java中已经使用的沙箱形成了对比。
平台支持
1996年10月,微软发布了Mac上ActiveX软件开发工具包(SDK)的测试版,其中包括Mac上Netscape Navigator的插件,并宣布计划在同年晚些时候支持Solaris上的ActiveX。六个月之后又发布了两个测试版,但Macintosh ActiveX插件还没有上市。
1997年,NCompass实验室与微软合作发布了Netscape Navigator支持ActiveX的插件。
ActiveX核心技术的文档存放在Open Group中,可以免费阅读。
尽管微软以前努力使ActiveX跨平台,但大多数ActiveX控件不能在所有平台上工作,因此使用ActiveX控件实现网页的基本功能限制了它的实用性。韩国已经开始在其公共网站上删除这项技术,以便让更多平台可以访问他们的网站。
虽然微软通过发布API的方式努力推动ActiveX的跨平台方面,但由于ActiveX控件是用C或c++编写的,并且是用Intel x86汇编语言编译的,因此跨平台的努力最终失败了。使它们只能在Windows机器上执行,因为它们可以调用标准的Win32 api。
微软在Windows 8的ie 10的Windows Store版本中删除了ActiveX支持。2015年,微软发布了不支持ActiveX的ie浏览器的替代品Microsoft Edge,这一事件标志着ActiveX技术在微软浏览器开发中的终结。