当前位置:  软件>C/C++软件

C++轻量级通用插件框架平台 X3C

    来源:    发布时间:2015-02-11

    本文导语:  X3 C++ PluginFramework 代号为X3的C++轻量级通用插件框架平台是一套通用的C++轻量级插件体系,没有使用MFC、ATL、COM。可在Windows和Linux下编译运行。应用程序可以基于X3插件框架进行快速开发,X3插件框架中的插件既可以单独使用,...

X3 C++ PluginFramework 代号为X3的C++轻量级通用插件框架平台是一套通用的C++轻量级插件体系,没有使用MFC、ATL、COM。可在Windows和Linux下编译运行。应用程序可以基于X3插件框架进行快速开发,X3插件框架中的插件既可以单独使用,又可以灵活组合使用。X3插件框架已经过3年十几个系统的实际使用验证。

目前X3插件框架包括插件内核部分(插件基础、插件管理器、Observer管理器插件、日志管理器插件)和实用技术插件(XML读写封装插件、数据库操作封装插件、文件操作实用插件、文本操作实用插件、本地化字符串表插件等)。

Windows/Linux编译运行环境
本插件机制采用C++实现,用到了C++的RTTI机制和少量Windows API函数,没有使用MFC、ATL、STL,没有使用LIB文件,外部依赖文件少,没有使用VC++特殊编译指令。

编译环境为

1、Visual C++ 6.0/2003/2005/2008/2010,Windows

2、MinGW GCC + Code::Blocks(IDE),Windows

3、Linux GCC + Code::Blocks(IDE),Windows

4、Linux GCC + Makefile

 

X3插件框架的特点有:

a) 接口定义简单灵活
采用普通的C++接口,即由纯虚函数组成的结构体,不需要特殊的基类,不需要宏和UUID申明;同时可以使用C++的各种变量类型,不受COM接口那样的约束。例如下面的接口Ix_定义:

interface Ix_Example
{
     virtual void Foo() = 0; 
     virtual void* GetData(std::vector& items) = 0; 
};

b) 接口与实现分离
对外提供接口文件,在插件内部用类来实现一个或多个接口,不需要对外导出该类或暴露实现细节。这样还有一个好处是只有约定了接口就可以让多个模块并行开发,模块相互之间不存在编译依赖(不需要其他插件的LIB等文件),这可用于测试驱动开发模式。

c) 多接口转换、引用计数管理
采用智能指针类来管理接口的引用计数及生命期,可从一个接口动态转换为另一个接口(内部采用C++的RTTI机制动态转换),可以区分插件内部的接口引用和插件外部的接口引用。

d) 模块透明部署
一个模块只需要使用其他模块的接口,不需要关心该接口是在哪个插件中实现的。可以根据需要将各个实现类进行合并或拆分,使其分布到不同插件中,而接口使用者不受影响。另外,插件部署于哪个目录也不影响插件接口的使用。

e) 模块可替换、可扩展
可根据需要替换某个插件,只有该插件实现了相同的接口,即使内部功能不相同,这样就实现了插件可替换、按需组合。通过在新的插件中支持更多的接口,可扩展更多的功能。可以在新插件中局部替换原有插件的某些接口或部分函数,实现重用和扩展。

f) 线程安全性
本插件机制所提供的内部实现文件考虑了线程安全性,允许多线程访问而不冲突,同时采用的是轻量级的锁定机制(计数原子锁定),运行开销很小。

g) 跨版本
允许不同版本的VC++开发的插件相互调用对方的接口,虽然实际中一般不需要这样做。由于没有采用VC++特殊的编译指令,因此容易移植到其他开发平台下。


    
 
 

您可能感兴趣的文章:

  • 轻量级的 C++ 库 UCommon
  • 轻量级 C++ 的 XML 处理库 pugixml
  • 轻量级的C++单元测试框架 TUT
  • 轻量级门户框架 JPolite
  • 轻量级密码术包 Bouncy Castle
  • 轻量级快速的List实现 GapList
  • 轻量级wiki引擎 WikkaWiki
  • swing是轻量级的容器,awt是重量级的,但swing继承自awt,极度疑惑中。。。。。
  • 轻量级门户框架 JPolite2
  • 轻量级json库 parson
  • 轻量级终端工具 VTerminal
  • 轻量级浏览器 NetSurf
  • 轻量级Web浏览器 Rekonq
  • 轻量级的办公组件 Calligra
  • 轻量级消息内核 ZeroMQ
  • 轻量级 PHP 框架 PHPPixie
  • 轻量级Wiki系统 WiGit
  • 轻量级CMS系统 Wolf CMS
  • 轻量级PHP论坛系统 PunBB
  • 轻量级 Web 框架 FeathersJS
  • 轻量级的 CSS 框架 Fluidity
  • 轻量级 JavaScript 库 particles.js
  • 轻量级的JS的UI框架 UIKIt
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 轻量级的拼音输入提示jQuery插件 xqkinput
  • jQuery 轻量级画廊插件 jQuery lightGallery
  • 轻量级 jQuery 看图插件 phZoom
  • 轻量级Android开发工具 Android Tools
  • 轻量级软件框架 QP
  • 轻量级 NoSQL 数据库 WhiteDB
  • 轻量级的低功耗蓝牙协议栈 bcstack
  • 轻量级数据存储服务 LLServer
  • 轻量级 IRC 客户端 WeeChat
  • 轻量级字符串库 tstring
  • 轻量级音乐播放器 gejengel
  • 轻量级Linux发行版 boot2docker
  • HTML教程 iis7站长之家
  • 轻量级DNS服务器 djbdns
  • 轻量级 VPN 软件 SigmaVPN
  • 轻量级SSH终端 Mosh
  • 轻量级phpMVC框架 MyfMVC
  • 轻量级的ORM库 Idiorm
  • 轻量级PHP框架 CXPHP
  • 轻量级的PHP框架 Thinp
  • 轻量级PHP框架 Scorpio
  • 轻量级PHP开发框架 JJPHP
  • 轻量级PHP框架 MochiPHP


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3