当前位置: 移动技术网 > IT编程>开发语言>.net > 半小时入门Thrift

半小时入门Thrift

2018年09月17日  | 移动技术网IT编程  | 我要评论

林浩的故事,佟丽娅老公,洪荒龙门阵

      当一个单体软件产品体量达到一定程序,都会想到拆分为不同的模块(当今这么流行微服务)。拆分后一定会存在进程之间的交互(简称:prc),那么thrift就是facebook推出一款开源的rpc框架,且还跨语言。此文章就是来打开thrift的打开(当然这次还是基于.net)。 示例代码下载:

一、准备工作

下载地址:(可以选择可使用的版本),其中需要下载如下两个文件包:

  • thrift-*.*.exe:此程序是在windows上用的,用于将thrift文件转换为对应语言的代码文件工具
  • thrift-0.11.0.tar.gz:供各语言使用的基类库,c#要编译出对应的dll

1.1 生成thrift.dll

此点要注意,他分为.net35和.net45两个版本,可以根据需要进行相应的生成

二、生成rpc可使用的文件

2.1 创建hello.thrift文件,并输入如下内容:

struct user{
    1:i32 id
    2:string name
}

service userservice{
    user getuserbyid(1:i32 userid)
     list<user> getall()
    void add(1:user user)
}

2.2 运行命令进行csharp代码的生成

生成成功后,会有一个gen-csharp文件夹

gen-csharp文件夹中包含的就是我们需要的c#代码。

三、建立项目

项目结构如下

其引用关系为如下:

  • 所有项目都必须引用在在1.1中编译好的thrift.dll文件
  • client和server项目都必须引用thrift.services项目
  • 在server端做接口的实现,接口在对应的service下
  • userservice的实现代码如下:
public class userserviceimp : userservice.iface
    {
        private ilist<user> users;

        public userserviceimp()
        {
            this.users = new list<user>();
        }

        public void add(user user)
        {
            console.writeline(user.name);
            this.users.add(user);
        }

        public list<user> getall()
        {
            return this.users.tolist();
        }

        public user getuserbyid(int userid)
        {
            return this.users.where(m => m.id == userid).firstordefault();
        }
    }

四、测试

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网