
рд╢реБрдн рджреЛрдкрд╣рд░
рд╣рдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдФрд░ рдЖрднрд╛рд╕реА рджреЛрдиреЛрдВ рдореЗрдВ, рдХреБрд▓ рд╡реИрд╢реНрд╡реАрдХрд░рдг рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВред рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рд╣рдо рдПрдХ рд╣реА рдбреЗрдЯрд╛, рдПрдХ рд╣реА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдПрдХ рд╣реА рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рд╕рдордп рдореЗрдВ рд╕рдм рдХреБрдЫ рдФрд░ рд╕рдм рдХреБрдЫ рдХрд╛ рдРрд╕рд╛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди рдмрд╛рджрд▓реЛрдВ рдХреА рдорджрдж рд╕реЗ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреА, рдЕрд░реНрдерд╛рддреН, рдбреЗрдЯрд╛ рдФрд░ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЗ рд▓рд┐рдП рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдХреНрд▓рд╛рдЙрдб рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рдВрдбреЛрдЬ 8 рдПрдкреНрд▓рд┐рдХреЗрд╢рди (WinRT) рдХреЛ рдкрд╛рд░ рдХрд░рдирд╛ред
рдкреГрд╖реНрдарднреВрдорд┐
рддреЛ, рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╡рд┐рдВрдбреЛрдЬ 8 рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд╡реЗрджрди рд╣реИ (рдЗрд╕реЗ рдХреБрдЫ рдкрд╛рда рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗрд╡рд╛ рд╣реЛ), рдЬреЛ:
1) рдпрд╣ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдиреНрдпреВрдирддрдо рдЬрд╛рдирдХрд╛рд░реА (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╢реАрд░реНрд╖рдХ рдпрд╛ рдирд┐рд░реНрдорд╛рдг рдХреА рддрд╛рд░реАрдЦ) рдХреЗ рд╕рд╛рде рд░рд┐рдХреЙрд░реНрдб рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕реЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХрд╣рддреЗ рд╣реИрдВред
2) рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рддрддреНрд╡ рдХреЗ рдкрд╛рд╕ рдЬрд╛рдиреЗ рдкрд░ рд░рд┐рдХреЙрд░реНрдб (рд╕рд╛рдордЧреНрд░реА) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА рджрд┐рдЦрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕реЗ рдбреЗрдЯрд╛ рдХрд╣реЛред
3) рдЗрд╕реЗ рд╡рд┐рдВрдбреЛрдЬ 8 рдкрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рдбреЗрдЯрд╛ рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рдШрд░ рдкрд░ рдПрдХ рд░рд┐рдХреЙрд░реНрдб рдмрдирд╛рдпрд╛, рдХрд╛рдо рдкрд░ рдЗрд╕реЗ рджреЗрдЦрд╛)ред
рд╕рдмрд╕реЗ рд╕рд╣реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЬреЛ рдореБрдЭреЗ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ рд╡рд╣ рд╣реИ рдбреЗрдЯрд╛ рдФрд░ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ред рдпрд╣ рд╣рдореЗрдВ рд╕реВрдЪреА рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджреА рд╕реЗ рдЫреЛрдЯреЗ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдиреБрд░реЛрдз рдкрд░ "рднрд╛рд░реА" рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджреМрд░рд╛рди, рд╣рдо рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдФрд░ Windows Azure рдмреВрдБрдж рд╕рдВрдЧреНрд░рд╣рдг рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Windows Azure рдореЛрдмрд╛рдЗрд▓ рд╕реЗрд╡рд╛рдПрдБ рдкреЗрд╢ рдХрд░реЗрдВрдЧреЗред рдЕрд╣реЗрдб рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкрд╛рда рдФрд░ рдЪрд┐рддреНрд░ рд╣реИрдВред
рдЪрд░рдг 1. рдХреНрд▓рд╛рдЙрдб рд╕реНрдЯреЛрд░реЗрдЬ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВ
Windows Azure Blob Storage рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реЗ рдФрд░ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд░реВрдк рд╕реЗ WCF рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдФрд░ рдкрд░рдд рдкреЗрд╢ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ рдЬреЛ рдореЛрдмрд╛рдЗрд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕реЗ рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рдФрд░ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдЧреАред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдЧрд╛рдЗрдб рдХреЗ рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ рдХрдИ рдЪрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗред
рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рд╕рд░реНрд╡рд┐рд╕реЗрдЬрд╝ рдХреА рд╣рдореЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдореЗрдВ Windows Azure - Cloud Service рдФрд░ Storage рдореЗрдВ рджреЛ рд╕реЗрд╡рд╛рдПрдБ рдмрдирд╛рдХрд░ рдХреНрд▓рд╛рдЙрдб рд╡рд╛рддрд╛рд╡рд░рдг рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╣рдо
Windows Azure рдкреНрд░рдмрдВрдзрди рдкреЛрд░реНрдЯрд▓ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ ред рдкреГрд╖реНрда рдХреЗ рдирд┐рдЪрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдПрдХ рдкреНрд▓рд╕ рдХреЗ рд╕рд╛рде рдПрдХ рдмрдбрд╝рд╛ рдмрдЯрди рд╣реИред рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдкрд░, рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЪрдпрди рдЦреБрд▓ рдЬрд╛рдПрдЧрд╛ред рд╣рдореЗрдВ
рдбреЗрдЯрд╛ рд╕реЗрд╡рд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
-> рднрдВрдбрд╛рд░рдг :

