text: D-Bus是一個行程間通訊及遠端過程呼叫機制，可以讓多個不同的計算機程式提供的服務標準化。freedesktop.org專案同時也開發了一個稱為libdbus的自由及開放原始碼軟體函式庫，作為規範的參考實作。這個函式庫常與D-Bus本身混淆。也存在著其他的D-Bus實作，像是GDBus (GNOME)，QtDBus (Qt/KDE)，dbus-java以及sd-bus。概觀.D-Bus可用於同一個桌面會話中不同桌面應用軟體間的通訊，能整合桌面會話，也解決了行程的生命週期的問題。它也允許桌面會話與作業系統間的通訊，這通常包括了核心與任何的系統守護程序或一般行程間的通訊。當大量的程式進行通訊時，由於程式跟程式之間必須建立起一對一的通訊，則整體的通訊網路將會非常復雜，而通訊效率也會因此低下不可靠。D-Bus提供了一個#重定向大多數的系統會實作一個具較高許可權的"系統頻道"，連同給每一個已登入的使用者的"專用頻道"，這就可以讓D-Bus中可用的登入資訊受到限制。因此，D-Bus服務同時包含了系統守護行程使用的獨有守護程序。應用程式透過Unix域套接字與守護行程通訊。訊息匯流排是建基於通用的一對一訊息傳遞框架，這讓任意兩個程式間可以不必透過訊息匯流排守護行程而直接通訊。內部.D-Bus有三個抽象層：接收到訊息的D-Bus連線會被轉送到一個特定的物件，而非行程。因此，客戶端只知道它們是與物件互動，但並不知道另一側是否真的有物件。D-Bus為每個物件定義了一個名稱，其看起來像是POSIX檔案系統路徑，但實際上並不是，例如/org/kde/kspread/sheets/3/cells/4/5。D-Bus物件的名稱通常會使用名稱空間以協助獨立開發程式碼模組。名稱空間一般會以開發者的保留域名元件作為字首。採用.KDE第二版與第三版使用的系統對D-Bus有深刻影響，後者在KDE 4中取代了前者。D-Bus的實作支援大多數的POSIX作業系統，也有一個Windows的移植。它也在Qt 4、GNOME及Xfce中使用。在GNOME中，它已逐漸取代了早期的機制。D-Bus最初用於桌面環境，後來使用範圍逐漸擴充套件，包含的系統服務越來越多。例如NetworkManager網路守護行程、BlueZ藍芽堆疊及PulseAudio音訊伺服器都使用D-Bus來提供其部份或全部的服務，systemd也正促使傳統的系統守護行程轉換到D-Bus服務。#重定向它也用於AllJoyn協定在家庭自動化中的，為AllJoyn加入了探索、工作階段管理、安全、標頭壓縮、嵌入式裝置支援。雖然已經有多個D-Bus的實作，但其中使用最廣泛的參考實作是libdbus，開發者就是設計規範的freedesktop.org專案。不過libdbus是一個低階的實作，並不會直接被應用程式開發者所使用，但是可作為其他D-Bus實作的參考指南。freedesktop.org專案自身建議應用程式的作者「使用較高階的綁紮或是實作」來替代。因為libdbus是最常被使用的D-Bus實作，術語"D-Bus"與"libdbus"經常互換使用，導致了混亂。GDBus是一個基於包含在GLib中的的D-Bus實作，其致力於讓GTK+與GNOME使用。GDBus並不是libdbus的封裝，而是一個完整且獨立的D-Bus規範與協定的重新實作。QtDBus是一個自4.2版開始，包含於Qt函式庫的D-Bus實作。這個元件也被KDE的應用程式、函式庫及元件用於存取在系統中所提供的D-Bus服務。2013年時，systemd專案重寫了libdbus，並努力簡化程式碼，它也使得D-Bus的整體效能有所提升。在先前的測試中，BMW發現systemd的D-Bus函式庫效能增長了360%。 而到了221版本的systemd，sd-bus的應用程式介面已被宣告為穩定另外還有一個積極開發中的專案，稱為"kdbus"，其致力於重新實作D-Bus為核心中介的點對點行程間通訊機制。除了效能的提升，kdbus也受益於已經存在的Linux核心特性，像是名稱空間、審核機制、核心傳遞的安全特性、終止競爭條件等，並讓D-Bus可以在開機與關機時使用。但kdbus在Linux核心的特性中造成了不尋常的爭議，是以截至2015年 (2015)[ [update]]都尚未被合併。已經有多個程式語言的D-Bus綁紮被開發出來，像是 Java、C♯、Ruby以及Python等的綁紮均已存在。
metadata.dataset: erhwenkuo/wikipedia-zhtw
metadata.title: D-Bus
metadata.url: https://zh.wikipedia.org/wiki?curid=5020473