选择显示字体大小

activex技术综述(二)


  .visualc++5.0对activex的支持

  vc++5.0(企业版)为inte.net开发提供了完整的解决发案,其内容是:

  *使用mfc或者atl开发activex控制和activex文档。

  *使用isapi设计web服务器端的部件。

  *使用win.net开发通过inte.net存取文件的应用程序。

  *使用asynchronousmonikers生成从inte.net下载数据的应用程序。

  *使用activexsdk开发其它类型的基于inte.net的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控制,这样比较容易。而且,由于inte.netexplorer3.0提供了mfc4.1的类库,而inte.netexplorer3.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(cab.net)文件中。可以使用vc5.0提供的工具包装activex控制。在html文件中,使用object标签插入activex控制,并利用vbscript或者jscript访问该activex控制。客户端用inte.netexplorer浏览此页面时,可以自动解包该文件。出于安全性的考虑,inte.netexplorer为activex部件的下载、初始化、是否拥有合法的代码签名以及是否允许scripting等设置了不同的
  安全级别,用户可根据需要进行设置。下面这个例子中,使用了activex控制“mschart.ocx",当用鼠标单击此控制时,控制的标题将改变。


$#@60;object

classid="clsid:31291e80-728c-11cf-93d5-0020af99504a"

codebase="mschart.cab#version=1,0,0,0"

id=chart1

width=400

height=200

align=center

$#@62;

$#@60;/object$#@62;


$#@60;scriptlanguage="vbscript"$#@62;

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(inte.netserverapi)

  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.win.net(microsoftwin32inte.netextensions)

  vc5.0提供了开发客户端基于web的应用程序的api:win.net,并将其封装成若干mfc类,如cinte.netsession、chttpconnection等。使用这些类,开发人员不需了解tcp/ip以及winsock的细节,只要针对具体应用建立类对象就可以了。

6.6.asynchronousmonikers

  由于目前网络带宽的限制,用户通常希望能够异步下载数据,例如异步下载网页的一张图片,并显示下载进度。mfc提供了类casyncmonikerfile来实现这个功能。

6.7.activexsdk

  vc5.0还提供了专门的win32activex开发工具:activexsoftwaredevelopmentkit(activexsdk)。activexsdk包含一系列接口定义及与inte.net有关的win32函数,包括activexscriptingcomponent、webbrowsingobject、webpost api等,用户可以利用这些接口和api开发面向web的应用程序或activex部件。


6.8.visualc++6.0

  1998年9月,microsoft将推出的visualc++6.0。vc6.0除了保留vc5.0的activex支持外,还将支持dhtml,mfc及atl的类库及模板也有扩充。用户可以方便地开发出类似web浏览器界面的应用程序。

7.visualbasic5.0对activex的支持

7.1.visualbasic部件

  visualbasic5.0(以下简称vb)的部件(component)是由可执行代码构成的文件(exe,dll,ocx),它可以为其他应用程序或者部件使用。以前版本的vb允许用户生成称为"oleserver"的部件,vb5.0扩展了部件设计功能,支持引发事件,异步回调(call-backs)等,并增强了创建activex控制和activex文档的功能


vb5.0的activex部件(component)包括:

  *activex控制

  activex控制与客户应用程序运行在同一个进程中。用vb5.0创建可用于vb或者其它开发工具及web浏览器的activex控制,与一般的vb应用程序设计大同小异。可以为activex控制加上属性页,并实时调试。另外,vb5.0提供了一组强大的数据库存取控制,开发人员只需编写少量代码就可以完成一般的数据库操作。

  *activex文档

  vb5.0的activex文档提供了内置的窗口滚动、超链接以及菜单支持,直接嵌入web页中。编制activex文档与设计vb表单(form)完全相同,用户可以选择生成activexdocumentdll或者activexdocumentexe。无论哪一种类型,vb都将生成一个类似表单文件的vbd(visualbasicdocument)文件。可以直接用inte.net explorer来浏览这个文件,或者用vbscript或者jscript进行访问。

  *activexdll

  activexdll提供的对象与应用程序运行于同一个进程中。应用程序可以创建对象,设置对象属性,调用对象的方法。activexdll一般不需要建立用户界面。

  *activexexe

  activexexe提供的对象与应用程序运行于在不同的进程中。应用程序创建对象,调用对象的方法后,可以继续进行自己的工作。当对象的工作完成后,它会通知应用程序。

  activexdll和activexexe合称为visualbasic代码部件(codecomponent)。

