半小时入门Thrift

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

一、准备工作

下载地址:http://archive.apache.org/dist/thrift(可以选择可使用的版本),其中需要下载如下两个文件包:

  • 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();
        }
    }

四、测试

原文地址:https://www.cnblogs.com/cqhaibin/p/9656646.html

时间: 2024-10-24 07:36:37

半小时入门Thrift的相关文章

半小时入门Angular 2

本文首发于由电子工业出版社出版<揭秘Angular 2>一书,基于第5章概览改写. 作者简介:广发证券互联网金融技术团队,是Angular早期坚定的践行者.作为全新一代的证券业 IT 研发组织,团队致力于用更新更好的技术打造行业方案.支持业务创新. 责编:陈秋歌,寻求报道或者投稿请发邮件至chenqg#csdn.net,或加微信:Rachel_qg. 了解更多前沿技术资讯,获取深度技术文章推荐,请关注CSDN研发频道微博. Angular 2.0 于去年 9 月正式发布. 尽管同一时间里 Re

每篇半小时1天入门MongoDB——2.MongoDB环境变量配置和Shell操作

上一篇:每篇半小时1天入门MongoDB——1.MongoDB介绍和安装 配置环境变量 Win10系统为例 右键单击“此电脑”——属性——高级系统设置——高级——环境变量,添加C:\Program Files\MongoDB\Server\3.0\bin;.注意:要以;隔开各种变量. 这样的话就可以直接在CMD命令窗口中输入mongo 表示环境变量设置成功,并已经连接到默认数据库test中. 我们可以输入mongod --help来查看相关的帮助信息 C:\Users\zouqi>mongod

【转】用Python写了个金融数据爬虫,半小时干了全组一周的工作量

用Python写了个金融数据爬虫,半小时干了全组一周的工作量 原创kk12345677 最后发布于2019-08-21 16:59:54 阅读数 1652 收藏 展开 最近,越来越多的研究员.基金经理甚至财务会计领域的朋友,向小编咨询:金融人需要学Python么? 事实上在2019年,这已经不是一个问题了.Python已成为国内很多顶级投行.基金.咨询等泛金融.商科领域的必备技能.中金公司.银河证券.南方基金.银华基金在招聘分析师岗位时,纷纷要求熟练掌握Python数据分析技能. Excel我已

shell if判断(曾经被一个字符串相等的判断纠结半小时,最后只是if后少了个空格!) 和 awk引用外部变量判断

一.if判断 数字: $A=12 $B=15 if(("$A"<"$B")) if(("$A"=="$B")) 字符串: $A="HELLO" $B="WORLD" if [ "$A" = "FACT_LOGIN_USER" ] if [ "$A" = "$B" ] PS:字符串比较的时候注意 'if'

半小时快速了解redis,基于ubuntu 12.04 + redis 2.8.9

一.什么是redis ? 其官方介绍是: Redis is what is called a key-value store, often referred to as a NoSQL database. Redis is an open source, BSD licensed, advanced key-value store. It is often referred to as a data structure server sincekeys can contain strings, 

Oracle中获取当前时间半小时前的时间

最近项目中有个要根据半个小时前的数据情况判断某一栏位的值,但是一直没想到怎样获取当前时间的半小时前的时间,今天突然想到可以通过sysdate做差来获取,比如sysdate-1这样的,刚开始没有对结果进行细看,以为不可以,后来不经意看了之前的结果发现sysdate-1获得的是当前时间的前一天,也就是说sysdate-n获得的是当前时间n天前的结果,所以就试了sysdate-0.5/24这样就获得了需要的结果.OK大功告成.

《Qt Quick 4小时入门》学习笔记4

http://edu.csdn.net/course/detail/1042/14806?auto_start=1 Qt Quick 4小时入门 第七章:处理鼠标与键盘事件 1.处理鼠标事件 鼠标信号传递一个MouseEvent类型的mouse参数 import QtQuick 2.7 import QtQuick.Controls 2.0 import QtQuick.Layouts 1.0 import QtQuick.Window 2.0 Window { visible: true wi

《Qt Quick 4小时入门》学习笔记2

http://edu.csdn.net/course/detail/1042/14805?auto_start=1 Qt Quick 4小时入门 第五章:Qt Quick基本界面元素介绍 1.Window:派生自Item: 2.ApplicationWindow:可以有菜单.工具栏等: 3.Item importQtQuick2.0 importQtQuick.Controls2.0; importQtQuick.Window2.0; Window{ visible:true; width:48

Quartz 设置一个半小时任务实现

该文章属于本人原创,转载请注明出处. spring + Quartz 设置定时任务时要求没一个半小时执行一次 设置两个相同的定时任务 第一个从整点开始每三小时执行一次 <!--每三小时执行一次任务,从整点开始--> <property name ="cronExpression" value="0 0 0/3 * * ?"></property> 第二个从一个半小时后开始每三小时执行一次 <!--每三小时执行一次任务,从一个