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

推荐订阅源

Google DeepMind News
Google DeepMind News
人人都是产品经理
人人都是产品经理
H
Hacker News: Front Page
Stack Overflow Blog
Stack Overflow Blog
B
Blog
I
InfoQ
GbyAI
GbyAI
T
The Blog of Author Tim Ferriss
F
Fortinet All Blogs
Y
Y Combinator Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
月光博客
月光博客
Hugging Face - Blog
Hugging Face - Blog
爱范儿
爱范儿
F
Full Disclosure
Hacker News - Newest:
Hacker News - Newest: "LLM"
Recent Announcements
Recent Announcements
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Jina AI
Jina AI
T
Tailwind CSS Blog
S
Secure Thoughts
P
Privacy International News Feed
美团技术团队
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
L
LINUX DO - 最新话题
H
Hackread – Cybersecurity News, Data Breaches, AI and More
C
Cybersecurity and Infrastructure Security Agency CISA
Last Week in AI
Last Week in AI
W
WeLiveSecurity
Google Online Security Blog
Google Online Security Blog
P
Privacy & Cybersecurity Law Blog
D
DataBreaches.Net
Engineering at Meta
Engineering at Meta
Know Your Adversary
Know Your Adversary
P
Palo Alto Networks Blog
I
Intezer
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Project Zero
Project Zero
V2EX - 技术
V2EX - 技术
H
Heimdal Security Blog
博客园 - Franky
阮一峰的网络日志
阮一峰的网络日志
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
Troy Hunt's Blog
V
Vulnerabilities – Threatpost
H
Help Net Security
Martin Fowler
Martin Fowler
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
G
GRAHAM CLULEY
博客园 - 【当耐特】

博客园 - 东成西就

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

二、LightweightCTI体系结构

在深入介绍LightweightCTI之前让我们首先大概了解一下其体系结构,这样有助于我们理解其工作原理、实现方式,特别是其中应用的一些设计模式。LightweightCTI的首要设计目标是为各种语音卡接口的实现提供一套支持框架,而非前面提到的为语音应用开发提供可用的实现框架(当然我们也会实现一些特定厂商平台的相关接口)。所以,我们将重点讨论包含于LightweightCTI中的基础接口,并阐述它们是如何相互协作一起完成支持语音相关应用开发任务的。

2.1、系统组件容器

它是一个可扩展的基础结构,通过它可以将各种不同的功能扩展组件有机的粘合在一起,并使这看起来像更像是一个有机的整体,所以说它为LightweightCTI的粘合剂一点也不为过。系统组件容器具体的表现为,系统插件管理器及其对应的插件接口,由它们共同组成系统的核心层,并负责扩展组件、公共服务、全局属性的注册与管理工作。

2.2、系统扩展组件

扩展组件完成具体的功能,并为其上层组件提供服务。通过将不同的扩展组件注册到容器中即可组装成不同的应用系统,同时利用它也可以对应用系统进行分割,为系统的团队开发、调试、版本控制及部署提供方便。

2.3、全局属性、公共服务

为完成某个任务系统中的不同组件可能都需要一组公共的服务及全局属性,而它们则是专门负责这方面工作的。在系统的基础结构中提供了一组预定义的公共服务如文件读取、配置信息的读写等,当然你也可以针对自己的应用编写并注册相关的服务。

为此,LightweightCTI是建立在以上三种类型的组件所构成的微核心系统之上,具体的功能则由插入到内核上的一个或多个扩展组件构成。

系统的体系结构如下图所示:

(2.1 LightweightCTI体系结构图)

为保证系统的扩展性,采用插件树的形式来组织注册到组件容器(插件管理器)中的扩展组件。插件树是一种树形结构,在系统中管理和维护所有的插件,并对每个插件提供的功能进行描述。插件树通过插件定义文件(.addin)的一种XML文件加载所有的插件,在此我们不想就为什么采用XML文件来定义插件而展开讨论,关于它的优点已有无数的文章进行了详尽的阐述。而插件则将采用DLL或其它形式(如Delph/C++Builder中的Package)进行封装。

加载插件后的系统内部组织结构如下图所示:

(图2.2 系统内部组织结构)

  由插件树构成的系统有点类似于操作系统中的目录树。插件树中有两种不同的对象:节点与路径。插件树中的节点是包含某种特定功能的模块,由根节点加上路径构成。应用系统的功能就由插入到系统中的节点来定义,而路径则是由根节点到子节点的边线构成。如AddInRoot\SubPath1\SubNode1\SubPath2,这非常像操作系统中的文件/目录路径,节点则是包含行为的特殊路径。通过此种方式来划分软件结构的优点在此处就不多说啦。由于时间及精力的问题本部分的实现部分正在进行中。下面我们将重点介绍其中一个扩展子系统-板卡适配器层方面的内容,这也是大家最为关心的部分。