7.2.包装activex部件

  上述activex部件都可以使用vb5.0的setupwizard进行包装,生成采用lempel-ziv压缩算法的cab文件,在web上发布。setupwizard将把相关的动态连接库及信息文件一同包装。使用vb5.0生成的activex部件,可以包装成safescripting和safeinitializing。

7.3.activex文档在web上的应用

  向web页面中加入activex文档,首先要将该activex文档包装成cab文件。由于inte.netexplorer读入activex文档时,该文档将取代当前的web页,因此,一般将activex文档(即html的标记object)放在一个独立的html文件中。例如,下面这条语句建立了一个超链接:


$#@60;ahref="activexdoc.htm"$#@62;linktoaactivexdocument$#@60;/a$#@62;

其中,activexdoc.htm是下载activex文档的html文件:


$#@60;object

classid="clsid:2f390484-1c7d-11d0-8908-00a0c90395f4"

codebase="activexdoc.cab#version=1,0,0,0"$#@62;

$#@60;/object$#@62;


这条语句将下载activexdoc.cab,并在windows注册表中注册该activex文档。

7.4.visualbasic代码部件在web上的应用

  visualbasic代码部件包括activexdll和activexexe,它们可以在服务器端运行,也可以从客户端下载再运行。

  如果某个activexdll运行在服务器端,服务器上运行的是inte.netinformationserver,则可以使用vb的oleisapi2.dll提供的函数进行访问,或者基于activeserverpages使用vbscript或者jscript。

  如果希望客户端下载某个代码部件,则首先要将该部件包装成cab文件。例如,用vb5.0企业版生成了一个activexdll:mydll.dll,它只有一个类:myclass,其唯一的方法是显示login对话框。用setupwizard包装这个部件,生成了cab文件。下面的语句将在客户端下载mydll.cab:


$#@60;objectid=myclass

classid="clsid:503b3e09-2191-11d2-8e90-00104b64f7b7"

codebase="mydll.cab"$#@62;

$#@60;/object$#@62;


$#@60;inputtype=buttonvalue="loginnow"name="btnlogin"$#@62;


$#@60;!--

whenthebuttonisclicked,callthe"login"method.

--$#@62;

$#@60;scriptlanguage="vbscript"$#@62;

$#@60;!--

subwindow_onload

myclass.login

endsub

subbtnlogin_onclick()

myclass.login

endsub

--$#@62;

$#@60;/script$#@62;


  其中,objectid是这个activexdll中某个类的名字。当此web页面被下载并显示时,myclass类的方法login将被调用,并在客户端显示login对话框。

7.3.visualbasic6.0

  microsoft计划于1998年9月推出visualbasic6.0。目前beta版正在测试vb6.0与vb5.0相比,除继续支持inte.netexplorerdocumentobjectmodel(dom)开发之外,将提供两个令人兴奋的新功能:

  *dynamichtml编辑器

  开发人员可以象编制普通vb程序一样,制作dhtml文件或模板。

  *webclasses;

  开发人员可以在web服务器端建立与asp文件一一对应的webclass类,每个类都可以访问asp对象,在visualbasicide中跟踪调试,并生成isapi动态连接库。


8.小结

  正如inte.netweb技术一样,activex技术的发展日新月异,新的更强大的开发工具使得服务器及客户端的应用开发、网站建设变得更简单,并容易扩展和重用。随着microsoft的包括windowsnt、inte.netinformationserver、activeserverpages以及microsoftfrontpage、inte.netexplorer等组件在内完整的inte.net解决方案被广泛使用,activex技术将会有更大的发展。


参考文献:

1.visualc++技术内幕(第二版),[美]davidj.kruglinski著,王国印译,
清华大学出版社。

2.activex开发人员指南,[美]erictall,markginsburg著,章巍等译,机械
工业出版社。

3.visualbasic6.0:youwontbelievewhatjusthittheweb,joshuat
rupin,microsoftinteractiv.networkdeveloper(mind),1998年8月。

4.introductiontoactivexcontrols,microsoftcorp.,msdn,1998年8月。


5.dynamichtmlandthebigpicture,johnswenson,msdnonline,1997年11月。

6.abriefpreviewofthevisualbasic5.0developmentenvironment,michaelotey,windowsntmagazine,1997年4月。

7.http://www.microsoft.com/,microsoft公司,包括msdn、msj等技术资源。


8.http://www.activex.com,第三方开发的activex控制。

9.http://www.active-x.com,有关activex技术的文档资料。

10.http://www.winntmag.com,windowsntmagazine杂志。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons