- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SCOM: Linux平台下的一个轻量级组件对象模型 潘爱民 2003-10-17 /CompCourse2003 关于MS COM COM规范是跨平台的,但是COM实现是平台相关的 在其他平台上也有类似的需求 我们关注Linux平台 为什么在Linux平台上需要组件模型 为了设计出更好的软件 软件各部分之间耦合度更小 为了软件的扩展 针对系统:一个系统范围的组件体系 针对应用:一个应用范围的组件体系 例如,许多opensource的软件都提供了源代码一级的扩展机制,不方便 如何设计SCOM SCOM接口 采用COM的思想和规范:vtable指针 基接口:IUnknown SCOM对象 可以实现多个接口;IUnknown唯一 SCOM组件 Linux平台下的动态链接库:.so文件 SCOM接口 基接口IUnknown SCOM对象 类对象 类对象实现了接口IClassObject 创建过程 SCOM客户调用SCOM库中的GetClassObject GetClassObject查找组件配置库,根据组件的id找到所在的位置 将组件加载到进程中 调用组件的SoGetClassObject创建类对象 原路返回,客户获得类对象 调用类对象的CreateInstance创建SCOM对象 SCOM组件 依赖于系统提供的动态链接支持 Linux提供了动态链接库的特性,用到的技术 位置独立的代码(PIC, Position Independent Code)。 模块中的转移指令均采用相对跳转,不使用绝对跳转指令。因此,无论该模块被加载到何处,代码均不需改动 为了支持动态链接,编译器(compiler)、链接器(linker)和加载器(loader)需要协同工作,以便将动态链接库中的函数和客户模块中的调用指令连接起来,而且加载器还必须保证不会修改动态链接库中的代码段,以保证它可被所有的客户进程共享 SCOM组件(续) 在Linux平台下 利用gcc的-fPIC、-shared等编译选项可以生成动态链接库(.so文件) 在客户程序中 利用dlopen加载.so动态链接库 利用dlsym获得其中的导出函数 利用dlclose释放相应的动态链接库 SCOM结构模型 关于SCOM的模型 SCOM库仅供客户程序使用 关于注册库 .so组件调用注册库完成注册功能 SCOM库通过注册库维护配置信息 注册库是一个静态库,它负责SCOM组件的配置信息的维护工作 SCOM客户和组件都不直接访问配置库,从而保证配置库的一致性 SCOM组件配置库 在一定范围内是全局的,相当于COM中的注册表 对于系统级的SCOM,它位于一个全局的目录中,所有的应用都将组件信息注册到该配置库中 例如,可以位于/etc/scom.config中 对于应用级的SCOM,它位于应用的主目录中,往往与主程序在同一个目录下,甚至可以与主程序同名,后缀为.config SCOM注册库与配置库是关联的,只要替换掉注册库文件,就可以改变配置库的实现方法 实现注册库 基本上决定了组件的应用范围 实现三个函数: WriteCompInfo、ReadCompInfo、RemoveCompInfo 组件和SCOM类的唯一标识 扩展信息,比如关于SCOM接口的信息 灵活性 可以用简单的文本方式 可以用二进制方式,甚至加密格式,以防随便篡改 SCOM库的实现 创建任务:创建类对象,或者SCOM对象 调用注册库获取SCOM组件的信息 注册功能 提供RegisterComponent函数,通过注册库将组件的信息写入到配置库中 组件管理:UnloadComponents 当前进程中所有组件的生命周期管理 内部维护一张表,记录当前进程中所有被加载的SCOM组件,避免重复加入,并且,客户可以调用UnloadComponents,以卸载当前不用的组件 SCOM库的注册 自注册SCOM组件 通过外部的工具软件,调用SCOM组件的引出函数SoRegisterComponent 非自注册组件 外部程序(可能是客户)调用SCOM库的RegisterComponent函数,提供有关组件的信息 SCOM的开发支持 SCOM客户 开发过程比较简单,直接调用SCOM库的创建函数,然后调用SCOM接口的函数即可 SCOM服务器 实现SCOM对象 需要实现类对象和三个引出函数 考虑到软件实现的复用,可以将类对象和三个引出函数的实现做成一个支持库,避免重复开发,特别对于应用一级的SCOM SCOM的应用 网络模拟器中的协议分析器 新增加一个协议,就需要增加一个组件 在入侵检测系统中,检测方法 新的方法出来之后,增加新的组件 系统级:…… SCOM的特点 优点: 结构清晰,扩展性好 效率高,虚函数调用的开销 缺点 开发不方便 可以
您可能关注的文档
- 、教材分析:.ppt
- _ 国际汽车工业质量管理体系.ppt
- “知荣明耻学做人” 辩论大擂台.ppt
- 《白鹅》教学设计 天德学校 高雪茹.ppt
- 《心血管疾病介入诊疗技术管理规范》解读.ppt
- 《长方体和正方体的表面积》魏春杰.ppt
- 1、 的指数是 底数是 读作 表示的意思是 。.ppt
- 1.2 材料的力学性质.ppt
- 1.2.2算法基本语句.ppt
- 1.放射性,放射现象.ppt
- 2024-2025学年山西省名校5月普通高中毕业班质量试卷语文试题试卷含解析.doc
- 2023-2024学年江苏省南通等六市高三第二次联考英语试卷含解析.doc
- 2024届江西省吉安市吉安县第三中学高三第二次诊断性检测语文试卷含解析.doc
- 2024届江苏省徐州市第三中学高三一诊考试语文试卷含解析.doc
- 安徽省定远县育才中学2023-2024学年高三第六次模拟考试语文试卷含解析.doc
- 2023-2024学年广东省揭阳一中、潮州金山中学高考压轴卷语文试卷含解析.doc
- 2024届山东省滨州市博兴县第一中学高三下第一次测试语文试题含解析.doc
- 2024届云南省曲靖市宣威市第九中学高三二诊模拟考试语文试卷含解析.doc
- 2024届广东省重点名校高三第二次诊断性检测历史试卷含解析.doc
- 2023-2024学年四川省乐山市重点中学高考冲刺英语模拟试题含解析.doc
文档评论(0)