рд╣рдо рдирдИ рд╕реЗрд╡рд╛ рдХреЗ рдХрд┐рд╕реА рднреА рдирд╛рдо рдХреЛ рджрд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рддрдм рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ рдЬрдм рддрдХ рд╕реЗрд╡рд╛ рдСрдирд▓рд╛рдЗрди рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рди рдХрд░ рд▓реЗред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдЕрдкрдиреЗ рд╕реНрдЯреЛрд░реЗрдЬ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреА рдЖрдВрдЦреЛрдВ рдФрд░ рдорд╛рдЙрд╕ рдХреЗ рд╕рд╛рде "рдЖрдИрдЬ рдХреАрдЬ" рдмрдЯрди рдХреЛ рдмреЛрд░реНрдб рдЖрдИ рдЖрдЗрдХрди рдХреЗ рд╕рд╛рде рджреЗрдЦрддреЗ рд╣реИрдВред рд╣рдо рдЙрд╕ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╣рдо рдЕрдкрдиреЗ рд╕рд╛рдордиреЗ рддреАрди рдлрд╝реАрд▓реНрдб рджреЗрдЦрддреЗ рд╣реИрдВред рдкрд╣рд▓реЗ рдореЗрдВ рдЗрд╕ рд╕реЗрд╡рд╛ рдХрд╛ рдирд╛рдо рд╣реЛрдЧрд╛, рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдЗрд╕реЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рд╕реМрдВрдкрд╛ рдерд╛, рдФрд░ рджреВрд╕рд░рд╛ рдФрд░ рддреАрд╕рд░рд╛ рдПрдХреНрд╕реЗрд╕ рдПрдХреНрд╕реЗрд╕ рд╕реНрдЯреЛрд░ рдХрд░реЗрдЧрд╛ред рдЙрдирдореЗрдВ рд╕реЗ рдкрд╣рд▓рд╛ рдпрд╛рдж рд░рдЦреЗрдВ, рдпрд╣ рдЬрд▓реНрдж рд╣реА рд╣рдорд╛рд░реЗ рдХрд╛рдо рдЖрдПрдЧрд╛ред
рдПрдХ WCF рд╕реЗрд╡рд╛ рдмрдирд╛рдирд╛
WCF рд╕реЗрд╡рд╛ рдФрд░ Windows Azure рдореЗрдВ рд╕рдВрдмрдВрдзрд┐рдд рд╕реЗрд╡рд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо Visual Studio 2012 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдореИрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдВрддрд┐рдо рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рд╡реЗрдм рд╕рдВрд╕реНрдХрд░рдг рдореБрдлреНрдд рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реЛрдЧрд╛ред
рдЗрд╕рд▓рд┐рдП, рд╕реНрдЯреВрдбрд┐рдпреЛ рдЦреЛрд▓реЗрдВ рдФрд░ рдХреНрд▓рд╛рдЙрдб рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ:

рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдВрдбреЛ рдореЗрдВ, рд╣рдореЗрдВ рдЙрди рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдо WCF рд╕реЗрд╡рд╛ рд╡реЗрдм рд░реЛрд▓ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВред рдЗрд╕реЗ рдЪреБрдиреЗрдВ рдФрд░ рдмрдирд╛рдП рдЧрдП рд▓реЛрдЧреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ (рдирд╛рдо рдмрджрд▓рдирд╛ рди рднреВрд▓реЗрдВ):

рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ, рдХреБрдЫ рд╡рд┐рдЪрд╛рд░-рд╡рд┐рдорд░реНрд╢ рдХреЗ рдмрд╛рдж, рд╣рдорд╛рд░реЗ рд▓рд┐рдП рджреЛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдБ рдмрдирд╛рдПрдВрдЧреЗ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ WCF рд╕реЗрд╡рд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реЛрдЧреА, рдФрд░ рджреВрд╕рд░реА Windows Azure рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╣реИред рдЪрд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдереЛрдбрд╝рд╛ рдЯреНрд╡рд┐рдХ рдХрд░рддреЗ рд╣реИрдВред
рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рдХреЛ рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛ рдпрд╣ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рдХреНрд▓рд╛рдЙрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рднреА рд╕рдордЭреЗрдВ рдХрд┐ рд╣рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИред рдЙрд╕реЗ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрд▓рд╛рдЙрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ рд░рд╛рдЗрдЯ-рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ рдФрд░ рдкрдмреНрд▓рд┐рд╢ рдореЗрдиреВ рдЖрдЗрдЯрдо рдЪреБрдиреЗрдВ:

рдпрджрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдХреБрдЫ рднреА рдкреНрд░рдХрд╛рд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ WindowsAzureMSDN рдХреЗ рдорд╛рди рдХреЗ рдмрдЬрд╛рдп рдЖрдк рдЦрд╛рд▓реА рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдореЛрдЯреА рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдмрд╕
рд▓рд┐рдВрдХ рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░реЗрдВ , рдкреНрд░рдХрд╛рд╢рди рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ Visual Studio рдореЗрдВ рдЖрдпрд╛рдд рдмрдЯрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдпрд╛рдд рдХрд░реЗрдВред рдпрд╣ рдЖрдкрдХреЛ IDE рд╕реЗ рд╕реАрдзреЗ рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛рдУрдВ рдкрд░ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ VS2012 рд╕реЗ рдХреНрд▓рд╛рдЙрдб рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЕрдЧрд▓реЗ рдЪрд░рдг рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд╣рд╛рдВ рд╣рдо рдЕрдкрдиреА WCF рд╕реЗрд╡рд╛ рдХреА рдореЗрдЬрдмрд╛рдиреА рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛ рдмрдирд╛рдПрдВрдЧреЗред рд╕рд╛рдорд╛рдиреНрдп рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдЯреИрдм рдкрд░,
рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛ -> рдирдпрд╛ рдмрдирд╛рдПрдВ рдФрд░ рдЙрдиреНрдирдд рд╕реЗрдЯрд┐рдВрдЧ рдЯреИрдм рдкрд░, рдореМрдЬреВрджрд╛ рд╕рдВрдЧреНрд░рд╣рдг рдЦрд╛рддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ (рдпрд╣ рд╕реВрдЪреА рдореЗрдВ рдЪрдпрди рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдкрд▓рдмреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП)ред рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛ рдФрд░ рд╕рдВрдЧреНрд░рд╣рдг рдЦрд╛рддреЗ рджреЛрдиреЛрдВ рдХреЛ рдПрдХ рд╣реА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд░рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:


рдЗрди рдЪрд░рдгреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдореЗрдВ рдмрд╕ рдкреНрд░рдХрд╛рд╢рд┐рдд рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдФрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рд▓реАрдХ рд╣реЛ рдЬрд╛рдПрдЧреАред
рдЪрд░рдг 2. рднрдВрдбрд╛рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рдХреА рд╡реЗрдм.config рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рдХрджрдо рд╣реИред рд▓рд╛рдЗрди рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
DefaultEndpointsProtocol = https; AccountName = service_name; AccountKey = that_the_storage_key_of_StorageрдХреНрд▓рд╛рдЙрдб рд╕реНрдЯреЛрд░реЗрдЬ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ: REST API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдФрд░ .NET рд░реИрдкрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдХреЗ рд░реВрдк рдореЗрдВ рджреВрд╕рд░реЗ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╡реНрдпрд░реНрде рдирд╣реАрдВ рдерд╛ рдХрд┐ рд╣рдордиреЗ рдЕрдкрдиреА рд╕реЗрд╡рд╛ рдмрдирд╛рдИред
рддреЛ, рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЕрдкрдиреЗ NuGet рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ Windows Azure Storage рдкреИрдХреЗрдЬ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:

рдмреВрдБрдж рдХрдВрдЯреЗрдирд░реЛрдВ рдХрд╛ рдХрдиреЗрдХреНрд╢рди рдФрд░ рдкреНрд░рдмрдВрдзрди рдЧреНрд░рд╛рд╣рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
using Microsoft.WindowsAzure.Storage; using Microsoft.WindowsAzure.Storage.Blob; CloudStorageAccount storageAccount = CloudStorageAccount.Parse(_connectionString); _blobClient = storageAccount.CreateCloudBlobClient();
рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдХрд╛ рдХрд╛рдо рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ:
// CloudBlobContainer container = BlobClient.GetContainerReference(ContainerName); // , container.CreateIfNotExists(); // "-<id >" CloudBlockBlob blockBlob = container.GetBlockBlobReference(BlobNamePrefix + data.Id); // var serializer = new XmlSerializer(typeof(CompositeType)); using (var s = new MemoryStream()) { serializer.Serialize(s, data); s.Seek(0, SeekOrigin.Begin); // blob blockBlob.UploadFromStream(s); }
рдЗрд╕реА рддрд░рд╣, рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
// CloudBlobContainer container = BlobClient.GetContainerReference(ContainerName); // - null if (!container.Exists()) return null; // var blockBlob = container.GetBlockBlobReference(BlobNamePrefix + id); if (!blockBlob.Exists()) return null; // var serializer = new XmlSerializer(typeof(CompositeType)); CompositeType result = null; using (var s = new MemoryStream()) { // blockBlob.DownloadToStream(s); s.Seek(0, SeekOrigin.Begin); result = serializer.Deserialize(s) as CompositeType; } return result;
рдЙрдкрд░реЛрдХреНрдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдПрдХ рдЖрд╡рд░рдг рд╡рд░реНрдЧ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ WCF рд╕реЗрд╡рд╛ рдореЗрдВ рд╕реНрд╡рдпрдВ рджреЛ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдЕрдиреБрдмрдВрдз рд╣реИ:
[ServiceContract] public interface IBlobService { [OperationContract] CompositeType GetData(int value); [OperationContract] void PutData(CompositeType data); }
!!! рдпрд╣рд╛рдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг, рд▓реЗрдХрд┐рди рдмрд┐рд▓реНрдХреБрд▓ рдЧреИрд░-рд╕реНрдкрд╖реНрдЯ рдмрд╛рдд рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдмреВрдБрдж рдХрдВрдЯреЗрдирд░реЛрдВ рдФрд░ рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рдирд╛рдо рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рдпрд╣реА рд╣реИ, рдирд╛рдо
BlobContainer рдПрдХ рддреНрд░реБрдЯрд┐ рдкреИрджрд╛ рдХрд░реЗрдЧрд╛ рдЬрдм рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдФрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛ рдПрдХ
рдмреВрдБрдж-рдХрдВрдЯреЗрдирд░ рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╣рдордиреЗ рд╕реЗрд╡рд╛ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдХреНрд▓рд╛рдЙрдб рдкрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣
рдЖрдкрдХреЗ_рд╕рд░реНрд╡рд┐рд╕_рдирд╛рдо.рдХреНрд▓рд╛рдЙрдб.рдиреЗрдЯ / рдмреНрд▓реВрдмрд╕ рд╕рд░реНрд╡рд┐рд╕.рд╕реБрдмрд▓реЗ рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реЛрдЧрд╛ред
рдЪрд░рдг 3. рдореЛрдмрд╛рдЗрд▓ рд╕реЗрд╡рд╛рдПрдБ
рдкрд┐рдЫрд▓реЗ рджреЛ рдЪрд░рдгреЛрдВ рдХреЛ "рдбреЗрдЯрд╛" рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛ рдмрдирд╛рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛ рд╣рдореЗрд╢рд╛ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдорд╛рдВрдЧ рдкрд░ред рдЕрдм "рдореЗрдЯрд╛рдбреЗрдЯрд╛" рдХреЛ рд╕рдВрдЪрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо Windows Azure - рдореЛрдмрд╛рдЗрд▓ рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рд╣рд╛рд▓ рдХреЗ рдирдП рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдПрдВрдЧреЗред
рдПрдХ рдирдИ рдореЛрдмрд╛рдЗрд▓ рд╕реЗрд╡рд╛ рдмрдирд╛рдирд╛ рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдХреА рдЕрдиреНрдп рд╕реЗрд╡рд╛рдУрдВ рдХреА рддрд░рд╣ рдЖрд╕рд╛рди рд╣реИред рдлрд┐рд░ рд╕реЗ рд╣рдо
рдкреНрд░рдмрдВрдзрди рдкреЛрд░реНрдЯрд▓ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ , рдЬрд╣рд╛рдБ рдирд┐рд░реНрдорд╛рдг рдореЗрдиреВ рдореЗрдВ рд╣рдо
COMPUTE рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ
-> рдореЛрдмрд╛рдЗрд▓ рд╕реЗрд╡рд╛ рдФрд░ рд╣рдо рдЕрдкрдиреЗ рд╕рд╛рдордиреЗ рдПрдХ рдЬрд╛рджреВрдЧрд░ рджреЗрдЦрддреЗ рд╣реИрдВ:

рд╣рдо рдЗрд╕реЗ рднрд╡рд┐рд╖реНрдп рдХреА рд╕реЗрд╡рд╛ рдХрд╛ рдирд╛рдо рдмрддрд╛рддреЗ рд╣реИрдВ, рд╕реНрдерд╛рди рдХреНрд╖реЗрддреНрд░ (рдХрд╣реАрдВ рдПрдХ рд╕реНрдерд╛рди рдкрд░ рд╕реНрдерд┐рдд рд╣реЛрдирд╛ рди рднреВрд▓реЗрдВ), рд╕рдВрдЧреНрд░рд╣рдг рдЗрдВрдЧрд┐рдд рдХрд░реЗрдВ, рдЬрд╣рд╛рдВ рд╣рдорд╛рд░рд╛ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдЖрдк рдореМрдЬреВрджрд╛ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдПрдХ рдирдпрд╛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ) рдФрд░ рд╡рд┐рдЬрд╝рд╛рд░реНрдб рдХреЛ рдкреВрд░рд╛ рдХрд░реЗрдВред
рдПрдХ рдмрд╛рд░ рд╕реЗрд╡рд╛ рдмрди рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдмрд┐рдЬрд▓реА рдХреЗ рд╕рд╛рде рдПрдХ рдХреНрд▓рд╛рдЙрдб рдЖрдЗрдХрди рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдЗрд╕рдХреЗ рдкреГрд╖реНрда рдкрд░ рдЬрд╛рдПрдВ (рдореБрдЭреЗ рдЗрд╕рдХрд╛ рдирд╛рдо рдирд╣реАрдВ рдкрддрд╛)ред рдЗрд╕ рдкреЗрдЬ рдкрд░ рджреЛ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ -
рдПрдХ рдирдпрд╛ рд╡рд┐рдВрдбреЛрдЬ рд╕реНрдЯреЛрд░ рдРрдк рдмрдирд╛рдПрдВ рдФрд░
рдПрдХ рдореМрдЬреВрджрд╛ рд╡рд┐рдВрдбреЛрдЬ рд╕реНрдЯреЛрд░ рдРрдк рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ ред рдкрд╣рд▓рд╛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдореЛрдмрд╛рдЗрд▓ рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рдФрд░ рджреВрд╕рд░рд╛ рдмрд╕ рдПрдХ рдХреЛрдб рдХрд╛ рдЯреБрдХрдбрд╝рд╛ рджреЗрдЧрд╛ рдЬрд┐рд╕реЗ рдореМрдЬреВрджрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдПрдореНрдмреЗрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ рдЕрдм рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛ рдХрд┐ рдЖрдк рдХреМрди рд╕рд╛ рд╡рд┐рдХрд▓реНрдк рдЪреБрдирддреЗ рд╣реИрдВред рдореИрдВ рджреВрд╕рд░реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдФрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реВрдВред
рдЗрд╕ рдмреАрдЪ, рд╣рдордиреЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдЖрдЗрдП рдореЛрдмрд╛рдЗрд▓ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд░реЗрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд╣рд▓реЗ рдбреЗрдЯрд╛ рдЕрдиреБрднрд╛рдЧ (рд╢реАрд░реНрд╖ рдореЗрдиреВ рдореЗрдВ) рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд░рд┐рдХреЙрд░реНрдб рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рддрд╛рд▓рд┐рдХрд╛ рдЬреЛрдбрд╝реЗрдВред рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреА рдкрд╕рдВрдж рд╕реЗ рдХреБрдЫ рднреА рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдореЗрд░реЗ рдкрд╛рд╕ TestItem рд╣реИ:

рдпрд╣ рддрд╛рд▓рд┐рдХрд╛ рдмрд╛рдж рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬ 8 рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рджрд░реНрдЬ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреА рдореЗрдЬрдмрд╛рдиреА рдХрд░реЗрдЧреАред
рдЪрд░рдг 4. рд╡рд┐рдВрдбреЛрдЬ 8
рдпрд╣ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдХрд┐ рдпрд╣ рд╕рдм рдХреНрдпрд╛ рдерд╛ред рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 2012 рдХреЗ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рд╡рд┐рдВрдбреЛрдЬ 8 (WinRT) рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореБрдлреНрдд рдореЗрдВ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЬреИрд╕реЗ рдХрд┐ рд╣рдо WCF рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рдереЗ, рд▓реЗрдХрд┐рди рдЕрдм Win8 рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП)ред
рдлрд╝рд╛рдЗрд▓ -> рдирдИ рдкрд░рд┐рдпреЛрдЬрдирд╛ -> рд╡рд┐рдВрдбреЛрдЬ рд╕реНрдЯреЛрд░:

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓рд┐рдВрдХ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдк рдореЛрдмрд╛рдЗрд▓ рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рд▓рд╛рдн рдЙрдард╛ рд╕рдХреЗрдВред рдпрджрд┐ рдЖрдкрдиреЗ рджреЗрдЦрд╛ рд╣реИ, рддреЛ рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ, рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдиреЗ рд╣рдореЗрдВ
рдореЛрдмрд╛рдЗрд▓ рд╕реЗрд╡рд╛ рдПрд╕рдбреАрдХреЗ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдкреЗрд╢рдХрд╢ рдХреА рдереАред рдпрд╣ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд╕рд╛рде рд╣рдо рдореЛрдмрд╛рдЗрд▓ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЙрдб рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдВрдЧреЗред
рдПрд╕рдбреАрдХреЗ рд╕реНрдерд╛рдкрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдорд╛рдирдХ
рд╕рдВрджрд░реНрдн рд╕рдВрджрд░реНрдн рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:

рдлрд┐рд░ рд╣рдо рдЕрдкрдиреА WCF рд╕реЗрд╡рд╛ рд╕реЗ рдПрдХ рд▓рд┐рдВрдХ рднреА рдЬреЛрдбрд╝реЗрдВрдЧреЗред рдпрд╣ рдорд╛рдирдХ
рдЬреЛрдбрд╝реЗрдВ рд╕реЗрд╡рд╛ рд╕рдВрджрд░реНрдн рд╕рдВрд╡рд╛рдж рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднреА рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

рд╕реЗрд╡рд╛ рд╕рдВрджрд░реНрдн рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЖрд╡рд░рдг рд╡рд░реНрдЧ рдмрдирд╛рдПрдЧрд╛, рдЬреЛ рд╕реЗрд╡рд╛ рдЕрдиреБрдмрдВрдз рдХреЗ рд╕рд╛рде рдПрдХ рдирд┐рдпрдорд┐рдд рд╡рд░реНрдЧ рдХреА рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрддреЗ рдкрд░ рджреВрд░рд╕реНрде WCF рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ред
рдФрд░ рдЕрдВрдд рдореЗрдВ, рд╣рдо рдореЛрдмрд╛рдЗрд▓ рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЬреЛрдбрд╝реЗрдВрдЧреЗ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рдХрд╣рд╛ рдерд╛, рд╡рд┐рдВрдбреЛрдЬ рдПрдЬрд╝реНрдпреЛрд░ рдореЗрдВ рдХреНрд▓рд╛рдЙрдб рдФрд░ рд▓рд╛рдЗрдЯрдирд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдкреГрд╖реНрда рдкрд░ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
public static MobileServiceClient MobileService = new MobileServiceClient( "https://***.azure-mobile.net/", "secret_key");
рдореИрдВрдиреЗ рдЗрд╕ рдлрд╝реАрд▓реНрдб рдХреЛ App.xaml рдкреГрд╖реНрда рдкрд░ рдЬреЛрдбрд╝рд╛ рддрд╛рдХрд┐ рдЖрд╡реЗрджрди рдореЗрдВ рдХрд╣реАрдВ рд╕реЗ рднреА рдореЛрдмрд╛рдЗрд▓ рд╕реЗрд╡рд╛рдУрдВ рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛред
рдЪрд░рдг 5. рдпрд╣ рд╕рдм рдПрдХ рд╕рд╛рде рд░рдЦрдирд╛
рд╕рднреА рд░рд╛рд╕реНрддреЛрдВ рдХреЛ рдПрдХ рдмрд┐рдВрджреБ рдкрд░ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рд╣реИ рдХрд┐ рдЬрдм рдЖрдк рдПрдХ рдирдпрд╛ рд░рд┐рдХреЙрд░реНрдб рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ Azure Blob Storage рдФрд░ Mobile Services рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред
private async Task PutDataTestWCF(CompositeType data) { // WCF var cli = await Task.Run(() => new BlobServiceClient(new BasicHttpBinding(), new EndpointAddress(CloudServiceEndpoint))); // () await cli.PutDataAsync(data); // await cli.CloseAsync(); // var table = App.MobileService.GetTable<TestItem>(); // var list = await table.Select(x => x.Id == data.Id).ToListAsync(); // , , - if (list != null && list.Count > 0) await table.UpdateAsync(new TestItem() {Id = data.Id, Text = data.Text}); else await table.InsertAsync(new TestItem() {Text = data.Text}); }
рдпрд╣рд╛рдВ рдпрд╣ рдХрдИ рдЪреАрдЬреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╕рднреА рддрд░реАрдХреЗ рдЬреЛ рдХрд┐рд╕реА рддрд░рд╣ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╣реИрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ WCF рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рдХреНрд▓рд╛рд╕, рдЬреЛ рдХрд┐ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬреЗрдирд░реЗрдЯ рдХреА рдЧрдИ рдереА, рдореЗрдВ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдореЗрдердбреНрд╕ (PutDataAsync) рднреА рд╣реИрдВред рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЕрдзрд┐рдХ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдП рдмрд┐рдирд╛, рдЬрдмрдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рджреЛрдиреЛрдВ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рд░рд▓ рдФрд░ рдкрд╛рд░рджрд░реНрд╢реА рд╣реЛ рдЧрдпрд╛ рд╣реИред WCF рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдореЛрдмрд╛рдЗрд▓ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реИ, рджреЛрдиреЛрдВ .Net рдХреЛрдб рдХреЛ рд╕рд░рд▓ рдХреЙрд▓ рдХреА рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ, рд╕рднреА рд╡рд┐рд╡рд░рдг "рдХрд╣реАрдВ рдмрд╛рд╣рд░ рд╣реИред" рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдХреЛрдИ рд╕рд╛рд░ рдбреЗрдЯрд╛ рдПрдХреНрд╕реЗрд╕ рд▓реЗрдпрд░ рдирд╣реАрдВ рд▓рд┐рдЦреА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рднреНрд░рдорд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╕рдм рдХреБрдЫ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рдиреА рд╕реЗ рдирдХрд▓реА рдкреНрд▓рдЧ-рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдирд┐рд╖реНрдХрд░реНрд╖
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдпрд╣ рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ 8 рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рдХреИрд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдирдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреНрд▓рд╛рдЙрдб рд╕реНрдЯреЛрд░реЗрдЬ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдХреИрд╕реЗ рдПрдореНрдмреЗрдб рдХрд░рдирд╛ рд╣реИред рдореИрдВрдиреЗ рдЬрд╛рдирдмреВрдЭрдХрд░ рдЗрддрдиреЗ рдХреЛрдб рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рджрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рд▓реЗрдЦ рдмрдбрд╝рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдФрд░, рд╕рдВрднрд╡рддрдГ, рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдиреАрдЪреЗ рдореИрдВ рдПрдХ рдХреЛрдб рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╕рдВрд▓рдЧреНрди рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рд╕рдВрдЧреНрд░рд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВрдЗрд╕рдореЗрдВ, рдореИрдВрдиреЗ рдЕрдкрдиреА рд╕реЗрд╡рд╛ рдХреЗ рд╕рднреА рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ *** рдпрд╛ **** рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдФрд░ рдХрд╣рд╛рдБ рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдХрд░рдирд╛ рд╣реИ рддрд╛рдХрд┐ рд╕рдм рдХреБрдЫ рд╣рдЯ рдЬрд╛рдПред
рд▓реЗрдЦ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдЖрд╡реЗрджрди рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
-
рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдмреВрдБрдж рд╕рдВрдЧреНрд░рд╣рдг рдЧрд╛рдЗрдб-
рдореЛрдмрд╛рдЗрд▓ рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЧрд╛рдЗрдб-
рдЧреВрдЧрд▓ ,
рдмрд┐рдВрдЧ ,
рдпреИрдВрдбреЗрдХреНрд╕- рдЦреБрдж рдХреЗ рд╡рд┐рдЪрд╛рд░ рдФрд░ рдЕрдиреБрдорд╛рди
PS рдЙрджрд╛рд╕реАрди рдирд╛рдмрд╛рд▓рд┐рдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ рдЕрдиреБрд░реЛрдз - рдХреГрдкрдпрд╛ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдпрд╛ рдкреАрдПрдо рдореЗрдВ рдЕрдкрдиреЗ рдордВрддреНрд░рд┐рдпреЛрдВ рдХреЗ рддрд░реНрдХ рдХреЛ рд▓рд┐рдЦреЗрдВред рднрд╡рд┐рд╖реНрдп рдХреЗ рдкреНрд░рдХрд╛рд╢рдиреЛрдВ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдареАрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рджреЛрд╖реЛрдВ рдХреЛ рдЬрд╛рдирдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред