【Alljoyn】Alljoyn学习笔记五 AllJoyn开源技术基础概念解析

简介:

AllJoyn开源技术基础概念解析


摘要: 总线(Bus) 实现P2P通信的基础 AllJoyn 的底层协议类似于D-Bus,相当于是跨设备分布式的 D-Bus 总线附件(Bus Attachment) 每一个连接到总线上的Alljoyn应用程序被称为总线附件,可用C++或Java编写 每个总线附件 ...
总线(Bus)
实现P2P通信的基础
AllJoyn 的底层协议类似于D-Bus,相当于是跨设备分布式的 D-Bus
总线附件(Bus Attachment)
每一个连接到总线上的Alljoyn应用程序被称为总线附件,可用C++或Java编写
每个总线附件有独一的名称(unique name),当每次连接到总线时自动分配
每个总线附件可以有一个易读的名称(well-known name),用于标识服务,例如“org.alljoyn.bus.addressbook”
总线接口(Bus Interfaces)
类似于Java中的接口,定义了方法、信号处理函数和属性
所有总线方法(Bus Methods)可使用简单或复杂的数据类型(数组、结构等)作为参数和返回值
总线对象(Bus Objects)
用于实现总线接口,每个总线对象实现一个或多个总线接口
处理远程方法调用(Remote Method Calls)和发出信号(signals)、消息(messages)
总线对象通过总线附件注册到总线上
每个总线对象有一个类似于文件路径的路径名,例如/org/AllJoyn/Games/chess,用于远程方法调用
代理总线对象(Proxy Bus Object)
一旦总线附件之间建立连接,应用程序创建一个代理总线对象,实现远程方法调用(Remote Method Calls)并准备好从总线上接收信号(signals)
远程方法调用是同步的,信号则是异步的且可以一对多(广播)或一对一
service 和 client
P2P 应用中提供服务的一方称为 service,使用服务的一方称为 client
一个应用程序可以同时是 service 和 client(例如chat)
session
在宣告服务后,service 需创建一个或多个 session,client 发现服务后加入 session
每个 session 有一个 session port,类似于 socket 通信中的 port
session 的两种情形:
point-to-point session:两个 peer 之间交互
multipoint session:多个 peer 加入同一个 session,组成一个 group

AllJoyn daemon——实现P2P通信的核心
daemon通过进程间通信(IPC)与应用程序通信,应用程序只与 daemon打交道
daemon提供一个抽象层处理所有的网络传输、消息路由、命名空间管理等
整个AllJoyn系统相当于一个虚拟总线,连接多个AllJoyn daemons和总线附件
daemon是用 C++编写的 native程序,运行在不同操作系统上的 daemons可实现互联
在应用程序启动之前必须先启动daemon
AllJoyn daemon 在 Android 上的三种实现形式
第一种:Android app(AllJoyn.apk)
只支持 WiFi/TCP 传输
无需 root 权限
第二种:纯C++编写的可执行程序,在 adb shell 下运行(alljoyn-daemon)
若使用 WiFi 传输无需 root 权限
若使用 Bluetooth 传输需 root 权限,且蓝牙协议栈限定用 bluez
可在 init.rc 中自动加载
第三种:与应用程序捆绑在一起(bundle),不需要单独启动daemon
适用于发布基于AllJoyn开发的应用程序
设备发现和建立连接的过程
注册(Register): 连接在总线上的对象为自身进行注册
宣告(Advertise): 连接在总线上的对象通过IP组播(multicast)宣告自身的存在
发现(Discover): 发现其他对象的存在
在使用蓝牙时借助蓝牙本身的 SDP 进行发现
设备连接过程示意图:

AllJoyn开源技术基础概念学习

设备之间通信的方式
远程方法调用(同步)
Signal(异步)
Raw session(直接 socket 通信,应用程序可选择基于 TCP 或 UDP )
AllJoyn开源技术基础概念学习


Alljoyn的优势

 AllJoyn是一个中性平台系统,旨在简化邻近异构分布式移动通信网络系统。这里的异构性不仅表示不同的设备,而且可以是具有不同操作系统和不同类型的设备(例如个人电脑、手机、平板电脑和消费性电子产品),并且使用不同的通信技术。

开源

AllJoyn是在Apache Version 2.0 license授权下作为一个开源项目进行开发的。这代表所有的AllJoyn代码库都是可供查阅的,并且鼓励开发者进行补充和改进。如果AllJoyn缺少某个功能,你可以对此作出改进和贡献。如果你在嵌入式设备中使用AllJoyn,或者有任何技术性问题,我们开源社区中的众多参都会愿意提供帮助和指导。AllJoyn的代码库可以在http://www.alljoyn.org中获得。

操作系统的独立性

AllJoyn提供了一个抽象层,允许AllJoyn及其应用程序运行在多个操作系统平台上。AllJoyn支持大部分的标准Linux发行版本包括Ubuntu等,并可以运行在Android 2.2和更高版本的智能手机和平板设备上。AllJoyn还在常见版本的Microsoft Windows操作系统上进行了测试和验证,包括Windows XP和Windows7。

开发语言的独立性

目前,开发人员可以使用C++或Java语言来创建应用程序。其它语言的支持也将很快面世。

物理网络和协议的独立性

现在,网络设备支持许多的通信技术。AllJoyn提供了一个抽象层,它为底层网络协议栈定义了统一的接口,使得软件工程师可以相对容易地添加和安装新的网络。

最近,Wi-Fi联盟发布了一个Wi-Fi Direct规范,这将允许点对点的Wi-Fi连接。并且Wi-Fi Direct的网络硬件模块也正在积极开发中,它将为AllJoyn开发者增加Wi-Fi Direct功能和可用网络选项的预关联发现机制。

动态配置

通常情况下,移动设备在使用过程中会到达不同的地点,并不断与各种网络进行连接和断开。这意味着它的IP(互联网协议)地址可能会改变,网络接口可能无法使用,服务可能是短暂性的。

AllJoyn可以获知当前服务的断开和新服务的出现,并创建新的连接(如果需要)。AllJoyn准备作为Wi-Fi Hotspot 2.0技术的应用层,这种技术旨在提升手机和信号发射塔对Wi-Fi热点的漫游透明度。

有些情况下,网络拓扑结构对分布式应用程序的性能至关重要。蓝牙网络配置成微微网会比配置成分布式网络达到更好的性能。AllJoyn在内部对这些配置进行管理,而不需要开发人员对每种网络技术的具体特性进行任何了解。

广播和发现服务

当设备需要交互时,必须进行某种形式的广播和发现服务。在静态网络的时代,人作为管理员对设备之间通信作出了精确的安排。最近,零配置网络的概念已经得到了普及,尤其是苹果的Bonjour和微软的Plug and Play技术。我们也看到,现有技术的发现机制如蓝牙服务发现协议,和新兴机制如Wi-Fi Direct P2P发现规范。而AllJoyn提供了一种广播和发现服务的抽象,可以简化定位和应用服务的流程。

安全

分布式应用程序中安全性的固有模型是应用程序到应用程序的。不幸的是,在许多情况下,网络安全模型并不匹配这种固有的协定。例如,蓝牙协议就要求必须在设备之间进行配对。使用这种方法,一旦设备配对成功,两个设备上的所有应用程序都会得到授权。但是当考虑更多比蓝牙耳机更强大的设备时,这就不可取了。例如,两台笔记本电脑通过蓝牙进行连接,那么更精细的安全控制是非常有必要的。AllJoyn在设计上对这种复杂的安全模型提供了广泛的支持,特别是应用程序到应用程序的通信。

对象模型和远程方法调用

AllJoyn采用了一种易于理解的对象模型和远程方法调用(RMI)机制。AllJoyn重新实现了总线协议,基于D-BUS规范和扩展D-BUS协议,以支持分布式设备。

软件组件

根据标准的对象模型和总线协议可以规范各种接口组件。Java接口声明提供的一个与本地实现实例进行交互的规范,也采用了大致相同的方式。AllJoyn对象模型中提供了一个独立于语言的规范,来实现远程交互。

规范中考虑了多种接口的实现,从而可以支持应用程序通信的标准定义。这对于软件组件是可以实现的技术。软件组件已经成为了许多现代系统的核心部分,例如Android系统,它定义了四个主要的组件类型作为与Android应用框架进行交互的唯一渠道;或者在微软系统中,它使用了组件对象模型(COM)系统的子节点。

我们期待出现丰富的接口定义,以实现概述一节中描述的情景。AllJoyn项目希望与用户进行合作,共同定义和公布标准接口支持,并实现共享。


相关文章
|
7月前
|
传感器 人工智能 物联网
穿戴科技新风尚:智能服装设计与技术全解析
穿戴科技新风尚:智能服装设计与技术全解析
559 85
|
7月前
|
存储 JSON 数据格式
ElasticSearch基础概念解析
以上就是ElasticSearch的基础概念。理解了这些概念,你就可以更好地使用ElasticSearch,像使用超级放大镜一样,在数据海洋中找到你需要的珍珠。
207 71
|
7月前
|
人工智能 API 语音技术
HarmonyOS Next~鸿蒙AI功能开发:Core Speech Kit与Core Vision Kit的技术解析与实践
本文深入解析鸿蒙操作系统(HarmonyOS)中的Core Speech Kit与Core Vision Kit,探讨其在AI功能开发中的核心能力与实践方法。Core Speech Kit聚焦语音交互,提供语音识别、合成等功能,支持多场景应用;Core Vision Kit专注视觉处理,涵盖人脸检测、OCR等技术。文章还分析了两者的协同应用及生态发展趋势,展望未来AI技术与鸿蒙系统结合带来的智能交互新阶段。
416 31
|
7月前
|
编解码 监控 网络协议
RTSP协议规范与SmartMediaKit播放器技术解析
RTSP协议是实时流媒体传输的重要规范,大牛直播SDK的rtsp播放器基于此构建,具备跨平台支持、超低延迟(100-300ms)、多实例播放、高效资源利用、音视频同步等优势。它广泛应用于安防监控、远程教学等领域,提供实时录像、快照等功能,优化网络传输与解码效率,并通过事件回调机制保障稳定性。作为高性能解决方案,它推动了实时流媒体技术的发展。
377 5
|
7月前
|
数据采集 机器学习/深度学习 存储
可穿戴设备如何重塑医疗健康:技术解析与应用实战
可穿戴设备如何重塑医疗健康:技术解析与应用实战
251 4
|
7月前
|
机器学习/深度学习 人工智能 自然语言处理
AI技术如何重塑客服系统?解析合力亿捷AI智能客服系统实践案例
本文探讨了人工智能技术在客服系统中的应用,涵盖技术架构、关键技术和优化策略。通过感知层、认知层、决策层和执行层的协同工作,结合自然语言处理、知识库构建和多模态交互技术,合力亿捷客服系统实现了智能化服务。文章还提出了用户体验优化、服务质量提升和系统性能改进的方法,并展望了未来发展方向,强调其在客户服务领域的核心价值与潜力。
351 6
|
7月前
|
监控 负载均衡 安全
静态IP代理与动态IP代理:提升速度与保障隐私的技术解析
本文探讨了静态IP代理和动态IP代理的特性和应用场景。静态IP代理通过高质量服务提供商、网络设置优化、定期更换IP与负载均衡及性能监控提升网络访问速度;动态IP代理则通过隐藏真实IP、增强安全性、绕过封锁和提供独立IP保障用户隐私。结合实际案例与代码示例,展示了两者在不同场景下的优势,帮助用户根据需求选择合适的代理服务以实现高效、安全的网络访问。
222 1
|
7月前
|
负载均衡 JavaScript 前端开发
分片上传技术全解析:原理、优势与应用(含简单实现源码)
分片上传通过将大文件分割成多个小的片段或块,然后并行或顺序地上传这些片段,从而提高上传效率和可靠性,特别适用于大文件的上传场景,尤其是在网络环境不佳时,分片上传能有效提高上传体验。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
7月前
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
676 29
|
7月前
|
前端开发 数据安全/隐私保护 CDN
二次元聚合短视频解析去水印系统源码
二次元聚合短视频解析去水印系统源码
194 4

推荐镜像

更多
  • DNS