Chinaunix首页 | 论坛 | 博客
  • 博客访问: 121145
  • 博文数量: 32
  • 博客积分: 2011
  • 博客等级: 大尉
  • 技术积分: 375
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-03 17:57
文章分类

全部博文(32)

文章存档

2011年(1)

2009年(8)

2008年(23)

我的朋友

分类:

2008-04-18 11:43:47

    XPCOM技术背后的思想是提供一个于语言和平台都无关的模块框架。没有什么是C++可以完成,而javascript或其它脚本语言不能完成的。XPCOM中用来实现这个壮举的机制是类型库
类型库
    类型库为描述模块的方法、属性、参数和接口提供了一种公共的数据格式或者说是互换准则。通过建立公共数据格式,相同的接口可以在多种平台上被描述,也可以被多种语言描述。这一点对于支持普适编组机制或代理机制很有用处。使用类型信息,程序可以确定某一接口给定方法和属性的每一个参数。有了该知识,数据就可以在接口和其他环境中传递。上述其他环境可以是一个脚本引擎或者是跨线程、跨进程或者跨网络的代理机制。如果是脚本引擎,就是一个组件如何在脚本环境中被定义,以至于脚本代码可以激活一个组件接口的方法。
    XPConnet是一个建立在XPCOM顶上的附加层,可以通过读取XPCOM类型库文件将XPCOM接口编制到JavaScript引擎中。XPConnect同样允许你完全用JavaScript来写XPCOM组件,这样你就可以用C++代码来调用js组件,或者用JS来装载操作C++编译的组件。除了JavaScript,Python语言也是一种使用类似XPConnet机制的语言。
接口定义
    用语言无关方法来定义接口就是用IDL(interface description language)来定义。可以从一个用IDL描述的接口中创建一个类型库文件的工具叫IDL编译器。XPCOM使用的IDL语言跟OMG CORBA或微软的IDL有微小的差别,所以XPCOM是用不同的IDL编译器——xpidl编译器。xpidl编译器的一个很有趣的特征是在选择从接口定义生成C++代码stub的时候,会生成创建一个新工程时需要的几乎所有声明性C++代码。CORBA和微软IDL编译器也有类似的特点。下面是一个shell下运行xpidl的说明。
阅读(1739) | 评论(0) | 转发(0) |
0

上一篇:乱弹

下一篇:激励

给主人留下些什么吧!~~