http://hi.baidu.com/xalanz/blog/item/689cc2b1ebba4d5f09230293.html
從D-Bus(DBus)的使用看Android設計策略中安全的優先順序2009-12-15 08:59
Android使用了一種特殊的進程間通訊系統D-bus . 而我們知道進程間通訊機制已經存在好多種,Corba,DCOP,COM,SOAP, XML-RPC ... ... 太多了。 為什麼要有一個D-Bus,換句話說D-Bus是什麼,不是什麼呢?為什麼要用這麼一個獨特的通訊系統? 以下的一些資料整理來自於D-Bus的FAQ(http://dbus.freedesktop.org/doc/dbus-faq.html).D-Bus是什嗎? D-Bus 是這樣一個系統: 具有物件導向介面的協議frame,以及應用程式使用者互相發現和監視的守護進程.換句話說:是一個進程間通訊系統,是由兩個守護進程,一個是系統範圍,一個是使用者會話範圍的提供的生命週期跟蹤、服務啟用、安全性原則檢查等進階功能的集合。D-Bus守護進程可以啟動服務以便給其它程式提供某些功能。 D-Bus的效率高嘛? D-Bus的效率,D-Bus 大約比直接適用socket讀寫資料慢2.5倍。D-Bus比其它的Corba,DCOP等通訊機制 都要慢一些。這樣的效率主要受它的設計思想的影響:不信任對端發來的資料,一定要做複雜的校正。 D-Bus的適用性如何? D-bus 並不是一個普遍適用的通訊系統,這一點和Corba等明顯不同,D-bus的設計之初 就帶有一定的特定性。D-Bus 設計用來作為使用者互動介面與系統服務(守護進程)之間的分隔和通訊以及系統服務(守護進程)之間的通訊。D-Bus 設計之初並未考慮為Cluster,P2P,分布式應用之間的通訊,至於是否適合上述複雜應用,自己去試吧。D-Bus 也不是用來代替SOAP,XML-RPC的,該用這些東西的地方請儘管用。 D-Bus 與其他進程間(分布式)通訊中介軟體相比如何? D-Bus 可以看作是下一代的DCOP,比DCOP要複雜一些,而DCOP是用來作為OpenSource案頭應用 之間通訊的。但D-Bus比DCOP效率上要慢,原因還是更多的資料校正和更多層的實現。 D-Bus 與ICE (Inter-Client Exchange http://www.x.org/X11R6.8.1/docs/ICE/ice.pdf),XSMP,ICE是為XSMP開發的,DCOP和XSMP是構建在ICE之上的,原則上,XSMP和DCOP都可以被D-Bus代替. D-Bus 與ZeroC ICE(Internet Communications Engine),ICE 是Corba /SOAP層級上的東西,要比D-Bus強大,ICE是雙許可證的. D-Bus 與DCOM,DCOM 是Windows 下的IPC系統,類似於Corba,DCE. D-Bus是蘋果,DCOM是桔子?! D-Bus 與SOAP,D-Bus 是長串連,SOAP一般承載在HTTP的一個請求和響應的串連上,可以是每次一串連,SOAP是構建在XML上的,D-Bus不是. D-Bus 與Corba,很多Corba的實現比如Orbit都要比D-Bus(libdbus)快,D-Bus的一個重要的設計思想是不信任對端發來的資料, 一定要做複雜的校正.Corba和D-Bus都使用了二機制的通訊協議,但Corba 更通用和開放,D-Bus很多地方都是寫入程式碼,所以D-Bus要簡單得 多. ++ 非常明顯的是,D-Bus為安全考慮,在效率上做了讓步,在結構設計上安全考慮是優先的。這一點是其它通訊用中介軟體系統所明顯不同的。 而Android 一定要使用這樣一個效率並非優先的一個通訊系統,已經明顯的透露了Android的設計者在安全方面的傾向性,也就是說,安全的優先順序在設計策略中較高。 Android通過D-Bus來耦合使用者介面和服務這種劃分策略是軟體系統安全設計的一個典型分離許可權設計手法,是偶然嘛?僅此一處? |