惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - 东成西就

重灾面前,我们有力量面对一切困难! 试一下 使用CAB中EventBroker碰到困难,暂记于此! 在.NET中动态编译与执行脚本文件 db4o学习笔记(五)、处理结构化对象上 db4o学习笔记(四)、db4o查询详解续 db4o学习笔记(三)、db4o查询详解 db4o学习笔记(二)、第一次亲密接触 db4o学习笔记(一)、db4o概览 LightweightCTI架构设计(5) LightweightCTI架构设计(4) LightweightCTI架构设计(3) LightweightCTI架构设计(2) LightweightCTI开发实录(5)板卡适配器概述 LightweightCTI开发实录(4)系统如何工作 LightweightCTI开发实录(3)分析之前 系分考试准备的论文(6):论系统设计中对用户需求的把握 LightweightCTI开发实录(2)项目计划 LightweightCTI开发实录(1) 缘由
LightweightCTI架构设计(1)
东成西就 · 2006-08-30 · via 博客园 - 东成西就

LightweightCTI架构设计

文档名称:LightweightCTI架构设计

作  者:东成西就(Sjteksoft@gmail.com

版  本:V1.0.0.0

适用架构:LightweightCTI for Delphi/C++Builder 1.0.0.0

修订次数:

创建时间:2006-08-26

修改时间:

目     录

一、序言

1.1LigthweightCTI定义

1.2、本文的目的

1.3、本文适合谁

1.4、可参考资源

1.5

二、LightweightCTI体系结构

2.1、系统组件容器

2.2、系统扩展组件

2.3、全局属性、公共服务

三、板卡适配器层

3.1、通道管理器(ChannelManager

3.2、板卡适配器(CTICardDriver

3.3、通道(Channel

3.3.1、通道接口定义

3.3.2、两种开发模式对比

3.3.3、通道工作机制

3.3.4、脚本引擎的挂接

3.3.5、采用TTS放音

四、适配器层定义的服务

4.1、任务管理器(TaskManager

4.1.1、任务队列填充器(TaskQueueFillter

4.1.2、任务(Task

4.1.3、会话(Session

4.2、临界区服务(CriticalSection

4.3、日志服务(Log Service

4.4XML解析服务(XMLParse Service

五、适配器层整体结构图

六、应用LightweightCTI的软件结构

6.1、框架整体设计模式

6.2、应用LightweightCTI的软件结构

七、LightweightCTI发展规划

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

一、序言

八月初在完成公司催缴与查询系统后,有时间坐来整理一下自己在LightweightCTI方面思路。经过反复的思考,我决定抛弃写应用框架的想法,为什么呢?其实也十分简单,因目前工作性质方面的原因,没有机会去收集和验证很多不同行业的应用需求,而在缺乏有效需求的情况下是没有可能写出比较完善的应用软件,所以就没有必要去浪费时间写一套不适用也没有人用的应用软件:)那LightweightCTI就此停止了吗?当然不,其实使用它我们还是可以做许多事情的,特别的其本身也还有许多工作未完成。于是有了第三次对LightweightCTI的重构工作(这个在后面会详细的讨论),也才有了这篇短文。首先让我们来看看本人写的第一个催缴程序是如何的吧。

(图1.1 月份完成的第一个语音程序)

一般的开发人员在写此类软件也大概如此,有经验的朋友一眼就看出来啦,这是根据东进的例子改过来的程序。大家是不是觉得十分笨拙呢?让各位见笑啦,难道就没有更好、更方便的方法了吗?让我们再看看如何运用重构后的LightweightCTI框架来写语音应用业务逻辑的。

(图1.2 模拟CallAnalyze演示程序)

这其中的差距是不是很大呢?这就是LightweightCTI的作用,它能够帮助开发人员以最少的代码完成尽可能多的工作,开发人员通过LightweightCTI将不用再关心底层的语音卡是如何工作的,当然你也可以为LightweightCTI添加其它功能与接口,使之更加完善以适应你所在的企业环境。

1.1LigthweightCTI定义

简言之LightweightCTI是一套旨在帮助开发人员迅速构建语音相关应用的一套开放源代码的基础框架,目前你下载和使用的是构建于Pwin2000 + Delphi/C++Builder环境下的框架,所有的基础性代码使用Pascal语言完成。LightweightCTI的最终目标不是成为一套可在多种语音卡基础上使用的IVR软件(尽管目前其仅仅支持东进模拟卡的大部分功能),而是希望其成为语音应用开发的基础性框架,为此它当然需要有跨开发语言、跨语音板卡的能力。当然在写本文是我还只是做了一点点的基础性工作而矣,也希望通过它来促成LightweightCTI本身的发展,使其真正成为大家在开发语音应用时可用、能用的框架。通过本次重构其本身的架构已经基本定了下来,而且本人也居于它开发完成了公司的语音催缴与查询系统,所以其完全可应用于一般的应用开发中。同时,为了便于大家对LightweightCTI进行扩展,在接下来的时间我会为其写一套可插拨的插件容器,只要符合其接口规定的组件都可以成为LightweightCTI的一部分。另外一方面,希望通过此次发布收集大家的意见以便进一步完善其设计。

使用LightweightCTI可带来哪些好处呢?

Ø         简化语音应用的开发难度,使开发人员可以将精力集中于企业业务逻辑的开发;

Ø         屏蔽不同厂商、不同型号语音板卡之间的差异,使你的开发成果能够在不同环境之下很好的复用;

Ø         有利于进行团队开发,不同的业务逻辑或基础组件都可以并行的进行;

Ø         ……

以上是其能够开发带来的一些主要优点,当然,从其它层面给企业带来的方便地球人都知道,因本文的重点不在于此,所以也就不再罗嗦啦。

1.2、本文的目的

这也算是一种设计吧,事后的设计:)当然我们的LightweightCTI还只是一个开始,并不是说所有的工作都已经完成了,应该说是在某个已经可以工作的原型基础上,停下来审视已经完成的工作,并对其中不完善的地方进行持续的重构、迭代,以使后期的工作可以轻松一些,俗语说得好磨刀不误砍柴功嘛。本文中包含了LightweightCTI框架的所有详细设计内容,对于其工作原理、实现方式、如何使用都进行了讨论,是LightweightCTI开发和使用人员的必读文本。

1.3本文适合谁

既然谈设计就是要让使用LigthweightCTI的你明白它是如何工作的,所以本文面向的主要读者应该是决定使用LightweightCTI进行语音开发的程序员,通过本文将使开发人员明白LightweightCTI的工作机制及其中应用的一些软件设计模式。同时,通过LightweightCTI也想让大家知道如何通过面向对象技术来构造应用软件。其次,本文也适用于系统分析师、软件设计人员作为面向对象软件架构的一种参考资源,而不论你打算将其作为正面或反面的教材给你的组员介绍;&再次,对于那些正在或准备使用Delphi进行应用软件开发的程序员来说,蕴含于LightweightCTI项目内的一些技巧将使你受益非浅;最后,希望通过对其详细的剖析让刚进入软件设计领域的朋友知道,在面对一项陌生任务时如何着手解决你所面临的问题,也省去了老是回答一些只要使用GOOGLE等搜索引擎简单查询一下就可以知道答案的初级问题。

1.4、可参考资源

1、  深圳东进公司的网站http://www.dj.com.cn

2、  一个专业的CTI网站http://www.ctiforum.com/

3、  Delphi 5开发人员指南;

4、  Delphi源代码分析;

5、  敏捷软件开发 原则、模式与实践;

6、  重构 改善既有代码的设计;

7、  伴随LightweightCTI成长的QQ技术群4624353,是群里的兄弟在我遇到困难时无私的帮助我;

8、  LightweightCTI for Delphi/C++Builder 1.0.0.0的源码包。

1.5、感谢

  要感谢我的夫人冷碧莲,在LightweightCTI的开发过程中尽管她已有身孕,但仍操持着几乎全部的家务,让我能够安心的完成软件开发工作,还有我们共同期盼着的宝宝,虽然很久很久以后你才会知道,是你的降临让我变得成熟与坚毅起来。同时,还要感谢我的同事及好友王东清先生为我创造了宽松的开发环境,在我遇到困难时伸出温暖的手给予我莫大的帮助。最后要郑重地感谢bluesen兄对于我在语音方面的开发给予了很大的帮助和支持,他的Koodoo平台是语音应用方面比较成熟的平台,感兴趣的朋友可以访问他的网站http://www.bluespace.com.cn。在此,我只想说的一句话是 谢谢你们!