关于C#版Nebula客户端编译的问题

 更新时间:2021年07月21日 09:56:40   作者:静若清池  
这篇文章主要介绍了C#版Nebula客户端编译的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

一、需求背景

从Nebula的Github上可以发现,Nebula为以下语言提供了客户端SDK:

nebula-cpp
nebula-java
nebula-go
nebula-python
nebula-node
nebula-rust

我们公司的业务开发语言是C#,但Nebula却没有提供C#版的客户端。

由于Nebula支持源码编译,索性只好尝试动手编译一个。

二、Thrift简介

1.Thrift是Facebook在2007年贡献给Apache基金会的一个开源项目:https://thrift.apache.org/

Thrift可以支持多种程序语言,例如:C++,C#,Cocoa,Erlang,Haskell,Java,Ocami,Perl,PHP,Python,Ruby,Smalltalk。

Thrift可以作为二进制的高性能的通讯中间件,支持数据(对象)序列化和多种类型的RPC服务

2.Facebook自己也维护了一个Thrift,目前已经和Apache的Thrift差别较大,重写了编译器,重新实现了一个全异步的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文件进行编译的,但是使用的Thrift编译器,不是Facebook贡献给Apache的那个Thrift,而是Facebook自己维护的那个Thrift,有点绕。

4.Nebula提供的Thrift模板为:https://github.com/vesoft-inc/nebula-common/tree/master/src/common/interface

三、编译前准备工作

1.操作系统

通过VMware搭建的本地CenOS 7,虚拟机与主机健通过NAT网络连接,内存8G,宿主机有梯子可以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.检查主机上的GCC和CMake版本是否正确

root# g++ --version
root# cmake --version

发现版本不正确,并且git clone也不好使,只好手动下载2.0.1版本的nebula-common:https://github.com/vesoft-inc/nebula-common/tree/v2.0.1

4.解压上述的nebula-common-2.0.1.zip解压,进入nebula-common-2.0.1根目录

5.依次执行如下命令

// 安装CMake。
root# ./third-party/install-cmake.sh cmake-install

// 启用CMake。
root# source cmake-install/bin/enable-cmake.sh

//opt目录添加写权限。
root# sudo mkdir /opt/vesoft && sudo chmod -R a+w /opt/vesoft

// 安装GCC。安装到opt目录需要写权限,用户也可以修改为其他目录。
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.进入上述的nebula-common-2.0.1根目录

2.依次执行命令

root#cmake
root#make

3.查看基于Thrift模板生成的C#代码

nebula-common-2.0.1/src/common/interface/gen-csharp/nebula

五、后续工作

目前只是根据Thrift模板生成了对应C#接口的定义和解析,还需要参考Nebula提供的Java的客户端代码,翻译成对应的C#代码

六、参考文档

https://docs.nebula-graph.com.cn/2.0.1/4.deployment-and-installation/1.resource-preparations/

到此这篇关于C#版Nebula客户端编译的文章就介绍到这了,更多相关C#版Nebula客户端编译内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于C#实现屏幕取色器

    基于C#实现屏幕取色器

    这篇文章主要为大家详细介绍了如何利用C#实现简易的屏幕取色器,文中的示例代码讲解详细,对我们学习C#有一定的帮助,感兴趣的小伙伴可以了解一下
    2022-12-12
  • C#使用对象序列化类库MessasgePack

    C#使用对象序列化类库MessasgePack

    这篇文章介绍了C#使用对象序列化类库MessasgePack的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • 使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序)

    使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序)

    这篇文章主要介绍了使用Visual Studio2019创建C#项目(窗体应用程序、控制台应用程序、Web应用程序),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2020-03-03
  • C#处理datagridview虚拟模式的方法

    C#处理datagridview虚拟模式的方法

    这篇文章主要介绍了C#处理datagridview虚拟模式的方法,实例分析了C#中datagridview的使用技巧,需要的朋友可以参考下
    2015-06-06
  • c#项目将dll打包到exe中的步骤

    c#项目将dll打包到exe中的步骤

    这篇文章主要介绍了c#项目将dll打包到exe中的步骤,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-04-04
  • C#实现保存文件时重名自动生成新文件的方法

    C#实现保存文件时重名自动生成新文件的方法

    这篇文章主要介绍了C#实现保存文件时重名自动生成新文件的方法,涉及C#针对保存文件时出现重命名情况的自动处理技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • C# 数据库链接字符串加密解密工具代码详解

    C# 数据库链接字符串加密解密工具代码详解

    本文通过代码给大家介绍C# 数据库链接字符串加密解密工具的相关知识,实现思路大概是使用两个数对连接字符串进行加密,再用这两个数进行解密,具体详细代码,大家参考下本文
    2018-05-05
  • C#实现图表中鼠标移动并显示数据

    C#实现图表中鼠标移动并显示数据

    这篇文章主要为大家详细介绍了C#实现图表中鼠标移动并显示数据,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • C#属性显示的实现示例

    C#属性显示的实现示例

    本文主要介绍了C#属性显示的实现示例,显示对象的属性,包括可显示属性、可编辑属性、及不可编辑属性,下面就具有来介绍一下,感兴趣的可以了解一下
    2024-04-04
  • C#实现悬浮窗口的方法详解

    C#实现悬浮窗口的方法详解

    这篇文章主要为大家详细介绍了C#如何实现悬浮窗口的相关资料,文中的示例代码讲解详细,对我们学习C#有一定的帮助,感兴趣的小伙伴可以了解一下
    2022-12-12

最新评论