大数跨境
0
0

一张图看懂 Niagara Station

一张图看懂 Niagara Station 汇智众享
2021-12-24
2
导读:我眼中的Station


本期内容:约1493字、1图

阅读时间:约1分12秒


前情回顾

前两期我们解释了 Niagara 作为一个 Framework 的概况,包括它的运行环境以及总体功能:

你知道吗?Niagara其实是个软件集合

Architecture 和 Framework 傻傻分不清?

本期我们来讲述作为应用程序载体的 Station 具体是一个什么样的存在。


Module 和 Component


在进入主题之前,我们先解释一下 Component 的概念,其实在我们前面的系列文章中,有涉及过 Component(组态编程 - 从对象模型到应用程序)。


Component 是组成 application (可简单等同于 station) 的基本单位。而 module 是组成 Niagara Framework 的基本单位。

Component 和 module 二者的关系是:一个 module 中可以有一个或多个 component。


来自 module (jar 文件) 的 component,在 application/station 中可以有多个实例。module 的种类决定的是 framework 的能力 (能与不能);component 的种类和个数,决定的是 application/station 的行为 (做与不做)。


比如, Niagara 软件本身具有 PID 控制的功能 (KitControl.jar module),但是具体到某个 application/station 中,它不一定会使用 PID 这个功能。


Station 的两种状态


运行时状态的 Station 是 Java 虚拟机上的一个进程(Java 对象集合,也就是 Niagara Component 集合);非运行时的 Station 是   一个经过压缩的 XML 文件,叫做 bog (Baja Object Graph)。


二者的关系是这样的:bog 文件是运行时 Station 序列化的结果。相应地,通过对 bog 文件的反序列化可以“启动”一个站点,也就是进入运行时状态。


序列化就是把脑子里的想法用文字或图画记录在小本子上,一方面便于自己日后回忆(重建想法);另一方面也可以借此将想法分享给他人(传递思想)。反序列化就是拿过小本本,将上面的文字和图画读入大脑进行理解。


一张图看懂 Station



在汽车组装厂的生产线上,是根据图纸将汽车所需零部件有序地组装在一起,从而制造出汽车。这里面有两个要素:图纸和零部件图纸会“告诉”生产线,需要哪些零部件,它们之间的位置关系是怎样的,先后安装顺序是怎样的……这里的“图纸”就是 bog 文件,“零件”就是 Component(Module就是一个个按零件功能划分的零件库。)


Q:为什么将我的 Station 拷贝到另一台机器上进行启动的时候会报 “Cannot load module xxx” 错误?
A:这个过程就像将甲工厂生产线的图纸拿到乙工厂去生产,而乙工厂的零件库中缺少图纸上的某个零件A(它就是在不能加载的 module 中的某个component)。这时候,乙工厂是一定无法按照图纸生产出和甲工厂同样的汽车的,不是吗?


Q:怎么解决?
A:两个办法。
最好的办法当然是乙厂采购零件A(将Cannot load 的 module 拷贝到本地)然后按原图纸生产汽车(运行 station);
另一个退而求其次的办法就是“修改图纸”:将零部件A从图纸中删除(修改Bog文件,将隶属于该 module 的 component都删除)。注意,此时乙厂生产出的汽车和甲厂不再相同,但是乙厂的生产线是能运转起来的。
END




往期精彩

Architecture 和 Framework 傻傻分不清?

怎样理解 Niagara 是一个通用的开放性中间件平台

Niagara Px 美妆技法详解

微信号:汇智众享
长按二维码关注我们

点分享

点收藏

点点赞

点在看

【声明】内容源于网络
0
0
汇智众享
物联网平台建设、运维,物联网培训、教学
内容 49
粉丝 0
汇智众享 物联网平台建设、运维,物联网培训、教学
总阅读13
粉丝0
内容49