ActiveX技术综述(二)
6.VisualC++5.0对ActiveX的支持
VC++5.0(企业版)为Internet开发提供了完整的解决发案,其内容是: *使用MFC或者ATL开发ActiveX控制和ActiveX文档。 *使用ISAPI设计WEB服务器端的部件。 *使用WinInet开发通过Internet存取文件的应用程序。 *使用AsynchronousMonikers生成从Internet下载数据的应用程序。 *使用ActiveXSDK开发其它类型的基于Internet的Win32应用程序,包括ActiveXScriptingHost,MicrosoftWebConferencing等。 6.1.用VC5.0开发ActiveX控制 VC++5.0提供两个途径开发ActiveX控制:MFC和ATL(ActiveTemplateLibrary)。使用MFC,可以不必理会控制接口的细节,把注意力集中在控制本身的功用上,但是生成的控制比较大。而且,客户端如果要运行此ActiveX控制,必须拥有相应 版本的MFC类库的DLL,否则,必须同时下载这些巨大的类库;使用ATL,由于不涉及MFC的标准类库,生成的控制相对较小,但开发者必须了解COM、OLE技术的细节。大多数情况下,可以使用MFC开发ActiveX控制,这样比较容易。而且,由于InternetExplorer3.0提供了MFC4.1的类库,而InternetExplorer3.0是Windows95提供的组件,所以,只要ActiveX控制使用的是MFC4.1或者更早的版本,多数情况下不需要下载MFC的类库。 使用MFC开发ActiveX控制,可以用MFCActiveXControlWizard生成工程框架。VC会自动产生三个类:(假设MyName是控制的名字。) *CMyNameApp:从类COleControlModule派生,而类COleControlModule则派生自CWinApp; *CMyNameCtrl:从类COleControl派生,而类COleControl则派生自CWnd; *CMyNamePropPage:从类COlePropertyPage派生,而类COlePropPage则派生自CDialog; 可以看出,这个框架与一般的MFC应用程序有些类似。开发人员的大部分工作在CMyNameCtrl中,例如用ClassWizard添加属性、方法和事件,处理显示等。 编译生成OCX文件后,用VC提供的ActiveXTestContainer测试这个控制,也可以用OLE/COMObjectViewer浏览此控制的接口信息及类型库。 6.2.ActiveX控制在WEB上的应用 考虑到WEB的安全性,为了在服务器与客户端建立良好的信任关系,必须为每个在WEB上使用ActiveX控制设置一个“代码签名”(CodeSigning)。VC5.0提供了生成供测试用的“代码签名”的工具。如果要正式发布,则必须向有关机构申请。 (参见http://www.microsoft.com/intdev/signcode/) 在WEB页面中使用ActiveX控制,还要对之进行包装,将有关的动态连接库及信息文件压缩到一个扩展名为CAB(Cabinet)文件中。可以使用VC5.0提供的工具包装ActiveX控制。在HTML文件中,使用OBJECT标签插入ActiveX控制,并利用VBScript或者JScript访问该ActiveX控制。客户端用InternetExplorer浏览此页面时,可以自动解包该文件。出于安全性的考虑,InternetExplorer为ActiveX部件的下载、初始化、是否拥有合法的代码签名以及是否允许Scripting等设置了不同的 安全级别,用户可根据需要进行设置。下面这个例子中,使用了ActiveX控制“MSChart.OCX",当用鼠标单击此控制时,控制的标题将改变。 <OBJECT CLASSID="clsid:31291E80-728C-11CF-93D5-0020AF99504A" CODEBASE="MSCHART.CAB#version=1,0,0,0" ID=chart1 WIDTH=400 HEIGHT=200 ALIGN=center > </OBJECT> <SCRIPTlanguage="VBScript"> Subchart1_Click() Document.chart1.TitleText="MyTitle" EndSub 这里,必须提供该OCX的ClassID和文件路径或URL。客户端浏览此页面时,先在本地的注册表中查找该ClassID,如果存在,则不必下载。否则,必须按照CODEBASE指定的路径搜索该控制并下载。标签Object中的ID是该OCX的对象的名称,用来 访问和设置对象属性,调用对象方法等。 6.3.用VC5.0开发ActiveX文档服务器 MFC4.2不支持开发ActiveX容器,但支持ActiveX服务器。只要在使用MFCAppWizard时生成应用程序框架时,选择支持ActiveDocument,就可生成标准的ActiveX文档服务器。运行此应用程序时,该文档对象将自动注册。要测试这个ActiveX 文档,可以运行任何一个ActiveX文档容器,如MicrosoftBinder、MicrosoftWord等,再插入此对象。 6.4.VC5.0的ActiveX服务器框架 *ISAPI(InternetServerAPI) ISAPI提供了扩展支持WEB服务器的简单而有效的方法。开发人员可以设计生成IS API服务器扩展动态连接库(ISAPIServerExtensionDLL),它可以被HTTP服务器调用。例如,客户端用户填写了一个表单,按下“提交”按钮后,输入的数据将被传送至HTTP服务器,激活相应的ISAPI扩展应用程序,该应用程序可以处理用户的输入信息,进行相应的操作。或者,按照用户的要求访问数据库,读取用户指定的数据,动态生成HTML文件,再传回客户端。 *ISAPI过滤器(ISAPIFilters) ISAPI过滤器是一种运行在支持ISAPI的HTTP服务器上的动态连接库。它的作用是:监视服务器与客户端的事件,当预先指定的某事件发生时,过滤器被调用,对要传递的数据进行加密或压缩,或者进行身份认证。换句话说,ISAPI过滤器提供了对服务器和客户之间传递的数据进行预处理的功能。 *ISAPI和通用网关接口(CGI)的比较 ISAPI为WEB服务器提供了通用网关接口应用程序的替代解决方案。与CGI不同的是,ISAPI扩展应用程序和HTTP服务器运行在同一个地址空间,不需要创建新的进程,因而不需要进行那些进程之间耗费时间的通讯。ISAPI应用程序可以从HTTP服务 器中卸载,为其它进程腾出内存空间。CGI则必须为每一个任务建立独立的执行文件及URL映射,HTTP服务器收到达每一个请求都将启动一个新的进程。另外,CGI没有与ISAPI过滤器相对应的功能。 6.5.WinInet(MicrosoftWin32InternetExtensions) VC5.0提供了开发客户端基于WEB的应用程序的API:WinInet,并将其封装成若干MFC类,如CInternetSession、CHttpConnection等。使用这些类,开发人员不需了解TCP/IP以及Winsock的细节,只要针对具体应用建立类对象就可以了。 上一篇:ActiveX技术综述(一) 下一篇:Windows 2000 安全性技术概述--1 更多相关文章
|
推荐文章
精彩文章
|