开源项目 AllJoyn 框架
2015-07-21 22:50
260 查看
AllJoyn框架概述
AllJoyn实现的是一个”分布式软件总线”总线为点对点模式
协议不依赖于网络
这三点是从介绍的PPT中翻过来的,但理解简单理解一下看以认为,这个框架是分布式的一个中间层通信框架,主要是支持点对点通信,并且由中间层屏蔽了底层物理网络的差异,对上层高级编程语言直接提供接口。
高层系统框架
此图摘自(AllJoyn - Tech Overview v3_for Brooks)
从高层的这个框架中可以看出系统中只有两种节点:
Routing Nodes (RN)
Leaf Nodes(LN)
其规则是RN可以与RN和LN通信,LN只能和RN通信。
这里两张图片展示了Router间通信的一个过程,发现和建立Session。这是High-Level System Architecture中通信的一个简单的实例。
Ad Hoc Bus Formation: Discovery
这里Client App和设备内部Router建立了内部链接,Client端的Router会通过查找interface找到Service的Router。
Ad Hoc Bus Formation: Session Creation
Router间建立了Session使得Client能获得Service的服务。
Software Components
这部分相算是开始进入了正题。软件组件的高层的框架:分为了基础服务框架(Base Service Frameworks 和 核心框架 Core Framework )
软件组件也可以划分为 Client Library 和 Router
Client Library:
开发用户的接口
以SDK API的形式对外发布
分为两种Stand Client 和 Thin Client
SC针对High Level 的操作系统,Thin Client针对嵌入式系统或小内存系统使用。
Router:
任何App包含了Router,它便可以认为是一个Router Node
Router 必须使用 Stand Client Library 构建,必须运行在HLOS中。
它可以被部署为单独的服务或守护进程
Router功能包含了Bus管理和AllJoyn消息路由
关于AllJoyn 的SDK
AllJoyn 程序是通过 API的形式对外提供功能的,它是一个对象实现的。大部分的程序都只是对外保留一个对象。对象会对外提供很多接口,这些API可以通过About来查询。
接口由三种形式组成:
Method(方法):与对象进行交互
Signals(信号):异步事件的通知
Property(属性): 读取或设置数据
下面的图示是关于API接口的使用过程。
首先是连接到Bus
Applications 要Attach到Bus上
左侧对象会被发布到Bus 本地的Attachment上。
在对端会定义一个代理对象(Proxy Object)
信号处理的Handler会被注册到右端的Bus Attachment上来处理Object 发出的信号。
Method(方法)的使用是通过使用Proxy Object来实现的。
调用右侧Proxy的接口时,会触发左侧Method Handler注册的处理函数,执行后并返回值到Proxy Object中。
Signal(信号)是由左侧Object触发,通过右侧注册的Signal Handler进行处理。
有了这两张图,一个基本的操作流程就被串起来了。这个还是有点像CORBA的思路。
AllJoyn Security 框架
Security Framework的几个特点鉴权和加密被设计为 App 到 App的。设备间并不存在关系。
每一个接口的安全性。
App中可以有加密的接口和开放的接口,如果有需要的话在初始化时app 间会交换key。
安全的启用接口。
调用方法时需要认证,接受Signal时需要认证,消息都是加密的。
相关文章推荐
- SQL学习第二天,在未学习过某些知识的情况下把静态的代码操作改为对数据库的操作
- HDU 1020 Encoding
- MySQL执行存储过程权限
- 高级抽象
- iOS设置全局状态栏样式
- python 第三方 .whl包安装及出现的IOError问题解决办法
- 代码签名探析
- 【Error处理】ABAP中调用Function Module出现“not begin with Function-Pool”错误
- python中write内容为在文件中显示的问题
- Letter Combinations of a Phone Number
- 【西祠日志】【05】修修补补asp留言板,学习git,asp的ajax实现(2015.07.21周二)
- 2015072105 - 17个来回
- win7 备份错误解决
- 1号店陷高层风波 超市类电商前景难明
- java学习——容器(集合)
- MyEclipse不能重新发布的解决方案
- RACCommand
- C语言冒泡序列把数字从大到小排列
- android ndk开发hello world入门
- 基于STM32的12864串行时序的实现