摘要: 上面一篇文章大致描述了一下插件开发框架整体结构。这篇描述一下核心层的设计和实现。 至于核心层的设计,我想借鉴 一下微内核的思想。核心层只负责实现下面几个功能: 1、 插件的加载,检测,初始化。 2、 服务的注册。 3、 服务的调用。 4、 服务的管理。 插件的加载,检测,初始化 插件的加载利用linux共享库的动态加载技术。具体的方法可以看一下IBM网站的一篇资料《Linux 动态库剖... 阅读全文
posted @ 2009-10-12 20:20 常高伟 阅读(3103) 评论(0) 推荐(0) 编辑
摘要: 这几天为了设计插件开发框架,尝试用了一下发散思维来思考问题。中间看过依赖注入,AOP(面向方面编程),以及契约式设计等。虽然有些工具无法直接使用,但是这些思想还是可以借鉴的,比如依赖注入,契约式设计。至于AOP,和工具相关性较大,虽然思想不错,但是无法直接在C++中使用。 我设计的插件间的依赖不是通过接口实现的,而是通过插件间的数据(信元流)。而信元流的检测可以使用契约来检查。 插件开发框架的总体... 阅读全文
posted @ 2009-10-12 20:20 常高伟 阅读(1240) 评论(0) 推荐(0) 编辑
摘要: 在这一系列的上一个文章中,介绍了构建C/C++插件开发框架的初步设想,下面我会一步步的向下展开,来实现我的这个设想。 今天主要谈一下我对这个框架的功能认识,或是期望。昨天看了一篇关于持续集成能力成熟度模型 的一篇文章,受此启发,我对此框架的认识渐渐清晰。 这个框架可以当做我们公司底层产品(交换机,资源服务器等)的基础设施。上层基于java开发的产品可以直接在OSGI上开发。 核心功能: 1... 阅读全文
posted @ 2009-10-12 20:19 常高伟 阅读(2373) 评论(0) 推荐(0) 编辑
摘要:   使用信元流(TLVStream)规范、简化模块(C/C++)间交互 收藏 问题描述: 在软件开发过程中,一般会对复杂的现实世界进行抽象,并且采用分而治之的策略,将大系统分解为子系统,将子系统分解为一个个的模块。模块间的通信一般采用函数调用的方式,这样会产生一些问题:    1. 模块间的接口增多会导致模块间紧密耦合,不利于模块的重用、调试、维护。  &#... 阅读全文
posted @ 2009-10-12 20:18 常高伟 阅读(1048) 评论(0) 推荐(0) 编辑
摘要: 最近一直在学习OSGI方面的知识。买了一本《OSGI原理和最佳实践》,可是还没有到。遗憾的是,OSGI目前的几个开源框架只支持Java,对C和C++都不支持的。可惜我们公司目前主要的开发语言还是c和c++,即便是引进OSGI,所得的好处范围有限。而我对松散耦合的模块化开发向往已久。查了一下OSGI对C++支持的好像是有一个开源项目,不过好像应用范围很小。而SCA标准中是有对C++实现模型的支持的,... 阅读全文
posted @ 2009-10-12 20:17 常高伟 阅读(4594) 评论(0) 推荐(0) 编辑
摘要: 《重构》第三章学习笔记 我们必须培养自己的判断力,来决定在什么时候进行重构。 1.1  Duplicate Code(重复代码) 如果你在一个以上地点看到相同的程序结构,那么将他们合而为一会更好。 1.2  Long Method(过长函数) 拥有短函数的对象会活得比较好,比较长。 间接层所能带来的全部益处:解释能力(可读性),共享能力(重用性),选择能力(?)。 ... 阅读全文
posted @ 2009-10-12 20:15 常高伟 阅读(687) 评论(0) 推荐(0) 编辑
摘要: 以前做过一个产品,共分为三层:平台层,应用服务器层,应用层。其中有一个业务流程,实现是在应用层,但它那里的信息不全,需要通过应用服务器层向平台层获取必要的业务数据,然后通过应用服务器层控制业务流程。当时考虑这个结构的时候,主要的出发点就是业务和控制分离,将业务处理从平台层剥离开来。当时,在具体是实施过程中,我们工程师对这种结构抵触心理很强烈。他认为我们的业务开发非常的繁琐,而且经常要贴“狗皮膏药”... 阅读全文
posted @ 2009-10-12 20:14 常高伟 阅读(1555) 评论(0) 推荐(0) 编辑
摘要: 1  构筑测试体系 如果你想进行重构,首要前提就是要拥有一个可靠的测试环境。 “编写优良的测试程序,可以极大的提高我的编程速度,即使不进行重构也是如此。” 1.1  自我测试代码(Self-testing Code )的价值 “Class 应该包含他们自己的测试代码。” “每个Class 都有一个测试函数,并用它测试自己这个 Class 。” 确保所有的测试都完全自... 阅读全文
posted @ 2009-10-12 20:11 常高伟 阅读(557) 评论(0) 推荐(0) 编辑
摘要: 我设计的流程引擎是脚步驱动的。脚本中定义了流程执行的环境,流程操作的对象,流程执行的步骤。下面是一个流程脚本的示例: <?xml version="1.0" encoding="utf-8"?> <process name="make_call">     <data type... 阅读全文
posted @ 2009-10-12 20:09 常高伟 阅读(537) 评论(0) 推荐(0) 编辑
摘要: 上一篇介绍了微内核流程引擎开发背景,这篇介绍它的功能描述。 基本功能: 1、能够通过脚本定义流程,更改流程。 2、对软交换系统应用服务器的所有的接口都可以编辑。 3、异常处理,实现补偿机制。 4、流程要支持:顺序执行,分支处理,跳转执行。 5、脚本中支持简单的数据库操作,比如:记录查询(根据查询结果决定流程),字段查询,记录增删改。 扩展功能: 1、提供多种调用形式:1)动态链接库直... 阅读全文
posted @ 2009-10-12 20:07 常高伟 阅读(498) 评论(0) 推荐(0) 编辑
摘要: 开发背景 我们公司是主要从事企业语音方面产品的开发,主要产品比如:调度系统,指挥系统,电话会议系统,呼叫中心系统等。这些系统都有一个共同特点,就是涉及到呼叫,放音,收发按键,会场操作。我们的业务产品都是基于我们的软交换系统之上构建的,软交换系统的应用服务器向外提供这些服务。 产生的问题 我们在开发的过程中就发现一个问题,每个产品在此接口上都会做很多重复的开发,特别是在IVR处理上面。 IVR... 阅读全文
posted @ 2009-10-12 20:06 常高伟 阅读(931) 评论(0) 推荐(0) 编辑