基於Go的D Bus框架(二)

2021-06-22 22:06:59 字數 1593 閱讀 1713

d-bus 核心定義了一套自省機制,這個自省跟物件導向裡的自省有點類似,即可以在執行時查詢物件的相關資訊,包括介面和屬性等。大部分支援 d-bus 的程式都實現了 org.freedesktop.dbus.introspectable 這個標準介面,為它們匯出的物件提供自省支援。這個介面只有乙個方法 introspect,它返回物件的xml格式描述。

go.dbus 給出了乙個示例,server.go:

package main

}

執行server.go,使用如下命令對 /com/github/guelfey/demo 這個物件呼叫 org.freedesktop.dbus.introspectable.introspect:

就可以得到這個物件的自省資料。

當然,這裡xml字串是硬編碼在原始檔中的。手寫xml是一件很無聊的事。這次開源夏令營的目標之一就是自動生成自省資料。具體思路是靜態掃瞄原始檔,並且支援函式引數名稱和結構體欄位名稱匯出。

go.dbus 對 d-bus 的核心協議已經有了完整的實現,go-dbus 在此基礎上提供乙個更加易用的介面,其底層依然是依賴go.dbus的。這幾天通過研究go.dbus的源**,對於d-bus底層以及如何擴充套件它都有了更深的了解。現在終於感覺這個專案有點眉目清晰的感覺了,接下來就應該編碼來實現具體功能了。

乙個基於D BUS的中介軟體系統

先來說下什麼是d bus。最便捷的是引用 freedesktop.org的官方英文定義哈,我的初步計畫,基於d bus來實現底層通訊,通過idl介面定義來實現上層業務邏輯的定義,借助idl2dbus生成stub和proxy 從而實現乙個mini版本的中介軟體系統,類似於corba系統,但是足夠輕巧!...

go基於grpc構建微服務框架 服務註冊與發現

grpc 是谷歌開源的rpc框架,基於http2實現,並支援跨語言,目前基本涵蓋了主流語言.跨語言的實現主要得益於protobuf,通過編寫proto檔案,通過protobuf工具生成對應語言的類庫進行使用.對於go這樣一門新生語言來說,生態鏈還處於發展階段,微服務框架也是如此,下面將基於grpc ...

go 語言的web 框架

golang被稱為雲計算時代的c語言,它以其獨特的優勢逐漸被越來越多的公司所關注和使用。為了充分利用golang的web開發優勢,有必要熟悉一下go語言的web框架。beego是乙個完全的mvc框架,你可以使用你的go語言專業技術構建你的web應用程式。beego框架下,你可以 自動化地實現測試 打...