Apache Thrift--跨平台通信

Windows7上运行的C#客户端需要与在Ubuntu Server上使用nodejs构建的服务器进行跨平台跨语言的通信,选择使用开源软件thrift解决此问题。

Thrift相关介绍:

Apache Thrift入门1-架构&介绍

Thrift Wiki

一.Ubuntu上安装Apache Thrift

安装requirements:http://thrift.apache.org/docs/install/debian

$sudo apt-get install libboost-dev libboost-test-dev libboost-program-options-dev libboost-system-dev libboost-filesystem-dev libevent-dev automake libtool flex bison pkg-config g++ libssl-dev
$javac
$sudo apt-get install <selected-package>
$sudo apt-get install ant

Optional packages--Csharp

$sudo apt-get install mono-gmcs mono-devel libmono-system-web2.0-cil nunit nunit-console

Download Apache Thrift:https://thrift.apache.org/download

$wget http://mirrors.sonic.net/apache/thrift/0.9.1/thrift-0.9.1.tar.gz

or

$git clone https://git-wip-us.apache.org/repos/asf/thrift.git thrift
$cd thrift

从源码编译:https://thrift.apache.org/docs/BuildingFromSource     http://www.geilthings.com/wiki/Thrift

error&solution:有些语言环境支持出现问题,配置时加上 --without=XXX 选项,不包含不必要的语言支持。

https://issues.apache.org/jira/browse/THRIFT-2265

http://wbj0110.iteye.com/blog/1988455

error&solution:thrift thrift 安装 make 失败 ar: .libs/ThriftTest_constants.o: No such file or directory

http://stackoverflow.com/questions/18643642/libtool-error-building-thrift-0-9-1-on-ubuntu-13-04

http://www.cnblogs.com/q191201771/p/3878682.html

  1. cd ./thrift-0.9.0/tutorial
  2. thrift -r -gen cpp tutorial.thrift  // -r对其中include的文件也生成服务代码 -gen是生成服务代码的语言
  3. cd cpp
  4. make

运行  TutorialServer 和 TutorialClient

Writing a .thrift file,

generate the source from a thrift file run

thrift --gen <language> <Thrift filename>

利用apache Thrift 进行 node.js和 C++进程间通讯时遇到如下问题:

在运行client和server时出现错误:

libthrift-0.9.1.so: cannot open shared object file: No such file or directory

How to set the environmental variable LD_LIBRARY_PATH in linux

$vim ~/.bashrc
export LD_LIBRARY_PATH=/usr/local/lib
$source ~/.bashrc

二.windows下安装与实现thrift

1.下载thrift:thrift-0.9.1.exe   thrift-0.9.1.tar.gz

thrift-0.9.1.tar.gz

Thrift compiler for Windows (thrift-0.9.1.exe)

