CN103763325B - 构建ip安防产品开发环境的方法 - Google Patents
构建ip安防产品开发环境的方法 Download PDFInfo
- Publication number
- CN103763325B CN103763325B CN201410038735.3A CN201410038735A CN103763325B CN 103763325 B CN103763325 B CN 103763325B CN 201410038735 A CN201410038735 A CN 201410038735A CN 103763325 B CN103763325 B CN 103763325B
- Authority
- CN
- China
- Prior art keywords
- module
- framework
- interface
- architecture
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 97
- 238000012356 Product development Methods 0.000 title claims abstract description 12
- 230000008569 process Effects 0.000 claims abstract description 64
- 230000003993 interaction Effects 0.000 claims abstract description 50
- 230000007246 mechanism Effects 0.000 claims abstract description 28
- 230000006854 communication Effects 0.000 claims abstract description 26
- 238000004891 communication Methods 0.000 claims abstract description 25
- 230000002452 interceptive effect Effects 0.000 claims abstract description 8
- 230000006870 function Effects 0.000 claims description 18
- 238000012545 processing Methods 0.000 claims description 17
- 238000010276 construction Methods 0.000 claims description 16
- 238000012544 monitoring process Methods 0.000 claims description 10
- 230000008859 change Effects 0.000 claims description 9
- 238000013461 design Methods 0.000 claims description 9
- 238000009472 formulation Methods 0.000 claims 1
- 239000000203 mixture Substances 0.000 claims 1
- 238000011161 development Methods 0.000 abstract description 14
- 230000008901 benefit Effects 0.000 abstract description 3
- 238000012423 maintenance Methods 0.000 abstract description 3
- 238000012938 design process Methods 0.000 abstract 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000003920 environmental process Methods 0.000 description 1
- 230000008571 general function Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提供了一种构建IP安防产品开发环境的方法,它包括逻辑架构设计流程及架构构建流程;其中构建逻辑架构流程包括抽象领域实体,将各类IP安防产品的设备、进程、模块、资源分别抽象为逻辑架构中的独立元素的步骤;所述架构构建流程包括为逻辑架构中每个元素分配唯一标识、构建通用机制、构建元素交互管理中介模块的步骤。本发明的有益效果在于通过将各类IP安防产品的设备、进程、模块、资源分别抽象作为架构元素,再由中介模块作为统一中介根据配置的通用机制负责元素间的相互通信、交互数据,从而使得开发环境下各模块独立性强,方便扩展。
Description
技术领域
本发明涉及安防开发环境领域,尤其是指一种构建IP安防产品开发环境的方法。
背景技术
自从安防产品多样化,功能普遍化,开发迅速化以来,传统的开发环境已显得力不从心,开发速度赶不上市场需求的变化,所以如何提高已有开发成果的易维护、易复用性、易扩展性显得尤为重要。
随着安防监控领域的不断发展,现有的传统的开发环境已显得有些疲软。经常见到:
1、每一类产品,甚至每一个功能模块,有各种不同版本,不利于维护,复用程度低;
2、各功能模块间耦合性比较强,往往一个模块的改变,会影响其他模块;
3、各功能模块使用的关键技术,没有统一管理,重复性比较强,造成大量冗余代码;
4、程序设计偏向于过程,没有面向对象编程的优越性。
这些问题的出现,既需要大量的人力成本投入,又面临刚开发出的产品已经过时的风险。
为了解决上述出现的一些问题,让产品周期缩短,在传统的三层架构基础上,对业务层、数据层进行了改进,开发了一套适用于IP系列产品,基于面向对象,高度模块化的程序开发架构。该架构中的业务层框架,采用类似网络星型的设计模式,框架中有一个中介模块(Core),负责整合产品各模块,模块间通过中介模块(Core),互相通信,中介模块(Core)提供与外部通信的统一接口,各模块的属性及数据由核心统一管理,各模块可动态加载,依据不同产品,以最小的变化,灵活组装成新的产品。
该改进的程序架构,基于面向对象的思想,通过中介模块(Core)的集中管理方式,功能模块的高度模块化的基础上,不仅降低了大量的人力投入成本,同时提高了市场需求迅速产品化的速度。
发明内容
本发明的目的在于克服了上述缺陷,提供一种构建IP安防产品开发环境的方法。
本发明的目的是这样实现的:一种构建IP安防产品开发环境的方法,它包括逻辑架构设计流程及架构构建流程;
所述构建逻辑架构流程包括步骤:
抽象领域实体,将各类IP安防产品的设备、进程、模块、资源分别抽象为逻辑架构中的独立元素;
所述架构构建流程包括步骤:
为逻辑架构中每个元素分配唯一标识;
构建通用机制,包括为各元素相互通信、交互数据制定统一通讯协议以及制定逻辑架构中消息分发机制;
构建元素交互管理中介模块,包括制定公用接口句柄、提供常用功能操作句柄类以及建立元素交互中介桥梁机制;
上述方法中,所述架构构建流程的制定统一通讯协议包括,
制定通讯协议包括数据头、数据长度、发送者对应元素的唯一标识、接收者对应元素的唯一标识及数据内容的步骤;
所述数据头用于标识交互类型,其包括设备内模块间交互、远端设备与本地设备交互及远端设备与本地设备的模块交互;
所述数据内容包括消息类型、消息范畴及消息子类型;所述消息类型包括命令、数据、回复信息;所述消息范畴包括控球、码流及智能;
上述方法中,所述架构构建流程的制定逻辑架构中消息分发机制包括,
根据通讯协议中数据内容的种类对应执行消息分发的步骤,其中,
若数据内容为流数据,则将流数据的存放首地址及长度发送给接收者,待所有接收者都从地址处取完数据后,再继续发送;
若数据内容为命令,则以点对点方式从发送者对应元素的唯一标识为发送端向接收者对应元素的唯一标识的接收端进行数据内容的发送;
若数据内容为状态信息,则将状态信息更新至架构中,并将状态变化通知订阅监听该状态信息的元素;
若数据内容为配置信息,则接收配置信息后对其进行验证,将验证后的配置信息保存后应用;
上述方法中,所述架构构建流程中构建元素交互管理中介模块的制定公用接口句柄包括,制定架构操作接口、制定用户处理操作接口、制定元素属性及状态管理处理接口与制定其它接口的步骤;
所述制定架构操作接口的步骤为将框架各元素操作接口封装与一个接口类以及将设备、模块、资源元素的相关操作接口封装于另一个接口类;所述框架各元素操作接口包括架构启动时初始化元素接口、加载模块接口、维护各元素的状态变化接口及架构内元素发送通知和消息接口;
所述其它接口的步骤为制定加载者接口类及模块库操作接口类;其中,加载者接口类用于架构初始化操作,读取配置文件后启动架构中的进程,而后进程通过模块库操作接口类获取所要加载的模块库的操作接口,将模块元素的模块操作接口映射到模块对应的动态库接口的地址;
上述方法中,所述架构构建流程中构建元素交互管理中介模块的建立元素交互中介桥梁机制包括,
建立中介模块,使架构中各元素的通过中介模块作为中介进行交互,中介模块根据制定逻辑架构中消息分发机制对元素间的数据交互进行分发;
上述方法中,还包括架构运行环境流程;所述架构运行环境流程包括步骤,
部署运行环境中各元素,根据配置的元素需求选择包括模块库、公共库、第三方库、SDK的组件;
架构启动,根据默认配置文件将模块与资源的属性初始化到架构中,然后建立用于侦听和发送模块状态的工具线程,接着读取配置文件初始化架构中各设备、进程、模块、资源元素,最后根据运行参数/启动配置文件启动进程;
架构初始化,根据配置文件初始化设备加载者、加载资源库和模块库、创建与远端设备通信的状态发送线程、初始化环境与架构用户及用户组权限、加载运行模块、创建中介模块中各线程。
本发明的有益效果在于通过将各类IP安防产品的设备、进程、模块、资源分别抽象作为架构元素,再由中介模块作为统一中介根据配置的通用机制负责元素间的相互通信、交互数据,从而使得开发环境下各模块独立性强,方便扩展。
附图说明
下面结合附图详述本发明的具体结构
图1为本发明的IP安防产品开发环境逻辑架构;
图2为本发明的IP安防产品开发环境的一具体实施例框架图;
图3为本发明的架构启动流程图;
图4为本发明的架构初始化流程图;
图5为本发明的架构中模块加载、运行的简单流程图;
图6为本发明的架构中中介模块中各线程创建流程图;
图7为本发明的架构中本地设备消息发送处理机制流程图。
具体实施方式
为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。
本发明提供了一种构建IP安防产品开发环境的方法,它包括逻辑架构设计流程及架构构建流程。
其中逻辑架构设计流程包括步骤:
抽象领域实体,将各类IP安防产品的设备、进程、模块、资源分别抽象为逻辑架构中的独立元素。
在安防领域中,用户为满足自身的安防需求,购买相应的产品,监控指定区域,利用产品输出的用户感兴趣的数据,比如视频、报警触信息等,以达到安全防护的目的。
为此,在本专利中,将一个产品简单视为一个设备(Host),设备可能包含各种为设备服务的进程(Process),每个进程任务的实现又由多个模块(Module)来实现,各模块具有自己的资源数据(Resource),每个资源数据都有自己的状态。特别是对于安防领域而言,存在多种类型的产品,但它们都由设备(Host)、进程(Process)、模块(Module)、资源(Resource)等元素组成,元素可以依据需求自由添加,设备通过其内的xml格式的配置文件体现当前产品中各元素的静态组织关系。鉴于如此,本步骤对架构中的各实体进行基于对象的设计,将设备、进程、模块、资源(可以向外界提供的数据)都抽象为架构中的一个元素,为每个元素分配唯一标识进行标识,以便于后续它们之间能互相交互,共同完成一个产品的功能。
如图1所示的逻辑架构中,
Host:设备,可以为NVR、Dome、IP Camera、Decoder、Encoder
Process:架构中各服务进程
Module:架构中各功能模块
Resource:各模块下的资源,即可以向外界提供的数据,本发明逻辑架构中,上述各产品间在领域中相互合作,共建安防监控环境。
基于上述元素抽象,使得产品中各对象实体(Host、Module、Resource)得以独立,然而其之间的互相通信、交互数据以及交互复杂度会随着对象实体的个数不断提高,因此下一步必须提取共同处理机制,进行协调,减少对象间的依赖关系。对应的,在架构构建流 程中包括步骤:
为逻辑架构中每个元素分配唯一标识。
产品中各对象实体(Host、Module、Resource)之间,互相通信,交互数据。由于交互复杂度,会随着对象实体的个数不断提高,必须提取共同处理机制,进行协调,减少对象间的依赖关系,为此接下来需要构建通用机制,包括为各元素相互通信、交互数据制定统一通讯协议以及制定逻辑架构中消息分发机制。
通过上述步骤,已经确定好架构中各元素(Host、Process、Module、Resource)间的交互内容及方式,但是如何管理这些交互,是个问题。由于架构中元素的个数是不确定的,意味着交互的复杂度也不可确定,如果每个元素间的交互,自己处理,在架构中会出现很多协作关系、协作信息,这样不利于架构扩展、维护。为此本专利技术构建元素交互管理中介模块,包括制定公用接口句柄、提供常用功能操作句柄类以及建立元素交互中介桥梁机制。由此,由该中介模块负责提供各元素使用的公用接口,作为各元素间的交互协调者(中介桥梁)。
进一步的,上述架构构建流程中构建元素交互管理中介模块的提供常用功能操作句柄类的目的在于:针对架构中各元素难免会使用同一个工具,完成不同的功能,而这些工具可能涉及到底层或者C/C++标准库等操作,为了让各元素不用关心底层变化,在中介模块封装了相关的操作。将各操作类型分类,提供操作句柄类,使用者只要持有该类的句柄,即可很方便地使用。例如架构中主要提供了内存操作类、架构缓存操作类、线程同步操作类、时间操作类、xml解析操作类等。架构中各元素可以直接获取这些类的操作句柄,使用各类提供的接口函数,实现自己的功能。
综上可见,本IP安防产品开发环境通过各类IP安防产品的设备、进程、模块、资源分别抽象,再由中介模块作为统一中介根据配置的通用机制负责元素间的相互通信、交互数据,从而使得开发环境下各模块独立性强,方便扩展。
在一实施例中,上述架构构建流程的制定统一通讯协议包括制定通讯协议包括数据头、数据长度、发送者对应元素的唯一标识、接收者对应元素的唯一标识及数据内容的步骤。
通讯协议如下表:
Header type | Message data size | Source guid | Target guid | Message |
2bytes | 4bytes | 16bytes | 16bytes | Variable size |
进一步的,本发明的通讯协议中的数据头设计分三种交互类型HEADER_TYPE1(0xFF01)、HEADER_TYPE2(0xFF02)、HEADER_TYPE3(0xFF03),三种交互类型中,HEADER_TYPE1代表设备内模块间交互、HEADER_TYPE2代表远端设备与本地设备交互而HEADER_TYPE3则代表远端设备与本地设备的模块交互。
上述通讯协议中的数据内容(message),可进一步拆分,如下表所示。数据内容中的每个数据段,由标签、内容组成,长度可变。
消息类型 | 消息范畴 | 消息子类型 |
MsgType | Category | Type |
即包括:消息类型、消息范畴及具体类型,上述数据内容中的每个数据段,由标签、内容组成,长度可变。其中,
消息类型(MsgType)可分为:命令、数据、回复信息;
消息范畴(Category)包括:控球、码流及智能;
消息子类型(Type)为消息类型下的子类型。
由协议可知,消息交互对象分为设备内部交互、设备间交互,这里主要依据协议中的GUID,来区分是本地、远端Host。设备间交互主要是远端Host-本地Host、远端Host-本地Module;设备内部交互主要是Host-Module、Module-Module之间。如图4所示,两种交互类型都采用共同的协议,依据GUID源、目的不同,进行区分。由此,本发明制定的统一的通讯协议中在数据内容基础上,还携带着数据长度,发送者与接收者信息,以及通讯交互类型信息。从而使得被抽象的所有元素之间的通讯类型清除,目标对象清楚、数据完整。
在一实施例中,上述架构构建流程的制定逻辑架构中消息分发机制包括根据通讯协议中数据内容的种类对应执行消息分发的步骤,其中,
若数据内容为流数据,则将流数据的存放首地址及长度发送给接收者,待所有接收者都从地址处取完数据后,再继续发送。
此处所述的流数据,即音视频流、元数据等。这些数据量一般较大,而且持续传输,一般发送者唯一,接受者多个。为此对应此处采用上述的订阅机制:码流请求者,需要通过GUID定制指定的流数据,而流发送者,发送前需要检测是否有请求者,没有则不发送数据。在发送过程中,为减少带宽,将流数据的存放首地址及长度,发送给请求者,待所有请求者都从地址处取完数据后,再继续发送。
若数据内容为命令,则以点对点方式从发送者对应元素的唯一标识为发送端向接收者对应元素的唯一标识的接收端进行数据内容的发送。
由于命令的数据内容是一种点对点的交互方式,由源GUID、目标GUID决定收、发端。源、目的端可以为Module或Resource。
若数据内容为状态信息,则将状态信息更新至架构中,并将状态变化通知订阅监听该状态信息的元素;
此处采用侦听机制:状态的所有者,只要状态改变,就将此值更新到架构中,而那些想了解这些状态的Host或Module,需要事先监听,作好订阅,之后状态信息一旦变化,它就收能到状态变化的通知。
若数据内容为配置信息,则接收配置信息后对其进行验证,同个则将配置信息保存后应用。
在一实施例中,架构的配置信息包括四类:产品启动配置(Setup.xml)、资源配置(Resource.xml)、模块库配置、用户数据配置。其中,
产品启动配置主要包括架构中各元素(Host、Process、Module)及其属性,它体现了本产品中具有多少个应用进程,每个进程包括哪些模块,模块拥有哪些资源。
资源配置,即架构中的资源(Resource)及其资源属性。
模块库配置,含有产品中各模块所使用的动态库名称,依据不同操作架构,配置好不同后缀的动态库。
用户数据配置,即产品中各用户、用户组、其权限等信息。
这些配置信息在架构中以xml格式的文件,存放在设备中。设备运行时,解析xml格式的配信息,序列化为string字符串的形式在架构中传递。传递过程中,需经过配置接收、验证、保存、应用几个阶段。用户可以随意导入、导出、修正、查看配置文件,以了解当前设备的Host、Process、Module、Resource元素的组织情况。一具体实施例中,架构的配置如下:
在一实施例中,上述架构构建流程中构建元素交互管理中介模块的制定公用接口 句柄包括制定架构操作接口、制定用户处理操作接口、制定元素属性及状态管理处理接口与制定其它接口的步骤。
所述制定架构操作接口的步骤为,将框架各元素操作接口封装与一个接口类,此外将设备、模块、资源元素的相关操作接口封装于另一个接口类,该类作为架构中元素的始祖,它派生出Host、Modules、Resource子类。
上述中,框架各元素操作接口包括架构启动时初始化元素接口、加载模块接口、维护各元素的状态变化接口及架构内元素发送通知和消息接口。使用者通过获取该类的句柄,使用这些其接口。
所述制定用户处理操作接口的步骤主要是设计与用户相关的所有操作接口,负责架构中用户添加、删除、权限判断等操作。
所述制定元素属性及状态管理处理接口的步骤是由于元素都有各自的属性及状态,为了更好地管理,分别设计了CAttributeGroup(元素属性)、CStausGroup(元素状态)类。CAttributeGroup负责处理元素属性相关的操作,比如元素的更新、删除、添加等,提供了在架构处理配置文件时需要的各处理接口;而CStausGroup类则负责元素状态的操作,同时它提供了状态信息订阅机制的基础,它负责为每个状态提供一个侦听者链表,当状态变化时,遍历链表进行推送通知。
如何将架构中各元素活跃起来,架构还需专门提供其它接口,因此上述其它接口的步骤为制定CLoader加载者接口类及CModuleLibrary模块库操作接口类。其中,加载者接口类用于架构初始化操作,读取配置文件后启动架构中的进程,而后进程通过模块库操作接口类获取所要加载的模块库的操作接口,将模块元素的模块操作接口映射到模块对应的动态库接口的地址。各动态库的对外接口都统一制定,只是实现各异,这样,在初始化各模块时,中介模块可以做到统一初始化。
作为一实施例中,所述架构构建流程中构建元素交互管理中介模块的建立元素交互中介桥梁机制包括,
建立中介模块,使架构中各元素的通过中介模块作为中介进行交互,中介模块根据制定逻辑架构中消息分发机制对元素间的数据交互进行分发。
本实施例中,为了避免各元素间的直接交互,设计了集中处理方式的中介转发机制。转发的内容,正如上述中描述的流数据、命令、状态、配置信息,不管是设备间还是设备内部的交互,中介模块为每类信息都有一链表记录内容的交互双方,通过统一的通用协议,以唯一的GUID标志,将内容进行分发,而交互双方都无需直接与消息源交互。
进一步的,在一实施例中,上述方法中还包括有架构运行环境流程。所述架构运行 环境流程包括步骤:
部署运行环境中各元素,根据配置的元素需求选择包括模块库、公共库、第三方库、SDK的组件。
在构建运行环境之前,先依据新产品的需求,配置好各元素(Host、Process、Module、Resource)。依据配置的元素需求,选择好所需要的模块库、公共库、第三方库、SDK等组件。在生成可执行程序前,即编译的过程中,提供了类似Linux的menu Xconfig的配置界面,可以动态的自由选择所需要的平台SDK、公共库、第三方库、功能模块库(Module元素)、功能模块库下各功能选项等内容,合理配置。
如图2所示一实施例,途中EdgeOs Application为设备的应用子系统,Agent作为代理子系统,以适配器方式,与其他User Interface进行交互。如前文所述,EdgeOsApplication中主要包括四个部分:通用功能模块、产品相关模块、公共库、第三方开源库。
架构启动,根据默认配置文件将模块与资源的属性初始化到架构中,然后建立用于侦听和发送模块状态的工具线程,接着读取配置文件初始化架构中各设备、进程、模块、资源元素,最后根据运行参数/启动配置文件启动进程。
启动流程如图3所示,本架构同样由一个Main入口函数开始,启动主进程(标记为FwLoader)。启动过程分两步:读取配置文件、启动进程。
首先,读取设备某指定目录下的ModuleLibrary.xml和SetupDefault.xml两个默认配置文件,将所有模块与资源的属性初始化到架构中;然后建立一个用于侦听和发送模块状态的工具线程UtilityThread;接着读取配置文件初始化架构中各元素(Host、Process、Module、Resource);最后根据架构的运行参数,以不同方式启动进程。
当不指定运行参数时,架构会读取产品启动配置文件的内容来启动配置文件中的所有进程,在这种方式下,进程又有两种运行方式。当运行参数被配置为单一进程模式时,FwLoader直接加载进程中的模块来运行,此时进程运行在FwLoader内部;反之,则fork自身,在FwLoader的子进程中运行配置文件中的进程;当指定运行参数时,直接加载指定进程中的模块来运行,此时进程也运行在FwLoader内部。
架构初始化,根据配置文件初始化设备加载者、加载资源库和模块库、创建与远端设备通信的状态发送线程、初始化环境与架构用户及用户组权限、加载运行模块、创建中介模块中各线程。进一步的,图4所示,架构初始化步骤可细分为:
1、读取FwConfig.xml配置文件,文件中指定了Framework接口库名称、产品模块(supervisor)名称、LOG级别配置,以及架构中各xml配置文件在设备中的位置信息。这一步将读取该配置,加载Framework库,为下一步加载具体模块库做准备工作。
2、加载资源库和模块库
该步负责在指定的设备目录下读取ResourceLibrary.xml、ModuleLibrary.xml配置文件,分别调用中介模块提供的接口LoadResourceSetup()、LoadModuleSetup()加载资源库、模块库。
3、创建与远端Host通信的状态发送线程
加载完资源库、模块库后,FwLoader创建了一个状态发送线程,该线程将架构中Host、Module、Resource的状态发送给作为Listener监听这些元素状态的远端Host。
在建立该线程过程中,初始化了一个事件类对象。当有元素的状态发生变化时,会通过事件对象发送一个信号量激活处于休眠状态的该线程,将状态发送到远端Host。
4、初始化Environment、架构用户、用户组权限
这一系列的初始化过程是调用框架接口LoadSetup()方法完成的,主要是解析Setup.xml、Resources.xml、Users.xml这三个配置文件,来初始化Host、Modules和Resources、架构用户与用户权限。
5、模块加载及模块运行
架构启动时,先读取模块库配置文件ModuleLibrary.xml,获取各个模块的属性;然后读取架构启动配置文件Setup.xml,解析位于Process元素下面的各个模块(Module),并且从之前解析的模块库中找到对应模块的属性,保存在CModule对象中;接着处理模块与资源间从属关系、资源间的引用关系,完成模块对象链表的建立。
然后遍历模块对象链表,依次加载对应的动态库文件,从库中获取模块实现的IModules对应接口,然后将Framework对象地址传入模块,使模块获取Framework中的模块启动回调接口(模块按自己实际功能,实现回调接口的功能)。
在模块中有个比较特殊的模块,即产品模块,作为其他模块的管理模块,它负责启动一些架构层级的功能配置,如信号;验证产品中的模块及其资源等。启动时首先启动该模块,然后遍历模块链表,依次调用模块启动相关的回调接口,启动模块。模块启动相关的回调处理包括:模块初始化、模块资源创建、模块资源验证、模块资源应用、模块唤醒运行。如图5所示,为模块加载、运行的简单流程。
6、创建中介模块中各线程
如图6所示,在架构初始化的最后,FwLoader创建一个监听远端Host的Accept线程,它处理本地Host与远端Host之间的通讯过程。Accept线程每建立完与一个远端Host的连接,就会为该新连接创建一个Sender线程和Receiver线程,分别负责连接双方之间的消息发送、接收处理。
其中本地Host从Receiver线程接收远端Host消息后,解析协议,依据协议头,分别处理;而发送线程,依据信息内容进行打包发送,如图7为本地Host消息发送处理机制。
至此,运行环境基本搭建完毕,中介模块与其他模块间的数据流关系,架构运行过程中,就是依据不同的功能,在架构各元素之间,以Framework为中介桥梁,进行数据、状态、配置等信息的不断交互。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (5)
1.一种构建IP安防产品开发环境的方法,其特征在于:它包括逻辑架构设计流程及架构构建流程;
所述逻辑架构设计流程包括步骤:
抽象领域实体,将各类IP安防产品的设备、进程、模块、资源分别抽象为逻辑架构中的独立元素;
所述架构构建流程包括步骤:
为逻辑架构中每个元素分配唯一标识;
构建通用机制,包括为各元素相互通信、交互数据制定统一通讯协议以及制定逻辑架构中消息分发机制;
构建元素交互管理中介模块,包括制定公用接口句柄、提供常用功能操作句柄类以及建立元素交互中介桥梁机制;
所述架构构建流程中构建元素交互管理中介模块的制定公用接口句柄包括,制定架构操作接口、制定用户处理操作接口、制定元素属性及状态管理处理接口与制定其它接口的步骤;
所述制定架构操作接口的步骤为将框架各元素操作接口封装与一个接口类以及将设备、模块、资源元素的相关操作接口封装于另一个接口类;所述框架各元素操作接口包括架构启动时初始化元素接口、加载模块接口、维护各元素的状态变化接口及架构内元素发送通知和消息接口;
所述其它接口的步骤为制定加载者接口类及模块库操作接口类;其中,加载者接口类用于架构初始化操作,读取配置文件后启动架构中的进程,而后进程通过模块库操作接口类获取所要加载的模块库的操作接口,将模块元素的模块操作接口映射到模块对应的动态库接口的地址。
2.如权利要求1所述的构建IP安防产品开发环境的方法,其特征在于:所述架构构建流程的制定统一通讯协议包括,
制定通讯协议包括数据头、数据长度、发送者对应元素的唯一标识、接收者对应元素的唯一标识及数据内容的步骤;
所述数据头用于标识交互类型,其包括设备内模块间交互、远端设备与本地设备交互及远端设备与本地设备的模块交互;
所述数据内容包括消息类型、消息范畴及消息子类型;所述消息类型包括命令、数据、回复信息;所述消息范畴包括控球、码流及智能。
3.如权利要求1所述的构建IP安防产品开发环境的方法,其特征在于:所述架构构建流程的制定逻辑架构中消息分发机制包括,
根据通讯协议中数据内容的种类对应执行消息分发的步骤,其中,
若数据内容为流数据,则将流数据的存放首地址及长度发送给接收者,待所有接收者都从地址处取完数据后,再继续发送;
若数据内容为命令,则以点对点方式从发送者对应元素的唯一标识为发送端向接收者对应元素的唯一标识的接收端进行数据内容的发送;
若数据内容为状态信息,则将状态信息更新至架构中,并将状态变化通知订阅监听该状态信息的元素;
若数据内容为配置信息,则接收配置信息后对其进行验证,将验证后的配置信息保存后应用。
4.如权利要求1所述的构建IP安防产品开发环境的方法,其特征在于:所述架构构建流程中构建元素交互管理中介模块的建立元素交互中介桥梁机制包括,
建立中介模块,使架构中各元素通过中介模块作为中介进行交互,中介模块根据制定逻辑架构中消息分发机制对元素间的数据交互进行分发。
5.如权利要求1-4任意一项所述的构建IP安防产品开发环境的方法,其特征在于:还包括架构运行环境流程;所述架构运行环境流程包括步骤,
部署运行环境中各元素,根据配置的元素需求选择包括模块库、公共库、第三方库、SDK的组件;
架构启动,根据默认配置文件将模块与资源的属性初始化到架构中,然后建立用于侦听和发送模块状态的工具线程,接着读取配置文件初始化架构中各设备、进程、模块、资源元素,最后根据运行参数/启动配置文件启动进程;
架构初始化,根据配置文件初始化设备加载者、加载资源库和模块库、创建与远端设备通信的状态发送线程、初始化环境与架构用户及用户组权限、加载运行模块、创建中介模块中各线程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410038735.3A CN103763325B (zh) | 2014-01-26 | 2014-01-26 | 构建ip安防产品开发环境的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410038735.3A CN103763325B (zh) | 2014-01-26 | 2014-01-26 | 构建ip安防产品开发环境的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103763325A CN103763325A (zh) | 2014-04-30 |
CN103763325B true CN103763325B (zh) | 2017-02-01 |
Family
ID=50530485
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410038735.3A Active CN103763325B (zh) | 2014-01-26 | 2014-01-26 | 构建ip安防产品开发环境的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103763325B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104932330B (zh) * | 2015-05-13 | 2017-12-29 | 广州市优泰安防技术有限公司 | 一种安防联动平台 |
CN107220129B (zh) * | 2017-04-14 | 2021-01-01 | 武汉斗鱼网络科技有限公司 | 一种软件模块间的通信方法和系统 |
CN107402769A (zh) * | 2017-08-09 | 2017-11-28 | 郑州云海信息技术有限公司 | 一种模块间信息交互的方法和系统 |
CN108536444B (zh) * | 2018-02-26 | 2022-02-18 | 平安普惠企业管理有限公司 | 插件编译方法、装置、计算机设备和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101272481A (zh) * | 2008-04-02 | 2008-09-24 | 武汉大学 | 一种视频监控前端设备接入方法 |
US7478416B2 (en) * | 1999-08-03 | 2009-01-13 | Ucentric Systems, Inc. | Multi-service in-home network with an open interface |
CN102073501A (zh) * | 2011-01-04 | 2011-05-25 | 浙江工商大学 | 一种基于逻辑功能块的网络设备中央控制器的实现方法 |
CN102073520A (zh) * | 2010-12-30 | 2011-05-25 | 中国民航信息网络股份有限公司 | 一种c++应用程序版本动态管理系统和方法 |
CN102523225A (zh) * | 2011-12-22 | 2012-06-27 | 浙江国自机器人技术有限公司 | 分布式松耦合构架中的解耦方法及分布式松耦合构架平台 |
-
2014
- 2014-01-26 CN CN201410038735.3A patent/CN103763325B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7478416B2 (en) * | 1999-08-03 | 2009-01-13 | Ucentric Systems, Inc. | Multi-service in-home network with an open interface |
CN101272481A (zh) * | 2008-04-02 | 2008-09-24 | 武汉大学 | 一种视频监控前端设备接入方法 |
CN102073520A (zh) * | 2010-12-30 | 2011-05-25 | 中国民航信息网络股份有限公司 | 一种c++应用程序版本动态管理系统和方法 |
CN102073501A (zh) * | 2011-01-04 | 2011-05-25 | 浙江工商大学 | 一种基于逻辑功能块的网络设备中央控制器的实现方法 |
CN102523225A (zh) * | 2011-12-22 | 2012-06-27 | 浙江国自机器人技术有限公司 | 分布式松耦合构架中的解耦方法及分布式松耦合构架平台 |
Also Published As
Publication number | Publication date |
---|---|
CN103763325A (zh) | 2014-04-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Alaya et al. | Toward semantic interoperability in oneM2M architecture | |
Grimm et al. | Programming for pervasive computing environments | |
JP5026415B2 (ja) | データセントリックワークフロー | |
JP5277251B2 (ja) | モデル・ベースのコンポジット・アプリケーション・プラットフォーム | |
RU2379755C2 (ru) | Система и способ для совместного использования объектов между компьютерами по сети | |
CN109756559B (zh) | 面向嵌入式机载系统分布式数据分发服务的构建及使用方法 | |
CN108804238B (zh) | 一种基于远程过程调用的软总线通信方法 | |
CN103218220A (zh) | 基于动态可插拔组件的物联网中间件系统 | |
CN103763325B (zh) | 构建ip安防产品开发环境的方法 | |
KR20100088049A (ko) | 사용자 인터페이스 구성 객체들로 이루어진 콘텐츠의 사전 예측 불가능한 경로를 통하여 수신되는 정보들의 처리 방법 및 이를 위한 장치 | |
CN101861578B (zh) | 网络操作系统 | |
CN111158779B (zh) | 一种数据处理方法和相关设备 | |
US20180191858A1 (en) | System for managing data of user devices | |
Tzavaras et al. | OpenAPI framework for the Web of Things | |
Mingozzi et al. | An open framework for accessing things as a service | |
Dautov et al. | Automating IoT data-intensive application allocation in clustered edge computing | |
Wu et al. | R-OSGi-based architecture of distributed smart home system | |
CN101861576A (zh) | 网络操作系统 | |
CN114296698A (zh) | 基于bpm的业务需求流程系统的设计方法 | |
CN106909368B (zh) | 一种实现快速业务开发的服务端业务层逻辑架构 | |
CN103677842A (zh) | 软件工具配置式集成扩展调用方法与系统 | |
US20180152314A1 (en) | Interconnection box for user devices | |
Rey et al. | The contextor infrastructure for context-aware computing | |
CN107103058B (zh) | 基于Artifact的大数据服务组合方法及复合服务组合方法 | |
García et al. | NUBOMEDIA: an elastic PaaS enabling the convergence of real-time and big data multimedia |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |