關(guān)于C#版Nebula客戶端編譯的問題
一、需求背景
從Nebula的Github上可以發(fā)現(xiàn),Nebula為以下語言提供了客戶端SDK:
nebula-cpp
nebula-java
nebula-go
nebula-python
nebula-node
nebula-rust
我們公司的業(yè)務(wù)開發(fā)語言是C#,但Nebula卻沒有提供C#版的客戶端。
由于Nebula支持源碼編譯,索性只好嘗試動(dòng)手編譯一個(gè)。
二、Thrift簡介
1.Thrift是Facebook在2007年貢獻(xiàn)給Apache基金會(huì)的一個(gè)開源項(xiàng)目:https://thrift.apache.org/
Thrift可以支持多種程序語言,例如:C++,C#,Cocoa,Erlang,Haskell,Java,Ocami,Perl,PHP,Python,Ruby,Smalltalk。
Thrift可以作為二進(jìn)制的高性能的通訊中間件,支持?jǐn)?shù)據(jù)(對(duì)象)序列化和多種類型的RPC服務(wù)
2.Facebook自己也維護(hù)了一個(gè)Thrift,目前已經(jīng)和Apache的Thrift差別較大,重寫了編譯器,重新實(shí)現(xiàn)了一個(gè)全異步的Thrift Server:https://github.com/facebook/fbthrift
Facebook Thrift is not a distribution of Apache Thrift.
This is an evolved internal branch of Thrift that Facebook re-released to open source community in February 2014.
Facebook Thrift was originally released closely tracking Apache Thrift but is now evolving in new directions.
In particular, the compiler was rewritten from scratch and the new implementation features a fully asynchronous Thrift server.
3.Nebula的客戶端基于Thrift文件進(jìn)行編譯的,但是使用的Thrift編譯器,不是Facebook貢獻(xiàn)給Apache的那個(gè)Thrift,而是Facebook自己維護(hù)的那個(gè)Thrift,有點(diǎn)繞。
4.Nebula提供的Thrift模板為:https://github.com/vesoft-inc/nebula-common/tree/master/src/common/interface
三、編譯前準(zhǔn)備工作
1.操作系統(tǒng)
通過VMware搭建的本地CenOS 7,虛擬機(jī)與主機(jī)健通過NAT網(wǎng)絡(luò)連接,內(nèi)存8G,宿主機(jī)有梯子可以FQ
2.安裝依賴
root# yum update root# yum install -y make \ m4 \ git \ wget \ unzip \ xz \ readline-devel \ ncurses-devel \ zlib-devel \ gcc \ gcc-c++ \ cmake \ gettext \ curl \ redhat-lsb-core \ bzip2
3.檢查主機(jī)上的GCC和CMake版本是否正確
root# g++ --version root# cmake --version
發(fā)現(xiàn)版本不正確,并且git clone也不好使,只好手動(dòng)下載2.0.1版本的nebula-common:https://github.com/vesoft-inc/nebula-common/tree/v2.0.1
4.解壓上述的nebula-common-2.0.1.zip解壓,進(jìn)入nebula-common-2.0.1根目錄
5.依次執(zhí)行如下命令
// 安裝CMake。 root# ./third-party/install-cmake.sh cmake-install // 啟用CMake。 root# source cmake-install/bin/enable-cmake.sh //opt目錄添加寫權(quán)限。 root# sudo mkdir /opt/vesoft && sudo chmod -R a+w /opt/vesoft // 安裝GCC。安裝到opt目錄需要寫權(quán)限,用戶也可以修改為其他目錄。 root# ./third-party/install-gcc.sh --prefix=/opt // 啟用GCC。 root# source /opt/vesoft/toolset/gcc/7.5.0/enable // 安裝第三方依賴 root# ./third-party/install-third-party.sh
四、編譯
1.進(jìn)入上述的nebula-common-2.0.1根目錄
2.依次執(zhí)行命令
root#cmake root#make
3.查看基于Thrift模板生成的C#代碼
nebula-common-2.0.1/src/common/interface/gen-csharp/nebula
五、后續(xù)工作
目前只是根據(jù)Thrift模板生成了對(duì)應(yīng)C#接口的定義和解析,還需要參考Nebula提供的Java的客戶端代碼,翻譯成對(duì)應(yīng)的C#代碼
六、參考文檔
https://docs.nebula-graph.com.cn/2.0.1/4.deployment-and-installation/1.resource-preparations/
到此這篇關(guān)于C#版Nebula客戶端編譯的文章就介紹到這了,更多相關(guān)C#版Nebula客戶端編譯內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#設(shè)計(jì)模式之適配器模式與裝飾器模式的實(shí)現(xiàn)
創(chuàng)建型設(shè)計(jì)模式主要是為了解決創(chuàng)建對(duì)象的問題,而結(jié)構(gòu)型設(shè)計(jì)模式則是為了解決已有對(duì)象的使用問題。本文將用C#語言實(shí)現(xiàn)結(jié)構(gòu)型設(shè)計(jì)模式中的適配器模式與裝飾器模式,感興趣的可以了解一下2022-04-04C#的String轉(zhuǎn)換成float防止精度丟失問題的解決
這篇文章主要介紹了C#的String轉(zhuǎn)換成float防止精度丟失問題的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07C#使用WebSocket實(shí)現(xiàn)聊天室功能
這篇文章主要為大家詳細(xì)介紹了C#使用WebSocket實(shí)現(xiàn)聊天室功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02C#使用HttpWebRequest與HttpWebResponse模擬用戶登錄
這篇文章主要為大家詳細(xì)介紹了C#使用HttpWebRequest與HttpWebResponse模擬用戶登錄,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-04-04Unity3D使用GL實(shí)現(xiàn)圖案解鎖功能
這篇文章主要為大家詳細(xì)介紹了Unity3D使用GL實(shí)現(xiàn)圖案解鎖功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-03-03DevExpress SplitContainerControl用法總結(jié)
這篇文章主要介紹了DevExpress SplitContainerControl用法,對(duì)初學(xué)者有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-08-08