рдЬреЛ рд▓реЛрдЧ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдереНрд░рд┐рдлреНрдЯ рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдХреЛрдб, рдЬреИрд╕реЗ рдХрд┐ C ++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C #, Cocoa, Smalltalk рдФрд░ OCaml рд╣реИред
рдереНрд░рд┐рдлреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдореВрд▓ рд░реВрдк рд╕реЗ рдлреЗрд╕рдмреБрдХ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣рд╛рдБ рднреА рдмрд╛рд░-рдмрд╛рд░ рд╣рдмреНрд░реЗ рдкрд░ рдЗрд╕рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ .NET рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рдорд┐рд▓рд╛, рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ .NET рдХреЗ рд▓рд┐рдП рдПрдХ рдХрджрдо рджрд░ рдХрджрдо рдЧрд╛рдЗрдб рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕рд╛рдЗрдЯ рдкрд░ рднреА рдЧрд╛рдпрдм рд╣реИред рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдпрд╣ Google рдореЗрдВ рднреА рдирд╣реАрдВ рдорд┐рд▓рд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВрдиреЗ рдЦрд░рд╛рдм рджреЗрдЦрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдереНрд░рд┐рдлреНрдЯ рдЖрдкрдХреЛ рдПрдХ рдмрд╛рд░ рдПрдХ рд╕реЗрд╡рд╛, рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдкрд╡рд╛рджреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╕рднреА рд╕рдорд░реНрдерд┐рдд рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рдЖрдк, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, .NET рдкрд░ рдереНрд░рд┐рдлреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдПрдХ рд╕рд░реНрд╡рд░ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк
- рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рдмрдЪрд╛рдПрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реЙрдХреЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред
- рд▓рдЧрднрдЧ рд╕рднреА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рднреА рд╕рдорд░реНрдерд┐рдд рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЧреНрд░рд╛рд╣рдХ рдорд┐рд▓рддреЗ рд╣реИрдВред
рддреЛ рд╣рдореЗрдВ рдЬрд░реВрд░рдд рд╣реИ:
- рдереНрд░рд┐рдлреНрдЯ рд╕реНрд░реЛрдд - рд╣рдореЗрдВ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп (рдХрдХреНрд╖рд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп) рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
- рдереНрд░рд┐рдлреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ - рдПрдХ рдХрдВрд╕реЛрд▓ рдпреВрдЯрд┐рд▓рд┐рдЯреА рдЬреЛ рдХреЛрдб рдХреЛ рдЙрд╕ рднрд╛рд╖рд╛ рдореЗрдВ рдЙрддреНрдкрдиреНрди рдХрд░рддреА рд╣реИ рдЬрд┐рд╕рдХреА рд╣рдореЗрдВ .thrift рдлрд╝рд╛рдЗрд▓реЛрдВ рд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ
рджреЛрдиреЛрдВ рдХреЛ рдпрд╣рд╛рдВ рд╕реЗ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд▓реЗрдЦ рдХреЗ рдЕрдВрдд рдореЗрдВ рдореИрдВ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рдЖрд╡реЗрджрди рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рджреВрдВрдЧрд╛, рдЙрдирдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рдирд┐рд░реНрдорд┐рдд рдХрдВрдкрд╛рдЗрд▓рд░ рд╣реИрдВ, рдЖрдк рд╡рд╣рд╛рдВ рд╕реЗ рд╕рдм рдХреБрдЫ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред
рдЪрд░рдг 1: рддреИрдпрд╛рд░реА
рдЗрд╕рд▓рд┐рдП рдЬрдм рдЖрдк рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рднреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдЕрдирдкреИрдХ рдХрд░ рджреЗрдВ рдФрд░ рдЬрд╛рдПрдВ
thrift-0.5.0\lib\csharp\src\
рдПрдХ рд╕рдорд╛рдзрд╛рди рдЦреЛрд▓реЗрдВ рдФрд░ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдВред рдлрд┐рд░ рдЖрдкрдХреЗ рдкрд╛рд╕ Thrift.dll рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИред
рдЪрд░рдг 2: рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг
рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдореЗрдВ 3 рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░реЗрдВред
- TimeServer рдПрдХ рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИред рд╕рд░реНрд╡рд░ред рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░реЗрдВрдЧреЗ
- TimeServerClient рдПрдХ рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИред рдХреНрд▓рд╛рдЗрдВрдЯред рд╕рд░реНрд╡рд░ рд╕реЗ рдЬреБрдбрд╝реЗрдВрдЧреЗ рдФрд░ рд╕рдордп рдорд╛рдВрдЧреЗрдВрдЧреЗред
- TimeServerCore - рдПрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп (рдХрдХреНрд╖рд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп)ред рдЗрд╕рдореЗрдВ рдЙрддреНрдкрдиреНрди C # рдХрдХреНрд╖рд╛рдПрдВ рдФрд░ рд╕реНрд░реЛрдд .thrift рдлрд╝рд╛рдЗрд▓ (рдЙрд╕ рдкрд░ рдФрд░ рдмрд╛рдж рдореЗрдВ) рд╣реЛрдЧреА

рдкрд╣рд▓реЗ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдереНрд░рд┐рдлреНрдЯ.рдбреЗрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рдереНрд░рд┐рдлрд╝реНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рд▓реЗрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рдорд╛рдзрд╛рди рдореЗрдВ рдПрдХ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдбрд╛рд▓реЗрдВред
рдЪрд░рдг 3: .rift рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ
рд╣рдо рдЕрдкрдиреА рд╕реЗрд╡рд╛ рдФрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде TimeService.thrift рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдБ:
namespace csharp TimeServer.Thrift
//Structure for returning Time
struct TimeInfoStruct{
1: string Time
}
//Service
service TimeService
{
TimeInfoStruct GetTime()
}
* This source code was highlighted with Source Code Highlighter .
рдФрд░ TimeServerCore рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдбрд╛рд▓реЗрдВ ред рдЪрд░рдг # 1 рдореЗрдВ рдкреНрд░рд╛рдкреНрдд Thrift.dll рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ (рд╕рдВрджрд░реНрдн) рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рднреА рдЬреЛрдбрд╝реЗрдВред
рдорд╣рддреНрд╡рдкреВрд░реНрдг: рдпреВрдирд┐рдХреЛрдб рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдореЗрдВ .thrift рдлрд╛рдЗрд▓ рдХреЛ рд╕реЗрд╡ рди рдХрд░реЗрдВ, рдореЗрд░реЗ рд▓рд┐рдП рдереНрд░рд┐рдлреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдЗрд╕рдореЗрдВ рд╕реЗ рдХреБрдЫ рднреА рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рдЬрдм рддрдХ рдХрд┐ рдлрд╛рдЗрд▓-> рдПрдбрд╡рд╛рдВрд╕реНрдб рд╕реЗрд╡ рдСрдкреНрд╢рди рдореЗрдВ рдореИрдВрдиреЗ рдпреВрдирд┐рдХреЛрдб рдХреЛ рдЕрдиреНрдп рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдореЗрдВ рдирд╣реАрдВ рдмрджрд▓ рджрд┐рдпрд╛ред
рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╣рдорд╛рд░реЗ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рд▓рдЧрднрдЧ рд╕рдВрдкреВрд░реНрдг рд╡рд┐рд╡рд░рдг рд╣реИред
рдЖрдк .thrift рдлрд╝рд╛рдЗрд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рдХрдХреНрд╖рд╛рдПрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдХреЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдереНрд░рд┐рдлреНрдЯ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдкреВрд░реНрд╡-рдирд┐рд░реНрдорд╛рдг рдШрдЯрдирд╛ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдпрджрд┐ рд╣рдо TimeService.thrift рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ
рдореЗрд░реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдкрджрд╛рдиреБрдХреНрд░рдо рдХреЗ рд╕рд╛рде, рдореБрдЭреЗ рдпрд╣ рдХреЙрд▓ рдорд┐рд▓рд╛
$(SolutionDir)\Thrift\thrift-0.5.0.exe -gen csharp -o $(ProjectDir) $(ProjectDir)\TimeService.thrift
"рдереНрд░рд┐рдлреНрдЯ-0.5.0.exe" рд╕реНрд╡рдпрдВ рдХрдВрдкрд╛рдЗрд▓рд░ рд╣реИ, рд╡рд┐рдХрд▓реНрдк "-gen csharp" рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ C # рдХреЗ рд▓рд┐рдП рдХрдХреНрд╖рд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╡рд┐рдХрд▓реНрдк "-o $ (ProjectDir)" рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдкрд░рд┐рдгрд╛рдо рдХрд╣рд╛рдВ рдбрд╛рд▓рдирд╛ рд╣реИ, рдФрд░ рд╢реЗрд╖ "$" (ProjectDir) ) \ TimeService.thrift " рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдирд┐рд░реНрдорд╛рдг рдХреЗ рдмрд╛рдж (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдкрд╣рд▓реЗ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдкреВрд░реНрд╡-рдирд┐рд░реНрдорд╛рдг рдШрдЯрдирд╛ рд╣реИ) рдЯрд╛рдЗрдорд╕реЗрд╡рд░рдХреЛрд░ , рд╣рдо 2 рдХрдХреНрд╖рд╛рдПрдВ рдмрдирд╛рдПрдВрдЧреЗ
TimeInfoStruct.cs - рд╕рдордп рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрд░рдЪрдирд╛, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдПрдХ рд╕реЗрд╡рд╛ рдкрджреНрдзрддрд┐ рдмрд╕ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рдеред
TimeService.cs рд╣рдорд╛рд░реА рдПрдХрдорд╛рддреНрд░ рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реЗрд╡рд╛ рд╣реИред
рдЙрдирдХреЗ рдкрд╛рд╕ рд╕реАрд░рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди / рдбреАрд░рд┐рдПрд░рд▓рд╛рдЗрдЬрд╝реЗрд╢рди, рд╡рд┐рдЬрд╝реБрдЕрд▓ рдЯреМрд░рд░рд┐рдВрдЧ рдФрд░ рдХреБрдЫ рдФрд░ рдХреЗ рд▓рд┐рдП рдХреЛрдб рднреА рд╣реИред
рд╡реЗ \ TimeServerCore \ gen-csharp \ TimeServer \ Thrift рдореЗрдВ рдЭреВрда рдмреЛрд▓реЗрдВрдЧреЗред рдпрджрд┐ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЬреАрди-рд╕реАрдПрд╕рдПрдЖрд░рдкреА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╣рдореЗрд╢рд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдореЗрдВ рдлреИрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рджрд┐рдЦрд╛рдИ рджреЗрдЧреА, рдФрд░ рдкрджрд╛рдиреБрдХреНрд░рдо рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╛рдорд╕реНрдерд╛рди рдХреЗ рдХрд╛рд░рдг рдкрджрд╛рдиреБрдХреНрд░рдо (\ TimeServer \ Thrift) рдореЗрдВ рджреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдБ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИрдВред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдЗрди 2 рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рдж рдпрд╣ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдирд┐рдХрд▓рд╛:

рдЪрд░рдг 4: рд╕рд░реНрд╡рд░
рдЪрд▓реЛ рдПрдХ рд╕рд░реНрд╡рд░ рд▓реЗрддреЗ рд╣реИрдВред TimeServer рдореЗрдВ Thrift.dll, рд╕рд╛рде рд╣реА рд╣рдорд╛рд░реЗ рд╕рдорд╛рдзрд╛рди рдореЗрдВ TimeServerCore рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрджрд░реНрдн рдЬреЛрдбрд╝реЗрдВред рдлрд┐рд░ рдПрдХ рдирдпрд╛ рд╡рд░реНрдЧ TimeServiceImplementation.cs рдмрдирд╛рдПрдВ ред
рдЗрд╕ рд╡рд░реНрдЧ рдореЗрдВ, рд╣рдо рдЕрдкрдиреА рд╕реЗрд╡рд╛ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рдЙрддреНрдкрдиреНрди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ TimeService.cs рдереНрд░рд┐рдлреНрдЯ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрд╣рд╛рдБ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ:
public class TimeService { //
public interface Iface {
TimeInfoStruct GetTime();
}
//...
}
* This source code was highlighted with Source Code Highlighter .
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ .thrift рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рд╣реИред
рдпрд╣рд╛рдБ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдореЗрд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ:
class TimeServiceImplementation : TimeService.Iface
{
public TimeInfoStruct GetTime()
{
return new TimeInfoStruct() { Time = DateTime .Now.ToString() };
}
}
* This source code was highlighted with Source Code Highlighter .
рдФрд░ рдЗрд╕рд▓рд┐рдП рд╕рдм рдХреБрдЫ рд▓рдЧрднрдЧ рддреИрдпрд╛рд░ рд╣реИ, рдЖрдкрдХреЛ рд╕рд░реНрд╡рд░ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ:
static void Main( string [] args)
{
TimeServiceImplementation service = new TimeServiceImplementation();
TProcessor processor = new TimeService.Processor(service);
TServerTransport transport = new TServerSocket(1337, 1000);
TServer server = new TSimpleServer(processor, transport);
server.Serve();
}
* This source code was highlighted with Source Code Highlighter .
рд╣рдо рд╕рд░реНрд╡рд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╣рдо рд╕рд░реНрд╡рд░ рдХреЛ рдкреЛрд░реНрдЯ 1337 рдкрд░ рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХрдиреЗрдХреНрд╢рди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдФрд░ рд╕рд░рд▓ рдХреЛрдб рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдХреЛрдб рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред
TSimpleServer рд╕рд░реНрд╡рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЕрд▓рд╛рд╡рд╛, Thrift.dll рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ TThreadedServer рдФрд░ TThreadPoolServer рд╣реИрдВред
рдЪрд░рдг 5: рдЧреНрд░рд╛рд╣рдХ
рдЧреНрд░рд╛рд╣рдХ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рднреА рдЖрд╕рд╛рди рд╣реИ:
static void Main( string [] args)
{
TTransport transport = new TSocket( "localhost" , 1337);
TProtocol proto = new TBinaryProtocol(transport);
TimeService.Client client = new TimeService.Client(proto);
transport.Open();
TimeInfoStruct result = client.GetTime();
Console .WriteLine(result.ToString());
Console .ReadKey();
}
* This source code was highlighted with Source Code Highlighter .
рдЧреНрд░рд╛рд╣рдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП Thrift.dll рдФрд░ TimeServerCore рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рди рднреВрд▓реЗрдВред
рдЬрд┐рд╕рдХреЗ рдмрд╛рдж, рдЖрдк рдкрд╣рд▓реЗ рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдХреНрд▓рд╛рдЗрдВрдЯред рдЬрд┐рд╕реЗ рд╡рд░реНрддрдорд╛рди рд╕рдордп рдкреНрд░рд┐рдВрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╡рд╣ рд╕рдм рд╣реИред рдФрд░ рдЬреНрдпрд╛рджрд╛рддрд░ рд╕рдордп рд╣рдордиреЗ рдереНрд░рд┐рдлреНрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реЗрдЯрдЕрдк рдФрд░ рдкрд░рд┐рдЪрд┐рдд рдкрд░ рдЦрд░реНрдЪ рдХрд┐рдпрд╛, рдФрд░ рддрдм рднреА рдЗрддрдирд╛ рдирд╣реАрдВред рдЕрдм рд╣рдо рдЕрдкрдиреА .thirft рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдирдИ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдФрд░ рддрд░реАрдХреЛрдВ рдХреЛ рдЕрдкрдиреА рд╕реЗрд╡рд╛ рдореЗрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╣рдо рдХреЗрд╡рд▓ рд╕рд░реНрд╡рд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓рд┐рдЦрддреЗ рд╣реИрдВред
рдареАрдХ рд╣реИ, рдЕрдЧрд░ рдЖрдкрдХреЛ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд▓рд┐рдЦреЗ рдЧрдП рдХреНрд▓рд╛рдЗрдВрдЯ рдпрд╛ рд╕рд░реНрд╡рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдереНрд░рд┐рдлреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдирдХреЗ рд▓рд┐рдП рдХрдХреНрд╖рд╛рдПрдВ рднреА рдЙрддреНрдкрдиреНрди рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдереНрд░рд┐рдлреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдХреИрд╕рдВрдбреНрд░рд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП .NET рдХреНрд▓рд╛рдЗрдВрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреИрд╕рдВрдбреНрд░рд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдлреЗрд╕рдмреБрдХ .NET рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рдереА :)
рдпрд╣рд╛рдБ рд╡рд╛рджрд╛ рдХрд┐рдП рдЧрдП рд╕реНрд░реЛрдд рд╣реИрдВ:
dl.dropbox.com/u/3945288/Thirft-Time-Server-.NET-Sample.zip
github.com/kmuzykov/Thirft-Time-Server-.NET-Sample
рдпрд╣рд╛рдБ рдереНрд░рд┐рдлреНрдЯ рд╡рд┐рдХреА рдХрд╛ рд▓рд┐рдВрдХ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдБрдХрд┐ .NET рдХреЗ рд▓рд┐рдП рдЬреНрдпрд╛рджрд╛ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИред