рдПрдХ рд╣рдм рдкрд░ рдЙрд▓реНрд▓реЗрдЦрдиреАрдпред рдиреЗрдЯ-рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕рд░реНрд╡рд┐рд╕рд╕реНрдЯреИрдХ рдХреЛ рдЕрд╡рд╛рдВрдЫрдиреАрдп рд░реВрдк рд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрдирдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХреЗрд╡рд▓ рдПрдХ
рд▓реЗрдЦ рдореЗрдВ , рдФрд░ рдлрд┐рд░ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдк рд╕реЗ, рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдФрд░ рдмрд╣реБрдд рд╣реА рдЕрдВрдд рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛
рд╣рд┐рд╕реНрд╕рд╛ рд╡рд╣рд╛рдБ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╡реЗрдм рд╕реЗрд╡рд╛ рдФрд░ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди, рдЬреИрд╕реЗ ASP.Net MVC / WebAPI рдпрд╛ WCF рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП .Net рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рдереЛрдХ рдорд╛рдирдХ Microsoft рд╕рдорд╛рдзрд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рджрд┐рдЦрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рдЖрдзреБрдирд┐рдХ .Net рди рдХреЗрд╡рд▓ рдЗрд╕рдХреА рдорд╛рдирдХ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд╣реИред

рдЕрдЧрд░ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ, рддреЛ рдХреГрдкрдпрд╛, рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗред
рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЗрд╕ рд╕рдореАрдХреНрд╖рд╛ рд▓реЗрдЦ рдХреЗ рд╕рд╛рде рдЗрд╕ рдЕрдВрддрд░ рдХреЛ рднрд░ рджреЗрдВрдЧреЗ, рдФрд░ рдЕрдВрдд рдореЗрдВ рд╣рдо рдЗрд╕ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рдХреБрдЫ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕реЗ рд╣рдо рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ
рдЕрдкрдиреЗ рдЕрднреНрдпрд╛рд╕ рдореЗрдВ рдЙрдкрдпреЛрдЧ
рдХрд░рддреЗ рд╣реИрдВ , рдФрд░, рд╣рдореЗрдВ рдХрд╣рдирд╛ рд╣реЛрдЧрд╛, рдмрд╣реБрдд рд╕рдВрддреБрд╖реНрдЯ рд╣реИрдВред
ServiceStack? рдирд╣реАрдВ, рдореИрдВрдиреЗ рдирд╣реАрдВ рд╕реБрдирд╛ ...
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдЗрдП рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджреЗрдВ рдХрд┐ ServiceStack рд╕реНрд╡рдпрдВ рдХреНрдпрд╛ рд╣реИред рдпрд╣ рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдФрд░ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рд╡рд┐рдХрд╕рд┐рдд рдврд╛рдВрдЪрд╛ рд╣реИ, рдЬрд┐рд╕рдиреЗ C # рдФрд░ ASP.Net рдХреА рджреБрдирд┐рдпрд╛ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рд╡реЗрд╢ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ - рд╣рд╛рдБ, рдЖрдкрдиреЗ рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рд╣реИ! - рд╕рднреА рд╕рдмрд╕реЗ рдЦрд░рд╛рдм, рд╢рд╛рдирджрд╛рд░ рдФрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд▓рд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкреНрд░рд┐рдп рд╣рд░рдЬрд╝реЗрддрд▓, рд╣рдо рдЖрдкрдХреЛ рддреБрд░рдВрдд рдЪреЗрддрд╛рд╡рдиреА рджреЗрддреЗ рд╣реИрдВ, рдХреЛрдИ рд╣реЛрд▓реАрд╡рд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЗрд╕ рдЧреБрд░реБрд╡рд╛рд░ рдХреЛ рдирд╣реАрдВ рдФрд░ рд╣рдорд╛рд░реЗ рд╕рд╛рде рдирд╣реАрдВ! рдЖрдЧреЗ рджреЗрдЦрддреЗ рд╣реБрдП, рд╣рдо рдиреЛрдЯ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╛рд╕реНрддреБ рд╡рд┐рд╡рд┐рдзрддрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдШрдЯрдХреЛрдВ рдХреЛ рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдЬреЛрдбрд╝рддреА рд╣реИрдВ, рдЬреЛ ServiceStack (рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ) рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП ASP.Net MVC (рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ) рдкрд░ рджреЛрдиреЛрдВ рдХреЛ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдлреНрд░реЗрдорд╡рд░реНрдХ рдмреАрдмреАрд╕реА рдХрдВрдкрдиреА рдХреЗ
рдзрдиреБрд╖ рдореЗрдВ рдкреИрджрд╛ рд╣реБрдЖ рдерд╛, рдЬрдмрдХрд┐
рдбреЗрдорд┐рд╕ рдмреЗрд▓реЛрдЯреНрдЯреЗ рдиреЗ рд╡рд╣рд╛рдВ рдХрд╛рдо рдХрд┐рдпрд╛ рдерд╛ред рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреА рд╢реБрд░реБрдЖрдд рдХреЛ рд╡рд░реНрд╖ 2007 рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдм рдмреАрдмреАрд╕реА, Microsoft рд╕реЗ рдорд╛рдирдХ рдПрдВрдЯрд░рдкреНрд░рд╛рдЗрдЬрд╝-рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рддреЗрдЬреА рд╕реЗ рдмрджрд▓рддреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЭрд░рдиреЗ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде рдпреБрдЧреНрдорд┐рдд, рд╕реАрдзреЗ рдЫреЗрдж рдореЗрдВ рдЧрд┐рд░ рдЧрдпрд╛, рдФрд░ "рдбреНрд░реЙрдбрд╛рдЙрди" рдлрд┐рд▓реНрдо рд╕реЗ рдирд╛рдпрдХ рдирд┐рдХрд┐рддрд╛ рдорд┐рдЧрд▓рдХреЛрд╡ рджреНрд╡рд╛рд░рд╛ рджреА рдЧрдИ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдХрд░реАрдм рд╣реИ " рдЬрд╝реБрдорд░реНрдХреА тАЭ, рд╡реНрдпрд╛рдЦреНрдпрд╛рддреНрдордХ рд╢рдмреНрджрдХреЛрд╢ * рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдмрдЬрд╛рдпред
рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдереА рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЫреЛрдЯреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП, рдпреВрдПрдордПрд▓ рд╕реЗ рдХреЛрдб рддрдХ рдПрдХ рдЪрдХреНрд░ рд╕реЗ рдЧреБрдЬрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдХрдИ рджрд┐рдиреЛрдВ рддрдХ рд▓реЗ рдЧрдпрд╛, рдкреБрд░рд╛рдиреЗ рд░рд┐рдХреЙрд░реНрдб рдФрд░ рдирдП рд▓реЛрдЧреЛрдВ рдХреЗ рдмреАрдЪ рдкреНрд░рд╛рд░реВрдкреЛрдВ рдХреА рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдмреИрд╕рд╛рдЦреА рдФрд░ рдкреНрд░рдореБрдЦ рд░рд┐рд▓реАрдЬ рдХреЗ рдмреАрдЪ рд╕рд╛рдкреНрддрд╛рд╣рд┐рдХ рдбрд╛рдЙрдирдЯрд╛рдЗрдоред
рдЯреАрдо рдиреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕рд╡рд╛рд▓ рдХрд┐рдпрд╛: рдХреНрдпрд╛ рд╕реЗрд╡рд╛ рд╕рднреА рд╕рдорд╛рди рд╣реИ? рдпрд╣ рд╕рд╡рд╛рд▓ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╣рдо рдореЗрдВ рд╕реЗ рдХрдИ рдЗрд╕рдХреЗ рдЬрд╡рд╛рдм рд╡рд╣реА рджреЗрдВрдЧреЗ, рдЕрд░реНрдерд╛рддреН:
- рдпрд╣ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдордВрдЪ рдпрд╛ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред
- рдпрд╣ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред
- рдпрд╣ рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ [рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП] рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдпрд╛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
- рдпрд╣ рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдкреНрд░рд╛рд╡рдзрд╛рди рд╣реИ, рдФрд░ рддрдХрдиреАрдХреА рднрд╛рд╖рд╛ рдмреЛрд▓рдирд╛, рдХреБрдЫ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдЬреЛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЙрдирдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХрд╛ рд╕рдВрдЧрдарди
- рдиреНрдпреВрдирддрдо рдФрд░ рдЕрдзрд┐рдХрддрдо рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде, рд╕рд░рд▓ рдФрд░ рд╕рдмрд╕реЗ рдХреБрд╢рд▓ рддрд░реАрдХреЗ рд╕реЗ, рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдЧреНрд░рд╛рд╣рдХреЛрдВ рддрдХ рдЙрдирдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреА рд╡реНрдпрд╡рд╕реНрдерд╛ рдХрд░рдирд╛
рдпрд╣ рдПрдХ рд╕реЗрд╡рд╛ рд╣реИ рдЬреЛ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╣реИред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдПрдХ рдЕрдЪреНрдЫреА рд╕реЗрд╡рд╛ рдХреЛ рдЖрдЧрд╛рдореА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдирд╛ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рди рд╣реЛред
рдЗрд╕ рдореБрджреНрджреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХреЗ рдХрд╛рд░рдг рд╕рд░реНрд╡рд┐рд╕рд╕реНрдЯреИрдХ рдХрд╛ рдЬрдиреНрдо рд╣реБрдЖ, рдЬрд┐рд╕рдиреЗ рдЯреАрдо рдХреЗ рдХреЗрд╡рд▓ рдЖрдзреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдкреВрд░реА рдЯреАрдо рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмреЗрд╣рддрд░ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреАред
рдФрд░ рдлрд┐рд░ рднреА, рд╡рд╣ рдмреЗрд╣рддрд░ рдХреНрдпрд╛ рд╣реИ?
- рдЕрдзрд┐рдХ рд╕рд╣рдЬ рдФрд░ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рдиред
- рдорд╛рдирдХ .Net рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЙрдЪреНрдЪ рдЧрддрд┐
- рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреЗ рдХреЛрдб рдХреЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдо рдкреНрд░рддреНрдпрдХреНрд╖ рд╣рд╛рдереЛрдВ рд╕реЗ рднреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
рдЕрдВрддрд┐рдо рдмрд┐рдВрджреБ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ рдПрдХ рдЖрд░рдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреЗ рдХреЛрдб рдХреЗ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рд╣рд╛рдереЛрдВ рд╕реЗ рдорд╛рдирдХ Microsoft рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ, рд╕реАрдзреЗ рд╣рд╛рде рдФрд░ рд╕рд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдФрд░ рдЕрдиреБрднрд╡ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╕рд░реНрд╡рд┐рд╕рд╕реНрдЯреИрдХ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреА рд╕рд╛рджрдЧреА рдФрд░ рддреБрд▓рдирд╛рддреНрдордХ рдкреНрд░рддрд┐рднрд╛ рдХреЗ рдХрд╛рд░рдг, рдХрдо рдХреБрд╢рд▓ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдмреЗрд╣рддрд░ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЛрдб рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдкреНрд░рддрд┐ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рднреА рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдФрд░, рд╢рд╛рдпрдж, рдХреБрдЫ рдХреЗ рд▓рд┐рдП, рдЕрдЧрд▓реЗ рдкрд▓ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рд░реНрдгрд╛рдпрдХ рд╣реЛрдЧрд╛:
ServiceStack рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдмреЙрдХреНрд╕ рдХреЗ рдареАрдХ рдмрд╛рд╣рд░ рд▓рд┐рдирдХреНрд╕ рдкрд░ рддреИрдирд╛рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ!рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╡рд┐рдВрдбреЛрдЬ рд╕рд░реНрд╡рд░ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рдВрдЧреЗ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдХреЗ рд▓рд┐рдП рдпрд╛ рдЙрд╕рд╕реЗ рднреА рдЕрдзрд┐рдХ рдорд╣рдВрдЧрд╛ рднреБрдЧрддрд╛рди рдирд╣реАрдВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдордзреНрдпрдо рдЖрдХрд╛рд░ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕рд░реНрд╡рд░ рднреА рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдбреЗрдмрд┐рдпрди рдпрд╛ рдЙрдмрдВрдЯреВ рд╕рд░реНрд╡рд░ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ
рд╣реЗрдЯреНрдЬрдиреЗрд░ рд╡реАрдкреАрдПрд╕ рдХреЗ рд▓рд┐рдП $ 30 рдкреНрд░рддрд┐ рдорд╛рд╣ ред рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП,
Hzzner рдкрд░ $ 10 рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд╕реНрддрд╛
VPS рдпрд╛
рдбрд┐рдЬрд┐рдЯрд▓ рдорд╣рд╛рд╕рд╛рдЧрд░ рдХреЗ рд▓рд┐рдП $ 5 рднреА рдЬрд╛рдПрдВрдЧреЗред
рд╣рдорд╛рд░реЗ рд╕рд╛рдЭреЗрджрд╛рд░реЛрдВ рдХреЗ рдкрд╛рд╕ рд▓рд┐рдирдХреНрд╕ рдкрд░ рд╕реЗрд╡рд╛рд╕реНрдЯреИрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдФрд░ рд╣реЛрд╕реНрдЯ рдХрд░рдиреЗ рдХрд╛ рдЕрдиреБрднрд╡ рд╣реИ рдЬреЛ nginx + FastCGI рдореЛрдиреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдЧрд░ рд╣рдо рд╕рднреА рдЗрд╕рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдЕрдЧрд░ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рдкреВрдЫрддреЗ рд╣реИрдВ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╣рдореЗрдВ рдпрд╣ рдмрддрд╛рдиреЗ рд╕реЗ рдЗрдВрдХрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ рдХрд┐ рдХреИрд╕реЗ рдпрд╣ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдХреНрдпрд╛ рдореЗрд░реЗ рдкрд╛рд╕ рдФрд░ рддрдХрдиреАрдХреА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛ рд╕рдХрддреА рд╣реИ?
рдпрд╣ рдЕрд╕рдВрднрд╡ рд╣реИред ServiceStack рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдПрдХ рдирдпрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд▓реА рдореЗрдВ рдкреВрд░реЗ ASP.Net рдХреЛ рдХреНрд░рд╢ рдХрд░рдирд╛ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рд░реВрдЯ - рдЕрд░реНрдерд╛рддреН IHttpHandler - рдЙрдиреНрд╣реЛрдВрдиреЗ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╡рд╛рд▓реА рд╕рднреА рдЪреАрдЬрд╝реЛрдВ рдХреЛ рдирд╖реНрдЯ рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рдЕрдзрд┐рдХ рд╣рд▓реНрдХреЗ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛, рдЬреЛ рдЙрди рдЬрдЧрд╣реЛрдВ рдкрд░ рдЦреБрдж рдХреЛ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рд╡реЗрдм рд╕реЗрд╡рд╛ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ред рдлреНрд░реЗрдорд╡рд░реНрдХ рдЕрдкрдиреЗ рдХреИрд╢ рдореИрдиреЗрдЬрд░, рдЗрд╕рдХреЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рджрд╛рддрд╛ рдФрд░ рд╕рддреНрд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдкрдиреЗ Redq- рдЖрдзрд╛рд░рд┐рдд MQ рдмреНрд░реЛрдХрд░ рдХреЛ рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╡реИрд╕реЗ, рдврд╛рдВрдЪреЗ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░, рд╣рдордиреЗ
рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд░реЗрдбрд┐рд╕-рдХреНрд▓рд╛рдЗрдВрдЯ рднреА рдмрдирд╛рдпрд╛, рдЬреЛ рдХрд┐ рдореЗрд░реА рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░рд╛рдп рдореЗрдВ, рдмрд╕ рднрд╡реНрдп рд╣реИ, рдФрд░ рдЗрд╕реЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрджрд░реНрднреЛрдВ рдореЗрдВ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╕реЗ рдЕрд▓рдЧ рд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдорд╛рдирдХ IOC рдХрдВрдЯреЗрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдХрд╛рдлреА рд▓реЛрдХрдкреНрд░рд┐рдп
Func рд▓рд╛рдЗрдЯрд╡реЗрдЯ рдХрдВрдЯреЗрдирд░ рдХрд╛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред рд╕рдЪ рд╣реИ, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдХрдИ рдЙрдкрд▓рдмреНрдз рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдЖрдИрдУрд╕реА рдХрдВрдЯреЗрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
ServiceStack рдХреА рдЖрдзрд╛рд░рд╢рд┐рд▓рд╛ рдбреАрдЯреАрдУ (рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕) рд╣реИ, рдЬреЛ рдлреНрд▓реИрдЯ POCO рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВред рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдкреНрд░рджрд╛рддрд╛ рдФрд░ рд╕рддреНрд░, рд╕рд╛рде рд╣реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реЗрд╡рд╛рдПрдВ, POCO рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИрдВ, рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдмреИрдХреЗрдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рд╕рддреНрд░ рд╕реАрдзреЗ рдореЗрдореЛрд░реА рдФрд░ рд░реЗрдбрд┐рд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВред рдбрд╛рдпрдирд╛рдорд┐рдЬреНрдо рдХреЗ рдкреНрд░реЗрдорд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдкреНрд░рд╛рдкреНрдд рд╕рддреНрд░ рднреА рдЙрдкрд▓рдмреНрдз рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдХреБрдЫ рд╣рдж рддрдХ рдзреАрд░реЗ-рдзреАрд░реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдПрдХ рд▓реЗрдЦ рдореЗрдВ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдЕрд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЬрд┐рдЬреНрдЮрд╛рд╕реБ рд╣реИрдмрд░реЛрд╡реНрд╕реНрдХ рдирд╛рдЧрд░рд┐рдХреЛрдВ рд╕реЗ рд░реБрдЪрд┐ рдереА, рддреЛ рд╣рдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХрдИ рд▓реЗрдЦ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рджреМрд░рд╛рди, рдкрд╛рдардХ рдХреА рднреВрдЦ рдорд┐рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝рд╛ HelloWorld рд▓рд┐рдЦреЗрдВред
рдкрд╛рдиреА рдбрд╛рд▓рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдХреЛрдб рдкрд░ рдЖрдУ!
рдЗрд╕рд▓рд┐рдП, ServiceStack рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рд╡реЗрдм рд╕реЗрд╡рд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЪрд╛рд░ рд╕рд╛рдзрд╛рд░рдг рдХрд╛рдо рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗ, рдЕрд░реНрдерд╛рддреН:
- рдбреАрдЯреАрдУ рд╕реЗрд╡рд╛ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ
- рдбреАрдЯреАрдУ рд╕реЗрд╡рд╛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдПрдВ
- рд╕реНрд╡рдпрдВ рд╕реЗрд╡рд╛ рдХреА рдПрдХ рдХрдХреНрд╖рд╛ рдмрдирд╛рдПрдВ, рдЗрд╕реЗ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ, рдФрд░ HTTP рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╣реА рдирд╛рдо рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
- рдЬреАрд╡рди рдХрд╛ рдЖрдирдВрдж рд▓реЗрдирд╛ рдФрд░ рд▓рд╛рдн рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ (рдПрдХ рдордЬрд╛рдХ ... рд╣рд╛рд▓рд╛рдБрдХрд┐, рдирд╣реАрдВ, рдордЬрд╛рдХ рдирд╣реАрдВ )
рдЪрд▓реЛ рдПрдХ рд╕рд░рд▓ рд╕реЗрд╡рд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВред
Visual Studio рдпрд╛ Xamarin Studio рдореЗрдВ рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдБред рдкрд╣рд▓реЗ рд╣рд╛рде рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдореИрдВ рджреВрд╕рд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛, рд╕реМрднрд╛рдЧреНрдп рд╕реЗ, рдореЛрдиреЛ рдХреЗ рддрд╣рдд рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ (рдФрд░ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдпрд╣ рдХрд╛рд░рдХ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рдирд┐рд░реНрдгрд╛рдпрдХ рдерд╛)ред рдФрд░ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рдЖрдИрдбреАрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЖрд╡рдЬреЗ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдЖрдкрдХреЛ рджрд┐рдЦрд╛рдПрдВрдЧреЗ рдХрд┐ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдореЛрдмрд╛рдЗрд▓ рдУрдПрд╕ рдХреЗ рд▓рд┐рдП рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рдЗрд╕ рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВред
рддреЛ, рдПрдХ ASP.Net рдкреНрд░реЛрдЬреЗрдХреНрдЯ (рдЦрд╛рд▓реА рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧ) рдмрдирд╛рдПрдБред рд╣рдо рд╕рдорд╛рдзрд╛рди SSHelloWorld, рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ SSHelloAPI рдХрд╣рддреЗ рд╣реИрдВред
рд╕рдорд╛рдзрд╛рди рдПрдХреНрд╕рдкреНрд▓реЛрд░рд░ рдореЗрдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП, рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ "Nuget Package рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░реЗрдВ" рдЪреБрдиреЗрдВред

"рдЬреЛрдбрд╝реЗрдВ" рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрд╕реЗ рдкреВрдЫрд╛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рд▓рд╛рдЗрд╕реЗрдВрд╕ рд╕рдордЭреМрддреЗ рд╕реЗ рд╕рд╣рдордд рд╣реИрдВ? рдЦреИрд░, рдХреНрдпреЛрдВрдХрд┐ рд░реВрд╕реА рдмреЛрд▓рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд┐рд╕реА рдФрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рд▓рд╛рдЗрд╕реЗрдВрд╕ рд╕рдордЭреМрддреЗ рдкрдврд╝рддреЗ рд╣реИрдВ, рд╣рдо рд╕рд╣рдордд рд╣реИрдВ, рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рд╕рд░реНрд╡рд┐рд╕рд╕реНрдЯреИрдХ рдбреАрдПрд▓рдПрд╕ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ Global.asax рдирд╣реАрдВ рд╣реИ (рдФрд░ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдпрд╣ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП), рддреЛ рдЗрд╕реЗ рдЬреЛрдбрд╝реЗрдВ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп Global.asax.cs рдХреЗ рд▓рд┐рдП рдирд┐рдореНрди рдХреЛрдб рдХреЛ рдХреЙрдкреА рдХрд░реЗрдВ:
using System; using System.Collections; using System.ComponentModel; using System.Web; using System.Web.SessionState; using ServiceStack; namespace SSHelloAPI { public class Global : System.Web.HttpApplication { public class AppHost : AppHostBase { public AppHost() : base("Hello API", typeof(HelloService).Assembly) {} public override void Configure (Funq.Container container) { } } protected void Application_Start (Object sender, EventArgs e) { new AppHost ().Init (); } } }
рдЕрдм рдХреЛрдб рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдкрд░ рдзреНрдпрд╛рди рди рджреЗрдВред рд╣рдореЗрдВ рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рд╕реНрдерд┐рдд рд╣реЛрдЧреАред
рдЖрдкрдХреЛ рд╕рдВрднрд╡рддрдГ
web.config рдлрд╝рд╛рдЗрд▓ рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдЗрд╕рдХреЗ рд╕рднреА рдХреЛрдб рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдЪрд╛рд╣рд┐рдП:
<?xml version="1.0"?> <configuration> <system.web> <httpHandlers> <add path="*" type="ServiceStack.HttpHandlerFactory, ServiceStack" verb="*"/> </httpHandlers> </system.web> <system.webServer> <validation validateIntegratedModeConfiguration="false" /> <handlers> <add path="*" name="ServiceStack.Factory" type="ServiceStack.HttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" /> </handlers> </system.webServer> </configuration>
рдареАрдХ рд╣реИ, рдЕрдВрдд рдореЗрдВ, рдПрдХ рдирдпрд╛ HelloService.cs рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реЗ рддреАрди рд╡рд░реНрдЧ рд╣реЛрдВрдЧреЗ:
using System; using ServiceStack; namespace SSHelloAPI { [Route("/hello")] [Route("/hello/{Name}")] public class HelloRequest { public string Name { get; set; } } public class HelloResponse { public string Result { get; set; } } public class HelloService : Service { public object Any(HelloRequest request) { return new HelloResponse { Result = "Hello, " + request.Name }; } } }
рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХреЛрдб рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдореЗрдВ рднреА рд╢рд░реНрдо рдЖрддреА рд╣реИред рд╣рдо рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдПрдбреНрд░реЗрд╕ рдмрд╛рд░ рдореЗрдВ, рд╣реЛрд╕реНрдЯ рдирд╛рдо рдФрд░ рдкреЛрд░реНрдЯ рдХреЗ рдмрд╛рдж "/ рд╣реЗрд▓реЛ / рд╣реИрдмрд░реВрд╕рд░" рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВред рдЕрдиреБрд░реЛрдз рд╢реАрд░реНрд╖ рд▓реЗрдЦ рджреНрд╡рд╛рд░рд╛ ServiceStack рд╣реА рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд╣рдореЗрдВ html-рдЖрд╡рд░рдг рдореЗрдВ рд╕реЗрд╡рд╛ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджрд┐рдЦрд╛рдПрдЧрд╛ред рдФрд░ рдкрд░рд┐рдгрд╛рдо рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рд╕реЗрд╡рд╛ рд╣рдорд╛рд░рд╛ рд╕реНрд╡рд╛рдЧрдд рдХреИрд╕реЗ рдХрд░рддреА рд╣реИред
рдПрдиреА рд╡рд┐рдзрд┐ рдХреЗ рдирд╛рдо рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рд╣рдордиреЗ рд╕рднреА HTTP рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рддрд░реНрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рд╣реИред
рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдкреГрд╖реНрда рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ, рдЬреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╕рдордп рдкрд╣рд▓реЗ рдЦреБрд▓рддрд╛ рд╣реИред рдЗрд╕рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рд╕реЗрд╡рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, ServiceStack рдЪрд▓рддреЗ-рдлрд┐рд░рддреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рд╣рдо рдЕрдкрдиреА рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдПрдХ RESTful рд╕реЗрд╡рд╛ рдФрд░ SOAP рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд╣рд╛рдВ, рдореЗрд░рд╛ рдорддрд▓рдм SOAP, рдкреНрд░рд┐рдп рдкрд╛рдардХ) рд╣реИред

рдмреЗрд╢рдХ, рд╕реЗрд╡рд╛ рдЙрдмрд╛рдК рд╣реИ, рд▓реЗрдХрд┐рди рд▓реЗрдЦ рдХреЛ рдЕрдзрд┐рднрд╛рд░ рдирд╣реАрдВ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рддреБрд░рдВрдд рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдЖрдкрдХреЛ SericeStack рдХрд╛ рд╕реНрд╡рд╛рдж рдорд╣рд╕реВрд╕ рдХрд░рд╛рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рдереЗ, рддреЛ рдЕрдм - рд╣рдорд╛рд░реЗ рд╕рд╛рде рдпрд╛ рдЙрд╕рдХреЗ рдмрд┐рдирд╛ - рдЖрдк рдЕрдзрд┐рдХ рд╕реНрд╡рд╛рдж рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред
рдХреИрд╕реЗ ServiceStack рдореЛрдмрд╛рдЗрд▓ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ
ServiceStack рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдФрд░ рдЕрдЪреНрдЫреА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди, Xamarin.iOS рдпрд╛ Xamarin.Android-application рдореЗрдВ рдмрдирд╛рдИ рдЧрдИ рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдВрддрд┐рдо рджреЛ рдХреЛ Xamarin рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╕рд╛рдп рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ)ред рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рд╕рд░рд▓ (рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╕рдмрд╕реЗ рд╕реБрдВрджрд░ рдирд╣реАрдВ) рдЕрдиреБрд░реЛрдз рдФрд░ рд░рд┐рд╕реНрдкрд╛рдВрд╕ рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЪреБрдирдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рд▓рд┐рдВрдХ рдХрд░рдХреЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ Nuget рд╕реЗ ServiceStack.Client рдЕрд╕реЗрдВрдмрд▓реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВред
рдЕрдЧрд▓рд╛, рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рдмрдЯрди рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреА рдШрдЯрдирд╛ рдкрд░ рдРрд╕реЗ рд╣реИрдВрдбрд▓рд░ рдХреЛ рд▓рдЯрдХрд╛рддреЗ рд╣реИрдВ:
button.TouchUpInside += (object sender, EventArgs e) => { try { var client = new JsonServiceClient("http://127.0.0.1:8080"); HelloResponse response = client.Get<HelloResponse>(new HelloRequest() { Name = "iPhone" }); resultLabel.Text = response.Result; } catch (Exception ex) { resultLabel.Text = ex.Message; } };
рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рднреА рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛?
рд╕рдВрд╕реНрдХрд░рдг 4.0 рдХреЗ рд╕рд╛рде рд╢реБрд░реВ, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдиреЗ рдПрдХ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рд░рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рд╣реИред рдареАрдХ рд╣реИ, рдХреНрдпреЛрдВ рдирд╣реАрдВ, рдЕрдЧрд░ рдпрд╣ рдмреЗрд╣рддрд░ рдмрдирд╛рддрд╛ рд╣реИ? рдврд╛рдВрдЪреЗ рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рдЕрднреА рднреА рдЦреБрд▓рд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд▓рд╛рдЗрд╕реЗрдВрд╕ рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рд╕рд╛рде рдХреЗрд╡рд▓ рдЫреЛрдЯреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдореБрдлреНрдд рдореЗрдВ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
- 10 рдСрдкрд░реЗрд╢рди (рдпрд╛рдиреА 10 рдбреАрдЯреАрдУ рдЕрдиреБрд░реЛрдз)
- рдСрд░реНрдорд▓рд╛рдЗрдЯ рдореЗрдВ 10 рдЯреЗрдмрд▓реНрд╕
- JSON, JSV рдФрд░ CSV рд╕реАрд░рд┐рдпрд▓ рдХреЗ рд╕рд╛рде 20 рдкреНрд░рдХрд╛рд░
- рд░реЗрдбрд┐рд╕ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП 20 рдкреНрд░рдХрд╛рд░
- рд░реЗрдбрд┐рд╕ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐ рдШрдВрдЯреЗ 6,000 рдЕрдиреБрд░реЛрдз
рдареАрдХ рд╣реИ, рдареАрдХ рд╣реИ, рдПрдХ рднреА рд░реЗрдбрд┐рд╕ рдирд╣реАрдВ рд╣реИ, рдСрд░рдорд▓рд╛рдЗрдЯ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЕрдиреНрдп рдУрдЖрд░рдПрдо рд╣реИрдВ, рд▓реЗрдХрд┐рди 10 рдСрдкрд░реЗрд╢рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реАрдорд╛ рд╣реИрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗред
рдЗрд╕ рдкреГрд╖реНрда рдкрд░ рд▓рд╛рдЗрд╕реЗрдВрд╕рд┐рдВрдЧ рдФрд░ рдореВрд▓реНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдЙрдкрд▓рдмреНрдз рд╣реИред
рдлрд┐рд▓рд╣рд╛рд▓, рд╣рдо рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ 3 рдЬреА рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдмреАрдПрд╕рдбреА рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рдЙрдкрд▓рдмреНрдз рд╣реИ, рдФрд░ рд╣рдо рдХреЗрд╡рд▓ 4 рдХреЗ рд╕рдВрдХреНрд░рдордг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк "рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдкрдХреНрд╖" рд╕реЗ рд╕рдВрд▓рдЧреНрди рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рддреАрд╕рд░реА рд╢рд╛рдЦрд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдХрд╛рдлреА рдкрд░рд┐рдкрдХреНрд╡ рдФрд░ рд╕реНрдерд┐рд░ рд╣реИред
рд╕рдВрджрд░реНрдн рдФрд░ рдлреБрдЯрдиреЛрдЯреНрд╕
PROSAK (Dahl рдХрд╛ рд╡реНрдпрд╛рдЦреНрдпрд╛рддреНрдордХ рд╢рдмреНрджрдХреЛрд╢) mред Tverред рдХрддрд╛рдИ рдорд┐рд▓; рдореБрдбрд╝, рд░рд╕реНрд╕реА, рдЧрд╛рдБрда рд╡рд╛рд▓реА рд░рд╕реНрд╕реА рдорд┐рд▓, рд░рд╕реНрд╕реА рдЦреАрдВрдЪред || * рдПрдХ рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдЬрд╣рд╛рдВ рдЖрдк рдирд╣реАрдВ рдЬрд╛рдирддреЗ рдХрд┐ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред рд╡рд╣ рдЭрдВрдЭрдЯ рдореЗрдВ рдкрдбрд╝ рдЧрдпрд╛, рд╡рд╣ рдЭрдВрдЭрдЯ рдореЗрдВ рдмреИрдард╛ред рдкреНрд░реЛрд╕реИрдХ (рдШреБрдорд╛ рд╕реЗ?), рдХрддрд╛рдИ рдХреЗ рдкрд╣рд┐рдпреЗ рд╕реЗ рд╕реНрд▓реАрд╡ рддрдХ рдХрд╛ рд╕реНрдерд╛рди, рдЬрд╣рд╛рдВ рдЦреБрд░рдкреА рд╕реЗ рд╡рд╛рд░ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдШреВрдорддрд╛ рд╣реИ, рдПрдХ рд░рд┐рдлрд╝ рдЙрддрд░рддрд╛ рд╣реИ; рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдХрдкрдбрд╝реЛрдВ рдХреЗ рдЕрдВрдд рдореЗрдВ, рдЕрдкрдиреЗ рдмрд╛рд▓реЛрдВ рдХреЗ рд╕рд╛рде, рдЖрдк рдЗрд╕реЗ рдореЛрдбрд╝реЗрдВрдЧреЗ, рдФрд░ рдЖрдк рдмрд╛рд╣рд░ рдирд╣реАрдВ рдирд┐рдХрд▓реЗрдВрдЧреЗ; рдЗрд╕ рдХрд╣рд╛рд╡рдд рд╕реЗред
рд▓реЗрдХрд┐рди рдЧрдВрднреАрд░рддрд╛ рд╕реЗ, рдпрд╣рд╛рдБ рд╡реЗ рд╣реИрдВ:
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ
servicestack.netрд╡рд┐рдХреА
github.com/ServiceStack/ServiceStack/wikiрд╕рд░реНрд╡рд┐рд╕рд╕реНрдЯреИрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдорд┐рд╕ рдмреЗрд▓реЙрдЯ рдкреНрд░рд╕реНрддреБрддрд┐ рд╕реНрд▓рд╛рдЗрдб рд╢реЛ
www.slideshare.net/newmovieрдХрд╛рд░реНрдпрд╢реАрд▓ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг (рдХреЛрдб рдЦреБрд▓рд╛ рд╣реИ рдФрд░ рдЬреАрдердм рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ)
рдПрдирд╛рд▓реЙрдЧ рдЗрдордЧреБрд░
imgur.servicestack.netRestMovies
mono.servicestack.net/ServiceStack.MovieRestрдПрдирд╛рд▓реЙрдЧ рд╕реНрдЯреИрдХрдСрд╡рд░рдлреНрд▓реЛ
mono.servicestack.net/RedisStackOverflowрдФрд░ рдХрдИ рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг
рдЗрд╕ рдкреГрд╖реНрда рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рдФрд░
рдЙрдирдХреЗ рд╕реНрд░реЛрдд рдЬреАрдердм рдкрд░ ред
рдФрд░ рдЕрдЧрд░ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдкреНрд░рд┐рдп рдкрд╛рдардХ, рдФрд░ рдЖрдк рдФрд░ рдЕрдзрд┐рдХ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕реЗ рдХрд╣рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо, рд╣рдорд╛рд░реЗ рд╕рдВрдпреБрдХреНрдд рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рд╕рд╛рде, рдЦреБрд╢реА рд╕реЗ рд╡рд┐рд╖рдп рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдФрд░ рдЦреБрд▓рд╛рд╕рд╛ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВрдЧреЗред