在网页中灵活的使用COM组件

来源 :科技创新导报 | 被引量 : 0次 | 上传用户:xxbear0
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:通过网页我们可以将COM组件分发给用户,从而为客户端用户提供服务。其中服务的概念非常广泛,它可以是相应网站,也可以是应用程序。通过它可以使许多软件工作能够放在网络上完成,服务器端提供满足客户下载需要的软件及软件的最新版本号,并提供在线安装组件,用户在客户端接收并可以自动运行,实现软件服务的自动化。 本文通过实例阐述了COM组件的多种应用方式,并给出了代码。
  关键词:DLL Class Factory IUnknown COM
  中图分类号:TP3 文献标识码:A 文章编号:1674-098X(2011)12(c)-0000-00
  
   Component Object Model 是一个重要的概念。我们把一个完整的EXE文件分割成功能不同,但相对独立的几部分即组件,然后拼装起来组成程序。在未来发布后,如果业务有变,则可以替换或升级相应组件就可以了。这也是我们在软件技术中,最终拼装程序的手段。文章首先对COM组件进行了描述,然后详细讲解了COM的应用,这里分了八种情况进行了讲解。
  
  1 COM描述
   COM是模块化编程的一种方法,从代码重用的角度来看,COM技术的复杂性是函数和动态链接库所无法比拟的。COM是一种集成技术,它可以在运行时将软件融合在一起,不必考虑他们是用什么语言编写的。COM采用二进制级代码表示,这也使得它具有语言无关性。分布式COM允许不同型号机器上运行的程序之间通讯。
  1.1 C++描述COM接口
   struct ILink : public IUnknown//接口就是结构体类型的数据结构
   { virtual BOOL Link()=0;} ;//只有成员函数,且是纯虚函数
   struct ITran : public IUnknown // ILink为建立连接, ITran传输数据
   { virtual void send()=0; virtual void receive()=0;} ;
   class mynet : public ILink , public ITran//COM类
   { BOOL Link() {处理;}void send() {处理;} void receive(){处理;} };
  1.2 嵌套类解决函数重名
  class mynet : public ILink , public ITran
  { class Clink public IUnknown
   { virtual BOOL Link()=0; } m_link;
   class CTran public IUnknown
   { virtual void send()=0;virtual void receive()=0;} m_tran;
   friend class Clink; friend class CTran; };
  1.3 通过接口访问COM
  CLSID:COM全球唯一标识;GIID:COM接口全球唯一标识;考虑因素:网卡号,产生时间
  HRESULT GetClassObject(REFCLSID rclsid,REFIID riid,LPVOID *ppv)
   获得指向接口的指针;
  1.4 IUnknown接口
   COM中有一个IUnknown接口,所有COM接口都必须从它继承,其中定义了三个函数。
  struct IUnknown { public:
   virtual HRESUAL QueryInterface()=0;//查询接口的工作;
   virtual ULONG AddRef()=0;//返回计数器m_dwref;
   virtual ULONG Release()=0;//delete this;} ;
  1.5 类厂(Class Factory)
  COM中有一个特殊接口,即IClassFactory接口,它由IUnknown接口继承,负责创建对象。COM暴露的只是接口,且无构造函数。
   struct IClassFactory : public IUnknown
   { HRESULT CreateInstance(REFIID riid,void ** ppvobject)=0; };
   class MynetClassFactory : IClassFactory
   { HRESULT CreateInstance(REFIID riid,void ** ppvobject);};
  
  2 COM应用
   如何将COM填加到网页中是很重要的一个应用点,对此笔者进行了研究:(1)应用是:EXE程序+COM组件;(2)应用是:ASP网页基于IIS的网站+COM组件;(3)应用是:JSP网页基于Tomcat的网站+COM组件;
   应用点的几个技术:(1)通过ASP页面传送并执行COM组件;(2)通过JSP页面传送并执行COM组件;(3)通过COM组件下载EXE程序;(4)通过EXE程序访问网页;(5)在ASP网页中执行EXE程序;(6)通过JSP或Java执行EXE程序;(7)注册与卸载COM组件;(8)设置程序自动执行。
  2.1 通过ASP页面传送并执行DLL
  
  2.3 通过DLL下载EXE程序
  
  
  2.4 通过EXE程序访问网页
  
  2.5 在ASP网页中执行EXE程序
  
  
  2.6 通过JSP或Java执行EXE程序
  
  2.7 注册与卸载注册DLL
  
  3 结语
   在COM设计中我们看到了DLL的应用,如果要编写模块化的COM软件,就会对动态链接库(DLL)非常感兴趣。虽然C++类也是模块,但类是“创建时”模块,而DLL是“运行时”模块。在编写大的EXE程序时,每次修改后,都要重新编译,如果采用较小的DLL模块,则可以单独进行调试。客户程序搜索DLL的顺序为:包含EXE文件的目录;进程的当前目录;Windows系统目录;Windows目录;列在Path环境变量中的目录。因此,生成的DLL文件最好拷贝到测试程序所在的目录。有了以上的技术,我们就可以在网页中灵活的嵌入COM组件,完成自动打开任一网站或自动下载并运行应用程序的目的,从而达到软件自动服务的目的。
其他文献
阐述了漳泽水库水环境的历史演变,针对漳泽水库水污染的原因,进行了水环境和水污染分析,为改善漳泽水库的水环境质量提供了科学依据。
为了进一步提高冷轧平整机液压压上系统的动态特性,提出了新的PID 参数设计方法:遗传算法。利用Matlab/SIMULINK软件求解优化模型,实现了PID控制参数自整定。对优化得到的PID参
摘 要:近几年台安县产业经济快速发展,推动全县经济实力稳步增强。本文针对台安县的产业发展现状,提出了台安县的社会经济发展总体目标和产业布局规划。  关键词:产业经济 经济实力 发展总体目标 产业布局规划  中图分类号:F207文献标识码:A文章编号:1674-098X(2011)04(c)-0186-01    1 引言  台安县地处辽宁省西南部、辽河三角洲腹地。处在沈阳、鞍山、营口、辽阳、盘锦、
刘彦:中国科学技术发展战略研究院产业科技发展研究所研究员,国务院特殊津贴专家。长期从事国际技术贸易与技术转移、技术标准与技术性贸易措施问题、日本产业技术发展研究。研
低温热水地面辐射采暖是以温度不高于60℃的热水为热媒介,在加热管内循环流动,加热地板,通过地面以辐射和对流的传热方式向室内供热的采暖方式。低温热水地板辐射采暖具有温
结合天津铁建大厦基坑工程的特点,介绍了适用于天津软土地区的几种基坑围护结构型式,并对钻孔咬合灌注桩与普通钻孔灌注桩+止水帷幕两种围护型式各自特点进行了详细的对比分析。
本文首先分析了目前我国用于玉米灌溉水源存在污染现状,并结合我国国情分析了污染类型,最后有针对性的提出了如何在玉米种植中进行科学有效的灌溉技术,具有一定研究意义。
摘 要:通过对重庆红色资源进行梳理、整合,形成特色鲜明的重庆红色教育产品,采用科学有效的教育模式,解决理想信念教育枯燥、单调的弊端,创造富有生机的教育机制,引导大学生树立正确价值观念,坚定信仰,努力学习,承担起实现中华民族伟大复兴的历史责任感。  关键词:重庆红色资源大学生理想信念  中图分类号:G641文献标识码:A文章编号:1674-098X(2011)05(b)-0145-01    重庆是
随着我国经济规模的迅猛发展和市场化的不断深入,老港口改造与新港口建设同步发展,通过港口的物流计量应运而生并快速发展。本文从分析煤港煤炭计量所用的动态轨道衡特点入手
通过研究创新型城市建设成功案例,分析了由城市创新形成创新型城市的条件及各形成阶段特征,提出了只有具备了创新要素聚集、创新能力提高、j创新体制完善和创新文化浓厚等条件