jphone项目设计介绍(一个基于C++的应用程序框架以及软电话和日志服务器应用)

一、源码路径

https://github.com/weiganyi/jphone

 

二、界面截图

由于应用程序框架本身没有界面,所以这里显示一下基于应用程序框架开发的两个应用程序的界面。

软电话界面:


日志服务器界面:



三、背景

最开始做这个项目的时候,是由于发现了一个叫PjSIP的开源SIP协议栈,实现上要比OSIP成熟许多,用它来开发SIP应用也更简单方便,我就考虑基于PjSIP来做一个SIP软电话原型。

我选择用C++语言来实现,原因是我想要在这个项目中实现一些通用机制,C++语言比那些解释语言更适于底层开发,同时C++的语言特性也要比C语言丰富许多。

软件界面这块我用VC来做,但是我之前只用过VC6,新的VC版本没有用过,考虑到这只是一个原型产品,界面难看点关系不大,本着界面能用就行的原则,还是使用VC6来做界面。

对于软件配置的存储,采用本地文件和MySQL数据库并行的方式,主要考虑还是想提供多样化的选择。

项目分了两个阶段,第一阶段我把这个SIP软电话原型实现了,也实现了一些基本的通用机制。后来随着自己对软件系统架构理解的积累,我考虑着要把那些通用机制增强成一些通用组件框架,并且能够基于这个组件方便的开发其它的应用程序,这就对组件的通用性提出了更高的要求。第二阶段我进行了代码重构和增强,实现了一个通用的应用程序组件框架。为了验证组件框架的通用性,除了原来基于它实现的SIP软电话原型(单线程模式)外,我还实现了一个日志服务器原型(多线程模式)。

对于操作系统接口的使用,目前直接使用的Windows的接口,后续如果要做多操作系统兼容,可以再对操作系统接口进行封装,这是个工作量问题。

 

四、功能实现

项目的功能实现分以下三部分:

1、实现通用的应用程序组件框架,封装操作系统的基本接口,不依赖第三方库实现开发其它应用程序所需的各类组件模块,提供方便的使用接口。

2、实现SIP软电话原型,能够通过软件界面操作完成基本通话,支持基本的配置参数,发起呼叫可以通过号码按键或点击最近通话号码的方式进行。

3、实现日志服务器原型,支持最多10个日志客户端的同时连接,并能显示选中连接上接收的日志,支持基本的配置参数。

 

五、总体设计思路

1、组件框架包含了几十个类,所以设计了一个类的继承体系树,从最基本JObject根类派生出其他各式各样的类。把同一类功能的类封装在一个模块里,对于每个模块,如果有多种类型的类就要定义一个抽象基类来定义它们的接口。

2、通过一系列通用模块来构成应用程序组件框架,如:模块、异常、智能指针、锁、单件、字符串、日志、内存管理、定时器、通信、消息路由、事件、链表、队列、持久化、后台任务、线程管理等。

3、基于应用程序组件框架,通过增加上层的SipUa模块和代理模块就能实现出SIP软电话,通过增加上层的日志服务器模块和代理模块就能实现出日志服务器。

4、为了避免名字污染,对于应用程序组件框架的各个模块,都包含在JFrameWork的名字空间里。在SIP软电话和日志服务器里,要把这个名字空间引用进来。

5、应用程序的配置存储支持Ini文件、Xml文件、MySQL三种方式,根据JDaemon后台任务的配置文件jdaemon_cfg.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值