Alljoyn是高通2011年推出的近距離無線傳輸技術,它為分散式應用程式在不同設備中提供了運行環境,特別是移動性、安全性和動態配置,支持Microsoft Windows、Linux、ios和Android等主流的作業系統平台,可以說AllJoyn是專門處理異構分散式系統中的難題而產生的。
Alljoyn還是一項開源項目,高通公司已經將項目捐贈給了AllSeen聯盟,高通和Linux基金會希望不同公司和它的開發人員能夠參與進來,共同促進這一項目的發展,並在2012年正式對外公開。 “一個能夠使連線設備之間進行互操作的通用軟體框架和系統服務核心集,也是一個跨製造商來創建動態近端網路的軟體套用”,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功能和可用網路選項的預關聯發現機制。AllJoyn是以C++撰寫而成,提供多種語言繫結(language bindings)及跨多種作業系統及晶片組的完整實作。例如AllJoyn已包含Android、iOS、Mac OS X及Windows RT的軟體開發工具包(SDK)。AllJyon不是網路協定,它需要有網路才能運作,必須跑在網路堆疊之上,像是Wi-Fi、藍牙、4G、Ethernet等。
動態配置
通常情況下,移動設備在使用過程中會到達不同的地點,並不斷與各種網路進行連線和斷開。這意味著它的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項目希望與用戶進行合作,共同定義和公布標準接口支持,並實現共享。