Thrift introduce

  • data type

bool               A boolean value, true or false
byte               A signed byte
i16                  A 16-bit signed integer
i32                  A 32-bit signed integer
i64                 A 64-bit signed integer
double         A 64-bit floating point number
string           An encoding-agnostic text or binary string

  • struct

A struct is essentially equivalent to a class in object oriented
programming languages. A struct has a set of strongly typed
fields, each with a unique name identifier. The basic syntax for
defining a Thrift struct looks very similar to a C struct definition.
Fields may be annotated with an integer field identifier (unique to
the scope of that struct) and optional default values. Field identifiers
will be automatically assigned if omitted, though they are strongly
encouraged for versioning reasons discussed later.

Example of struct


  • Service

Services are defined using Thrift types. Definition of a service is
semantically equivalent to defining an interface (or a pure virtual
abstract class) in object oriented programming. The Thrift compiler
generates fully functional client and server stubs that implement the
interface. Services are defined as follows:


An example is  :


Note :  an async modifier keyword may be added to a void function,  which will generate code that does not wait for a response from the server.


  • Servers and Multithreading

Thrift services require basic multithreading to handle simultaneous
requests from multiple clients


****  Important 

Now I will create a RouteServer which supply a “QueryRoute” function , client send Anumber and Bnumber as parameter , server will reply a struct include 2 int and 1 string ,  how to write this service ?

  • First define the struct in thrift file

  • then define the interface


Full thrift file is :    name is “RouteServer.thrift”


goto folder :   /home/liuyang/thrift-0.11.0/tutorial

run command :  rm -r gen-csharp    ,   delete  existing folder

then run command :   thrift -r –gen csharp RouteServer.thrift


Then goto /home/liuyang/thrift-0.11.0/tutorial/gen-csharp , copy “RouteServer.cs” and “InvalidOperation.cs” and “Ret.cs” to windows machine console application ,  add to project .

For server side “Program.cs” ,change it to


For client “Program.cs” ,change it to


Now client can call server function and get reply .