AllJoyn架构

原文链接:https://allseenalliance.org/developers/learn/architecture


ARCHITECTURE

NetworkArchitecture

AllJoyn™框架运行在本地网络上。它能够让设备和APP发送广播和发现彼此。本节介绍AllJoyn的网络架构,以及各种AllJoyn组件之间的关系。

Apps and Routers

Apps and Routers can live on the same physical device, oron different devices. From an AllJoyn perspective, it doesn't matter. Inreality, three common topologies exist:

AllJoyn框架包括AllJoyn APP和AllJoyn router(后面简称为APP和router)。APP和router之间进行双向通信,APP如果要和其他APP进行通信,必须要经过router中转。

APP和router可以处于同一个物理设备上,或者在不同的物理设备上。在现实中,有三种拓扑结构存在:

1.    APP使用自己的router。在这种情况下,router被称为“Bundled Router”,因为他们是捆绑在一起应用的。运行在移动操作系统(例如Android和iOS)和桌面操作系统(例如Mac OS X和Windows)的AllJoyn APP通常属于这一类。

2.    在同一设备上的多个APP使用一个router。在这种情况下,router被称为“Standalone Router”,它通常运行在后台/服务进程。这在Linux系统中很常见,其中AllJoyn router作为后台进程运行,其他AllJoyn APP连接到该“Standalone Router”。通过多个APP公用一个router这种方式,设备可以消耗更少资源。

3.    APP和router处于不同的物理设备上,APP使用位于另外一个物理设备上的router。嵌入式设备(它使用AllJoyn架构的精简变种)通常落入这个阵营;嵌入式设备通常没有足够的CPU和内存来运行AllJoyn路由器;


 

Transports

AllJoyn框架运行在本地网络上。目前,它支持Wi-Fi,以太网,串口和电源线(PLC:Power Line Communication;电力线上网PLC,又称电力猫上网,是一种借助电力线传输高频数字信号的技术),但由于AllJoyn软件代码的编写是传输介质无关的,并且AllJoyn是一个不断发展的开放源代码项目,因此将来会有更多的传输支持添加进来。

此外,可以利用bridge software将AllJoyn框架桥接到其他系统上,例如Zigbee,Z-wave,或互联网云。事实上,一个工作组正在努力增加网关代理,将它作为一个标准的AllJoyn service。

 

SoftwareArchitecture

 AllJoyn 网络包括AllJoyn APP和AllJoyn Router。

一个AllJoyn App包括如下组成部分:

·        AllJoynApp Code

·        AllJoynService Frameworks Libraries

·        AllJoynCore Library

 

一个 AllJoyn Router 可以独立运行,也可以和AllJoyn Core Library 捆绑在一起工作。

AllJoyn架构_第1张图片

 

AllJoyn Router

AllJoyn Router路由APP和Router之间的AllJoyn消息,包括在不同的传输方式之间。

AllJoyn Core Library

AllJoyn Core Library提供访问AllJoyn网络的底层API:

·        广播和发现

·        回话建立

·        Interface defintion of methods, properties, and signals

·        对象的创建和处理

开发者使用这些API来实现 AllJoyn service 框架,或者实现私有的接口.

Learnmore about AllJoyn Core Frameworks.

AllJoyn Service Framework Libraries

AllJoyn Service框架实现了一组common service, 例如 onboarding, notification, 或者 control Panel。 利用这些common AllJoyn service框架, app和devices 设备之间可以互相交互,以实现一个特定的功能。

Service 被分解到不同的 AllSeen 工作组:

·        BaseServices

o   Onboarding. 提供一个一致的方式将新的设备加入到Wi-Fi网络

o   Configuration. 运行对某些属性进行配置, 例如设置一个更友好的名字.

o   Notifications. 允许在 AllJoyn 中的设备发送或者接收基于文本的通知。也支持通过URL发送音频和图像.

o   ControlPanel. 允许设备广播一个虚拟的控制面板以便被远程控制。

·        More ServiceFrameworks. AllSeen 工作组正在开发更多的service框架。.

我们鼓励开发者在可能的情况下都尽量使用AllJoyn service框架。如果现有的某个service目前不可用,鼓励开发者与AllSeen联盟一起合作来创建标准的服务。在某些情况下,尽管使用专用服务和交互方法是最有意义的; 但是,由于它们是非标准的,因此不能够互操作,也不能够获得将设备和APP加入到的较大AllJoyn生态系统的优点。

AllJoyn App Code

This is the application logic of the AllJoyn application.It can be programmed to either the AllJoyn Service Frameworks Libraries, whichprovide higher level functionality, or the AllJoyn Core Library, which providesdirect access to the AllJoyn Core APIs.

这是AllJoyn APP的应用程序逻辑。它可以被编写为AllJoyn服务框架库,以提供更高级别的功能;也可以编写成AllJoyn Core Library,以提供直接访问AllJoyn核心的API。

 

Thin and Standard

AllJoyn 框架提供两种不同的类型:

·        Standard. 针对非嵌入式设备, 例如 Android, iOS, Linux.

·        Thin. 针对资源有限的嵌入式设备, 例如 Arduino, ThreadX, Linux with limited memory.


 

Programming Models

通常,应用程序要使用AllJoyn Service框架的API,使得它可以与使用相同的服务框架设备兼容。只有使用AllSeen工作组开发的AllJoyn服务框架的应用程序才能与其他应用程序和设备的AllSeen生态系统相兼容。

如果一个应用程序希望实现自己的服务,它可以通过直接编程到AllJoyn核心API。此时,建议遵循事件和行为习惯,以便能够和其他AllJoyn设备之间进行特设(ad hoc)的互动。

应用程序可以同时使用Service Framework 和 Core API。

Learnmore about Events and Actions.

 

你可能感兴趣的:(IoT,alljoyn)