不慌先热热身醒醒啊:
1、女友:“你在我之前是不是处了好几个对象?”
我:“你怎么看出来的?”
女友:“没看出来,我感觉出来的。。。”
我。。。
2、经过女同事的位置,她指着电脑问我:“你是不是有一件这样的衣服?”
我看了看说:“嗯是的,想买给你老公?”
她:“你上星期打麻将说先欠着我三百时,穿的就是这件衣服。”
3、女友说心情不好,要我陪她玩游戏,石头剪刀布,谁输了就发红包给对方,每次一块钱,结果一晚上下来,我硬是输了一百多,还欠了她200。。。
因为,她的石头是金刚石,剪刀是任意剪,布是铁布衫;而我的石头是粉滑石,剪刀是锈铁剪,布是破抹布。。。
4、今早,在上班的路上接到女友电话,说她刚下公交车就发现,她包的拉链是开着的,可能是遇到了小偷,我赶紧让她看看包里丢了什么东西没有。
电话里就听到她说:钱包,钥匙,化妆品。。。老公,我手机不见了!!!
5、同事老婆刚生了双胞胎儿子,引得一群人问他,生双胞胎有啥秘诀么?同事一听这个,便气定神闲的喝了口茶,说:当然有了,先给我点根烟~
有人毕恭毕敬的给他点上,众目睽睽之下,同事很淡定的说:让我来啊。。。
沈默三秒后,场面就控制不住了。。。
1.和
· Station(站点):
它是Niagara的运行时程序,一个运行于Java虚拟机之上的Niagara 组件应用程序。运行于Platform这个服务之上的具体应用,也就是站点。win系统下,Station在物理结构上就是一个文件夹,包含了核心的xml配置文件(Niagara把它打包成了bog后缀)和周边的图片、文本等。由platform对其进行解析运行,由Workbench对其进行解析查看.在PC机上可以同时运行多个,使用不同的fox端口,station之间通过fox协议连接。在JACE上只能运行1个,同样与Workbench的打开与否无关。
Niagara 架构是围绕着面向组件编程(Component Oriented Programming)的概念来设计的。组件(component)是用java程序编写的一个完备的部件,并通过模块(module)来部署。各个组件通过连线的方式组合在一起实现特定的应用并通过 station runtime来执行。一个Niagara应用程序就是通过station来实现的。Station是一个名字为config.bog的XML文件。Bog文件中包含了一个组件树,每个组件的属性配置,以及各个组件是如何相互连接的。有很多创建station的方法:
1)在现场通过workbench图形化编程工具创建
2)离线状态下,通过workbench图形化编程工具创建
3)产品设计过程中创建,并在生产过程中直接安装到设备中(针对特定领域的固定应用)
4)在现场,根据现场设备情况,通过“自学习”的方式,动态创建.
那些不允许通过编程更改的station,通常叫做appliance。说到一个station,它可以在Jace上,也可以在Supervisor上。它只是描述了一个组件的运行时环境,对所有platform都是一样的。Supervisor和Jace则是指明了platform的不同。
· Workbench(工作台):
Workbench他娘的就是Niagara的‘用户智能开发界面’--它是一个可视化的Niagara编程工具,你所看到的东西,说白了就是个软件界面,用于操作和观看的,类似于一个浏览器,它不是Niagara,而只是Niagara的图形化的开发工具,但是这个开发工具有别于以往我们所使用的自动化系统的开发工具,以往的自动化系统开发工具,主要是完成程序的编译和下载过程,但是Workbench可以实时反映所开发和修改的Station的状态(实时编程),并且我们可以同时打开多个station,也可以用多个Workbech连接一个station,为什么我要说是连接呢,因为Workbench 和station之间建立的是就是一个通讯连接,衔接的关键部件正是NiagaraD。NiagaraD也不是Niagara,它是一个运行操作系统之上的一个守护进程,可以理解为一个常驻后台的服务,可以在任务管理器中找到它。它负责接收Workbench的命令,对Platform和station进行修改和设置,说白了就是完成文件的读写操作,不同版本的操作系统和Niagara有不同的NiagaraD。它也是运行在Java虚拟机上的,用户可以通过它用来访问platform和station.Niagara提供了一个非常强大的工具——workbench。Workbench是基于bajaui widget建立的,它本身也是通过Niagara的标准组件模型创建的。
Workbench是为了提供一个通用的可以呈现不同用户所开发的Niagara插件的可视化工具。最常见的插件是用来呈现Niagara组件和文件的视图。其他还包括侧边栏和工具栏。
Workbench本身允许用户通过BWbProfile API做订制化开发。Profile允许开发者基于workbench的主架构来创建自己的应用,比如可以增加或移除:部分菜单条目,工具栏,侧边栏以及视图。
· Daemon(守护进程):
Daemon是一个后台进程,用来启动station并管理着platform的配置项,比如IP地址等等。,它负责初始化并引导platform启动。
它的功能包括:
1) 管理station安装和备份station database
2) 加载和监控station
3) 配置Platform的 TCP/IP 设置
4) 安装和升级操作系统(仅限于QNX系统)
5)安装和升级Java 虚拟机
6)安装和升级 Niagara 软件
7)安装多语言环境
8)安装授权文件
在 Windows platforms上,daemon作为一个Windows service在后台运行. 在QNX系统上,它在启动时作为daemon进程来运行。通常来说可以通过workbench访问daemon的各个功能,具体的方法是,通过“Open Platform”命令来建立和远程目标机的Platform会话。当会话建立起来后,PlatformSession提供一组可视化界面来呈现上面所述的各个功能。另外一种访问daemon的方式是通过命令行的plat.exe命令。通过这种方式可以完成大部分workbench所提供的功能。
· Web Browser(浏览器):
Niagara可以通过标准的浏览器来访问。
.和Niagara 架构相关的三个Protocols
上一节所述的4个Niagara程序通过3种网络协议来进行交互。
· Fox:
它是一个基于TCP/IP的私有协议,用于station和station之间的通讯以及workbench和station之间的通讯。
·HTTP:
这里就是指标准的HTTP协议,浏览器通过http协议来访问station中的网页。
·Niagarad:
它是一个私有协议,用于workbench和daemon之间的通讯。
备注:Foxs协议和Https协议都是Niagara默认支持的协议,分别对应fox和http协议的加密版本协议。
.Platforms(Niagara可以运行的平台)
是安装在一台Niagara主机上不属于Niagara Station的部分的统称,运行于OS后台的服务(niagara service),即使不打开Workbench,它该运行还是在运行,可以通过直接在OS服务管理器里面进行停止和开启;
Windows平台下,platform是服务,在物理结构上就是一堆dll文件,在windows后台运行;
Niagara 可以部署的平台非常广,小到一个嵌入式设备,大到高端的服务器都可以。主要包括:·Jace:
Java ApplicationControl Engine,这个词用来指代各种没有界面的,嵌入式设备平台。Jace上通常会运行一个Station和一个daemon进程,但是没有workbench。Jace上通常运行的是QNX操作系统。
·Supervisor:
通常指运行在一个工作站或服务器上运行的station。Supervisor通常是指在整个系统中给其他station提供支持服务的station,这些服务包括历史数据和报警数据的收集等。Supervisor通常用来指代一个station,但它也可以运行workbench和daemon。
·Client:
通常的client是指那些运行着桌面操作系统,比如Windows或Linux,通过workbench或者浏览器来访问Niagara的设备。
.Web UI
Niagara一个重要的特性就是能够提供一个通过标准的浏览器能够访问的界面。Niagara同时提供客户端和服务器端技术来创建网页界面。
关于服务器端,Niagara通过Station中的WebService组件来提供HTTP和HTTPS。WebService提供一个标准的servlet引擎。Servlets通过BWebServlet的一个子类来部署。还有其他基于此的类和相关API来提供高阶功能,比如BServletView。
Niagara提供了两种针对client端的技术。第一个就是基于web的workbench。它允许标准的workbench通过Java插件运行在浏览器上。Web workbench通过一个叫做wbapplet的applet来下载客户端运行workbench所需要的java模块。这些模块被下载之后会被缓存在浏览器上。
此外,除了web workbench,Niagara还提供了一种叫做hx的技术。Hx framework是一组包括服务端的servlet和客户端的JavaScript库。Hx支持一个不必基于Java插件的实时用户界面。Hx只基于HTML,CSS和JavaScript。
Niagara通过Bajaux给用户提供了一个开发基于网页用户界面的环境。在Niagara4,用户界面更加偏重基于HTML5和web开放技术的用户界面。Niagara提供了大量framework和应用,就是为了让用户可以创建自己的基于网页的应用,小到一个field editor大到包含很多功能的整个页面。更多关于此的信息请参照Niagara的Building JavaScriptApplication。
.Fox
NiagaraFramework使用一个叫做Fox的私有协议来进行Station和station之间的通讯,以及workbench和station之间的通讯。Fox协议是基于TCP协议的点对点的通讯协议。Fox协议的默认端口是1911。Foxs协议是fox协议的加密版本,它默认的端口是4911。fox协议的特性包括:
1)基于TCP socket连接
2)摘要式身份验证(用户名/密码加密)
3)点对点
4)请求/应答式
5)异步事件
6)流
7)通过channel multiplexing来支持基于一个socket的多个应用
8)基于文本的消息,便于调试
9)统一的消息格式
10)高性能
11)通过Java程序实现协议栈