码迷,mamicode.com
首页 > 编程语言 > 详细

RPC学习--C#使用Thrift简介,C#客户端和Java服务端相互交互

时间:2014-09-01 00:15:42      阅读:306      评论:0      收藏:0      [点我收藏+]

标签:winform   style   blog   http   color   os   io   使用   java   

本文主要介绍两部分内容:

  • C#中使用Thrift简介
  • 用Java创建一个服务端,用C#创建一个客户端通过thrift与其交互。

其中使用到RPC学习----Thrift快速入门和Java简单示例,这篇文章创建的Java服务端。

一、C#中使用Thrift简介

关于rpc的简介,可以参考:RPC学习----Thrift快速入门和Java简单示例

1、下载thrift

1)点击下载:thrift-0.9.1.tar.gz (或者http://thrift.apache.org/download)

2)Thrift compiler for Windows (thrift-0.9.1.exe) 

两个都要下载。

 

2、引入thrift.dll

这里将下载好的.gz文件解压后,然后找到lib目录

bubuko.com,布布扣

 

用vs打开后,如下图所示,然后右键--》重新生成---》生成thrift.dll

bubuko.com,布布扣

 

bubuko.com,布布扣

 

 

3、生成cs文件

hello.thrift

service  HelloWorldService {
  string sayHello(1:string username)
}

使用命令生成cs文件:

thrift-0.9.1.exe -gen csharp hello.thrift

bubuko.com,布布扣

关于thrift-0.9.1.exe的使用方法可以查看命令: thrift-0.9.1.exe -help

bubuko.com,布布扣

 

将生成的HelloWorldService.cs文件拷入项目中。

 

二、C#客户端发送消息到Java生成的服务端,实现跨平台操作

1、启动Java版的服务端

bubuko.com,布布扣

 

 

2、使用vs新建一个winform程序

bubuko.com,布布扣

 

button点击事件:

      private void button1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != null)
            {
              new HelloWorldServiceClient().startClient(textBox1.Text.Trim());
           }
        }            

HelloWorldServiceClient.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Thrift.Protocol;
using Thrift.Transport;
using Thrift;

namespace thrfitCsharp
{
    class HelloWorldServiceClient
    {
        public const string SERVERIP = "localhost";
        public static int SERVERPORT = 8090;
        public static int TIMEOUT = 3000;

        public void startClient(String username)
        {
            TTransport transport = null;
            try
            {
                transport = new TSocket(SERVERIP, SERVERPORT, TIMEOUT);
                //协议要和服务端一致
                TProtocol protocol = new TCompactProtocol(transport);
                HelloWorldService.Client client = new HelloWorldService.Client(protocol);
                transport.Open();
                String result = client.sayHello(username);
                Console.WriteLine("Thrift client result =: " + result);

            }
            catch (Exception e)
            {
                Console.WriteLine(e.StackTrace);
            }
            finally
            {
                if (null != transport)
                {
                    //close
                    transport.Close();
                }
            }
        }


    }
}

 

HelloWroldImpl.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace thrfitCsharp
{
    class HelloWroldImpl : HelloWorldService.Iface
    {

        public  string sayHello(string username){
            Console.WriteLine("hello"+username);
            return "hello" + username;
        }

    }
}

 

效果图:

bubuko.com,布布扣

 

注:下面是改进版的,主要添加了纯C#版的:

bubuko.com,布布扣

 

纯C#版是说用C#实现客户端和服务端,下面是纯c#版的输出:

bubuko.com,布布扣

 

 

本文源码https://github.com/amosli/rpc/tree/thriftCsharp 

 C#实现主要参考:http://www.cnblogs.com/hanmos/archive/2011/09/15/2177891.html

 

RPC学习--C#使用Thrift简介,C#客户端和Java服务端相互交互

标签:winform   style   blog   http   color   os   io   使用   java   

原文地址:http://www.cnblogs.com/amosli/p/3948342.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!