This is a mirror of official site: http://jasper-net.blogspot.com/

Использование Thrift в .NET

| Wednesday, July 27, 2011
Хочу поделиться с вами примером того как можно использовать такую удобную штуку как Thrift в своих .NET проектах.

Для тех кто не знает, Thrift — это фреймворк для облегчения взаимодействия между кодом написанным на разных языках, а именно C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk и OCaml.

Thrift используется и был изначально создан Facebook. Так же неоднократно упоминался здесь, на Хабре, но примеров для .NET я не нашел, кстати пошаговое руководство для .NET отсутствует и на официальном сайте. В гугле если честно, тоже не смог найти, хотя может плохо искал.

Thrift позволяет один раз описать сервис, структуры данных и даже исключения, а потом сгенерировать код для всех поддерживаемых языков. Таким образом, если вы, например, напишете сервер с использованием Thrift на .NET, то вы

    Сэкономите кучу времени для написания клиент серверного приложения, например с использованием сокетов.
    Почти автоматически получаете клиентов на всех поддерживаемых языках.

В своем примере я реализую простейший сервис, который просто будет возвращать время. Но имея такой макет достаточно легко расширить его до чего-нибудь полезного.


Итак нам понадобится:

  • Исходники Thrift — они нужны нам для того что бы собрать библиотеку (class library) для подключения в наш проект.
  • Thrift компилятор — консольная утилита которая генерирует код на необходимом нам языке из .thrift файлов

...
...

Шаг 3: Генерируем код из .thrift файла
Опишем наш сервис и структуру данных. Для этого создадим файл TimeService.thrift с таким содержанием:

    namespace csharp TimeServer.Thrift

    //Structure for returning Time
    struct TimeInfoStruct{
    1: string Time
    }

    //Service
    service TimeService
    {
      TimeInfoStruct GetTime()
    }


Read more: Habrahabr.ru
QR: https://chart.googleapis.com/chart?chs=80x80&cht=qr&choe=UTF-8&chl=http://habrahabr.ru/blogs/net/106839/

Posted via email from Jasper-net

0 comments: