zoukankan      html  css  js  c++  java
  • 半小时入门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();
            }
        }

    四、测试

  • 相关阅读:
    moss jscript
    CSS两端对准
    简单的日期格式验证
    .NET中使用Exchange 2007 Webservice来读取邮件
    张二狗
    spcontext
    Infopath表单用改控件值提交或作别的更改时一定要在控件属性浏览器表单的回发设置为始终.
    使用 Web 服务
    SharePoint 2010中开发模式的改进 COM 客户端对象模型
    Retrieve data from Separate Oracle System
  • 原文地址:https://www.cnblogs.com/cqhaibin/p/9656646.html
Copyright © 2011-2022 走看看