2.下载安装boost:(c++需要该标准库,c#略过这一步)

http://www.boost.org/

参考链接:

http://www.cnblogs.com/ComputerG/archive/2011/03/10/1979730.html

http://download.csdn.net/detail/snrmp0711/5896485

编译boost:

3.编译thrift脚本,生成类文件,cmd:

thrift-0.9.1.exe -r --gen csharp tutorial.thrift

产生gen-csharp文件夹,有如下文件:

4.支持C#的Thrift.dll

在thrift-0.9.1/lib/csharp/ 下存在Thrift.dll文件

或者使用thrift-0.9.1/lib/csharp/src/文件夹下的代码通过VS2012编译

编译Thrift Solution,产生Thrift.dll文件:

4.添加thrift生成的文件以及Client Server文件,并且添加工程引用Thrift.dll

运行分别debug/下的Server.exe与Client.exe,结果如下:

修改Client代码的IP,为nodjs-server所在IP,重新生成方案,分别运行node nodeserver.js与Client.exe,成功进行远程调用。则Windows7上的C#与Ubuntu Server 14.04上的Nodejs通过thrift进行跨平台跨语言的通信。

参考链接:

Thrift初探:简单实现C#通讯服务程序

三.使用用同一个.thrift文件生成的struct和service编写服务器程序和客户端,则可以实现跨平台跨语言的通信

时间: 2024-10-13 00:22:05

Apache Thrift--跨平台通信的相关文章

跨平台通信中间件thrift学习【Java版本】(转)

转自:http://neoremind.com/2012/03/%E8%B7%A8%E5%B9%B3%E5%8F%B0%E9%80%9A%E4%BF%A1%E4%B8%AD%E9%97%B4%E4%BB%B6thrift%E5%AD%A6%E4%B9%A0%E3%80%90java%E7%89%88%E6%9C%AC%E3%80%91/ 1. What is thrift? Thrift是一个跨语言的服务部署框架,最初由Facebook于2007年开发,2008年进入Apache开源项目.跨平台

使用thrift实现了Java服务器和nodejs客户端之间的跨平台通信

1. 简单介绍 thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 这些编程语言间无缝结合的.高效的服务. 2. 下载与安装 Thrift目前最高0.9.2,地址:http://archive.apache.org/dist

架构设计:系统间通信(14)——RPC实例Apache Thrift 下篇(2)

(接上篇<架构设计:系统间通信(13)--RPC实例Apache Thrift 下篇(1)>) 3.正式开始编码 我已经在CSDN的资源区上传了这个示例工程的所有代码(http://download.csdn.net/detail/yinwenjie/9289999).读者可以直接到资源下载站进行下载(不收积分哦~~^_^).这篇文章将紧接上文,主要介绍这个工程几个主要的类代码. 3-1.编写服务端主程序 服务端主程序的类名:processor.MainProcessor,它负责在服务端启动A

【Java】分布式RPC通信框架Apache Thrift 使用总结

简介 Apache Thrift是Facebook开源的跨语言的RPC通信框架,目前已经捐献给Apache基金会管理,由于其跨语言特性和出色的性能,在很多互联网公司得到应用,有能力的公司甚至会基于thrift研发一套分布式服务框架,增加诸如服务注册.服务发现等功能. RPC即Remote Procedure Call,翻译为远程过程调用.任何RPC协议的实现终极目标都是让使用者在调用远程方法的时候就像是调用本地方法一样简单,从而提高使用远程服务的效率. 现代互联网架构多数基于SOA思想而搭建,即

Apache Thrift 的基本使用

Apache Thrift 的基本使用 可以先看看官网是如何介绍的 The Apache Thrift software framework, for scalable cross-language services development, combines a software stack with a code generation engine to build services that work efficiently and seamlessly between C++, Java

Apache Thrift with Java Quickstart(thrift入门及Java实例)

thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 这些编程语言间无缝结合的.高效的服务. 1. 概述 Thrift最初由facebook开发,07年四月开放源码,08年5月进入apache孵化器.thrift允许你定义一个

Apache Thrift 跨语言服务开发框架

Apache Thrift 是一种支持多种编程语言的远程服务调用框架,由 Facebook 于 2007 年开发,并于 2008 年进入 Apache 开源项目管理.Apache Thrift 通过 IDL 来定义 RPC 的接口和数据类型,然后通过代码生成工具来生成针对不同编程语言的代码,目前支持 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCa

Apache Thrift使用总结

使用感受 之前对Thrift的理解有点不准确,使用之后发现Thrift比想象中的要简单得多. Thrift做的事情就是跨语言的分布式RPC,通过编写.thrift文件声明接口类和方法,客户端调用定义的方法,Server端实现定义的接口.虽然的确RPC是需要网络请求,但不像Netty这种NIO网络编程库(还要关注很多数据传输中的细节,比如数据如何序列化.如何在字节数组里建立结构.如何在两端解析字节数组.如何处理Handler里的事件状态.如何把多个Handler按顺序串起来),Thrift掩盖了数

Apache Thrift学习之二(基础及原理)

Apache Thrift 是 Facebook 实现的一种高效的.支持多种编程语言的远程服务调用的框架.本文将从 Java 开发人员角度详细介绍 Apache Thrift 的架构.开发和部署,并且针对不同的传输协议和服务类型给出相应的 Java 实例,同时详细介绍 Thrift 异步客户端的实现,最后提出使用 Thrift 需要注意的事项. 前言: 目前流行的服务调用方式有很多种,例如基于 SOAP 消息格式的 Web Service,基于 JSON 消息格式的 RESTful 服务等.其中