
рдЕрднрд┐рд╡рд╛рджрди habrazhitel!
рдореИрдВ рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдХреЗ рддрд╣рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рдХреЛрдб рдХрд╡рд░реЗрдЬ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдЕрдкрдиреА рдЙрдкрд▓рдмреНрдзрд┐рдпреЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдпрд╣ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ рдХрд┐ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдореБрдЭреЗ "рд╕рд╣реА" рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рдХреБрдЫ рдкрд╣рд▓реБрдУрдВ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдкрдбрд╝рд╛ред рдЗрд╕рд▓рд┐рдП, рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЛ рдПрдХ рдЫреЛрдЯреА рдкрд╛рдареНрдпрдкреБрд╕реНрддрдХ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди
рджрд┐рдП рдЧрдП:рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ - рдпрд╣ рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рд╕реЗ рдХреБрдЫ рдбреЗрдЯрд╛ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рдХрд┐рд╕реА рди рдХрд┐рд╕реА рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИред
рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░реЗрдВ рддрд╛рдХрд┐ рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг рдХреЗ рд╕рд╛рде, рдХрд╛рдо рдХреЗ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЕрдзрд┐рдХрддрдо рдХреЛрдб рдЗрд╕ рдХрд╡рд░реЗрдЬ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдмрдВрдж рд╣реЛред
рд╕рд╛рдорд╛рдиреНрдп рджреГрд╖реНрдЯрд┐рдХреЛрдг
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ
рдкрд╣рд▓реЗ рд╣реА рд▓рд┐рдЦрд╛ рдерд╛ , рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдХреЛрдб рдХрд╡рд░реЗрдЬ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рд╛рдзрди рдирд╣реАрдВ рдереЗред
рдирд╛рдЧрдЧ рдФрд░
рд╣рд▓рдХрд░ рдХреА рд╕рд▓рд╛рд╣ рдкрд░
, рдореИрдВрдиреЗ рдкреЛрд░реНрдЯреЗрдмрд▓ рдХреНрд▓рд╛рд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ (рддрд░реНрдХ) рдХреЗ рд╕рд╛рде рдХреЛрдб рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ред рдЗрд╕рд╕реЗ рдХрд╡рд░реЗрдЬ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╕рд╛рде рдорд╛рдирдХ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг рдХреА рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде shamanism рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдордп рдХреЛ рднреА рдХрдо рдХрд░рддрд╛ рд╣реИред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рд╕рд░рд▓реАрдХреГрдд рддрд░реАрдХреЗ рд╕реЗ, рдЖрд╡реЗрджрди рдХреЛ рддреАрди рдШрдЯрдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рд╕рднреА рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддрд░реНрдХ рдкреАрд╕реАрдПрд▓ рдореЗрдВ рд╣реИрдВ, рдЬреЛ рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рд░рдирдЯрд╛рдЗрдо рдпрд╛ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИред
рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ XAML рдорд╛рд░реНрдХрдЕрдк рдФрд░ рдиреНрдпреВрдирддрдо рдХреЛрдб рд╣реЛрддрд╛ рд╣реИред
рдкрд░реАрдХреНрд╖рдг DLL PCL рдХреЛ рднреА рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рд╣реЛрддрд╛ рд╣реИред рдореИрдВрдиреЗ MSTest рдХреЛ рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ред
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдЬрд┐рдХ рдПрдХ рд╡реИрдХреНрдпреВрдо рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛ - рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рд╡реЗрдм рд╕рд░реНрд╡рд░ рдФрд░ рд╕реАрдзреЗ рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рд╕реЗ рдЬреБрдбрд╝реЗ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдиреБрдХрд░рдг рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдкреАрд╕реАрдПрд▓ рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:
- рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ (рдЕрдиреБрд░реЛрдз рднреЗрдЬрдирд╛ рдФрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛)
- рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ (рдмрдЪрдд рдХрд░рдирд╛, рдкрдврд╝рдирд╛, рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛)
- рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╕рдВрд╕рд╛рдзрди рд╕реНрдерд╛рдиреАрдпрдХрд░рдг
- рдЗрдВрдЯрд░рдиреЗрдЯ рдХрдиреЗрдХреНрд╢рди рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛
- рдХреБрдЫ рдФрд░
рдЗрд╕ рдкрд░ рдереЛрдбрд╝рд╛ рдФрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдЖрд╡реЗрджрди рдХреА рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдпреЛрдЬрдирд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
- рдПрдХ HTTP рдЕрдиреБрд░реЛрдз рд╕рд░реНрд╡рд░ рдкрд░ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ
- рдЙрддреНрддрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛
- рдЙрддреНрддрд░ рдкрд╛рд░реНрд╕ / рд╕рдВрд╕рд╛рдзрд┐рдд
- Disassembly рдХреЗ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рддрд░реНрдХ рдХреЗрд╡рд▓ рдЪрд░рдг 3 рдкрд░ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреАрд╕реАрдПрд▓ рд╕реЗ рдЕрдиреНрдп рд╕рднреА рдЪрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдХреЛрдб рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИред
рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░реАрди рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕ рддрд░рд╣ рдХреЗ рдирд┐рд╖реНрдХрд╛рд╕рди рдмрд╣реБрдд рдкрд╛рд░рджрд░реНрд╢реА рд╣реИ - ViewModels PCL рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИрдВ, ViewModels рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдмрд╛рдзреНрдпрдХрд╛рд░реА рдЧреБрдг XAML рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИрдВред рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди, рд╣рдо рдмрд╕ ViewModels рдХреЗ рдЖрд╡рд╢реНрдпрдХ рдЧреБрдгреЛрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЦреАрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдм рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рдкреАрд╕реАрдПрд▓ рдореЗрдВ рдПрдХ HTTP рдХреНрд▓рд╛рдЗрдВрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (
HttpWebRequest
) рд╣реИ, рдФрд░ рдкреАрд╕реАрдПрд▓ рдореЗрдВ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЛрдб рдХреЛ рд╕реАрдзреЗ рд▓рд┐рдЦрдирд╛ рддрд░реНрдХрд╕рдВрдЧрдд рд▓рдЧрддрд╛ рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рднреВрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рдорд╛рд░рд╛ рд▓рдХреНрд╖реНрдп рдЖрд╡реЗрджрди рдХреЗ рддрд░реНрдХ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╣реИред рдпрджрд┐ рд╣рдо рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЛ рдкреАрд╕реАрдПрд▓ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рдХрд╕рдХрд░ рд╕реАрд╡реЗ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЛ рдЙрдард╛рдирд╛ рдпрд╛ рд╕рд░реНрд╡рд░ рд╕реЗ рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛ рдЕрд╡рд░реЛрдзрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдЧрд╛ред
рдЪрд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рджреМрд░рд╛рди, рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╢ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдбрд┐рд╡рд╛рдЗрд╕ рдкрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, PCL рдореЗрдВ рдкреВрд░реНрдг рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдмрдВрдзрди рдЙрдкрдХрд░рдг рдирд╣реАрдВ рд╣реИред рдпрд╣ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рд░рдирдЯрд╛рдЗрдо рдЕрд▓рдЧ-рдЕрд▓рдЧ рднрдВрдбрд╛рд░рдг рд╕рдВрдЧрдарди рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рддреЛ, рдкрд░рд┐рдЪрд┐рдд .NET рдореЗрдВ рд╣рдо "рд╕рд╛рдзрд╛рд░рдг" рдлрд╛рдЗрд▓реЗрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
File
) рд╣реИрдВ, рдФрд░ рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдореЗрдВ рдпрд╣
IsolatedStorageFile
ред рд╣рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рднреВрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рднрдВрдбрд╛рд░ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рджрд░рдЕрд╕рд▓, рдбрд┐рдХрдореНрдкреНрд▓рд┐рдВрдЧ рдПрдХ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдкреАрд╕реАрдПрд▓ рдореЗрдВ рд╣рдо рд╡реЗрдм-рдЕрдиреБрд░реЛрдзреЛрдВ, рдлрд╛рдЗрд▓реЛрдВ, рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдЖрджрд┐ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдо рдЙрдиреНрд╣реЗрдВ рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдкрдиреА рдЦреБрдж рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рддрджрдиреБрд╕рд╛рд░, рдкрд░реАрдХреНрд╖рдг рдХреЗ рдкреНрд░рдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП, рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ "рд▓рд╛рдЗрд╡" рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдХрд╛рдо рдХреЛ рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рдордЬрд╝рдмреВрддреА рд╕реЗ рдЕрдиреБрдХрд░рдг рдХрд░рдирд╛ред
рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рдЙрд▓рдЯрд╛
рд╕рдиреНрдирд┐рдХрдЯрди рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдбрд┐рдЧреНрд░реА рдХреЗ рд╕рд╛рде, рдЗрд╕ рдЦрдВрдбрди рдХреЛ
рдирд┐рдпрдВрддреНрд░рдг рдХрд╛ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ
рдЙрд▓рдЯрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдореИрдВ рдЬрдВрдЧрд▓ рдореЗрдВ рдирд╣реАрдВ
рдЬрд╛рдКрдВрдЧрд╛ , рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ
рдЦреБрдж рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдЗрд╕ рд╡рд┐рд╖рдп рдкрд░
рдкрд░реНрдпрд╛рдкреНрдд рд╕рд╛рдордЧреНрд░реА
рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реВрдВ, рдореИрдВ рдХреЗрд╡рд▓ рдореБрдЦреНрдп рдмрд┐рдВрджреБрдУрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рдЕрд░реНрде рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХреГрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЧреБрд░реБ рд╕реЗ рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдорд╛рдлреА рдорд╛рдВрдЧрддрд╛ рд╣реВрдВ - рдореИрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЕрдЧрд░ рдЕрдЪрд╛рдирдХред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдлрд╛рдЗрд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рджреЗрдЦреЗрдВ:
public interface IFileStorage { Stream GetWriteFileStream(string fileName); Stream GetReadFileStream(string fileName); bool IsFileExists(string fileName); List<string> GetAllFileNames(string path); }
рдпрд╣ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЙрдирдХреЗ рднрдВрдбрд╛рд░рдг рдХреЗ рд╡рд┐рд╡рд░рдг рдореЗрдВ рдЬрд╛рдП рдмрд┐рдирд╛ рдлрд╛рдЗрд▓реЛрдВ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдпрд╣ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рдкреАрд╕реАрдПрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдЬреЛ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
IsolatedStorageFile
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдПрдХ рдкрд░реАрдХреНрд╖рдг DLL рдореЗрдВ рднреА рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдмрд╣реБрдд рд╣реА рдЖрджрд┐рдо рд╣реИ - рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ
Dictionary<string, MemoryStream>
рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рддрд░реНрдХ рдЦреБрд╢ рд╣реИ, рдпрд╣ рд╕реЛрдЪрдХрд░ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдлрд╛рдЗрд▓реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╣рдо рд╕рдВрддреБрд╖реНрдЯ рд╣реИрдВ, рдЙрд╕реА рд╕рдордп рд╕реЗ рд╣рдо рдкрд░реАрдХреНрд╖рдг рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдПрдХ рдирдпрд╛ рдкрд░реАрдХреНрд╖рдг - рдХрдХреНрд╖рд╛ рдХрд╛ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг - рдПрдХ рд╕реНрд╡рдЪреНрдЫ "рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо"ред
рд▓реЗрдХрд┐рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдореЗрдВ рдЕрднреА рднреА рд╡реЗрдм, рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдФрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдпрд╣ рд╕рдм рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░реЗрдВрдЧреЗ:
public interface IContainer { IFileStorage FileStorage { get; } IDataRequest DataRequest { get; } ILocalizer Localizer { get; } IUiExtenter Extender { get; } DateTime Now { get; } }
рдореИрдВрдиреЗ рдЗрд╕реЗ "рдХрдВрдЯреЗрдирд░" рдХрд╣рд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ "рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╡реНрдпреБрддреНрдХреНрд░рдо" рдЦрд╛рдХрд╛ рдХреА рд╢рдмреНрджрд╛рд╡рд▓реА рдореЗрдВ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╣реА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣рдорд╛рд░реЗ PCL рд▓реЙрдЬрд┐рдХ рдЯреВрд▓ рдХреЛ рдлрд╛рдЗрд▓ (
FileStorage
), рд╕рд░реНрд╡рд░ рдЕрдиреБрд░реЛрдзреЛрдВ (
DataRequest
), рд╕реНрдерд╛рдиреАрдпрдХрд░рдг (
Localizer
) рдФрд░ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ (
Extender
) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЗрддрд╛ рд╣реИ,
DataRequest
рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдЕрд▓рдЧ рд╕реЗ, рдореИрдВ рдЕрдм рд╕рдВрдкрддреНрддрд┐ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред рдпрд╣ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдХрдИ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рддрд░реНрдХ рд╡рд░реНрддрдорд╛рди рд╕рдордп рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рдФрд░ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╕рд╣реА рдЕрдиреБрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕ рд╕рдордп рдХреЛ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рд╕рдордп рдмрджрд▓рдирд╛ рдПрдХ рдмреБрд░рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рдпрд╣реА рд╡рдЬрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрдкрддреНрддрд┐ рджрд┐рдЦрд╛рдИ рджреАред рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рдереА рдХрд┐
DateTime.Now
рдмрдЬрд╛рдп рдЖрдкрдХреЛ рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдХрдВрдЯреЗрдирд░ рдореЗрдВ рджреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИрдВ - рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдЯреЗрд╕реНрдЯ рдбреАрдПрд▓рдПрд▓ рдореЗрдВред рдкреНрд░рддреНрдпреЗрдХ рдХрдВрдЯреЗрдирд░ рдЕрдкрдиреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди "рдлрд┐рд╕рд▓ рдЧрдпрд╛"ред рдЗрд╕рд▓рд┐рдП, рдкрд░реАрдХреНрд╖рдг DLL рдореЗрдВ рдХрдВрдЯреЗрдирд░
IDataRequest
рдХреЛ рд╕реНрдЯрдм рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд
IDataRequest
рд╣реИ рдЬрд┐рд╕рд╕реЗ рдкрд░реАрдХреНрд╖рдг рд╕рд░реНрд╡рд░ рдХреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рдФрд░ рд╕рдВрдЪрд╛рд░ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдПрдХ рд╡рд╕реНрддреБ рдЬреЛ
IContainer
рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреА рд╣реИ рд╡рд╣ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред рдкрд░реАрдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди, рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рдирдИ рдРрд╕реА рд╡рд╕реНрддреБ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИред рдЕрдиреБрдкреНрд░рдпреЛрдЧ рддрд░реНрдХ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реА рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рд╕рдВрджрд░реНрдн рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╕рднреА рд╡рд░реНрдЧреЛрдВ рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░реЛрдВ рдореЗрдВ рдПрдХ рд▓рд┐рдВрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдмреЗрд╢рдХ, рдирд┐рдпрдВрддреНрд░рдг рдпреЛрдЬрдирд╛рдУрдВ
рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ
рд▓рд┐рдП рдХрдИ рддреИрдпрд╛рд░
рдмрд╛рдЗрдХ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдПрдХрддрд╛ рдПрдкреНрд▓реАрдХреЗрд╢рди рдмреНрд▓реЙрдХ , рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рдЪреБрдирд╛, рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╢реИрдХреНрд╖рд┐рдХ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдПред "рд╡рдпрд╕реНрдХ" рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рд╕рдорд╕реНрдпрд╛рдУрдВ
рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рд╕рдм рдХреБрдЫ рдЕрдЪреНрдЫрд╛ рдФрд░ рд╕реБрдВрджрд░ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдореБрдЭреЗ рдХрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ред рдХрдбрд╝рд╛рдИ рд╕реЗ рдмреЛрд▓рдирд╛, рдкреАрд╕реАрдПрд▓ рдореЗрдВ рд╕рднреА рддрд░реНрдХ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛ред рдЗрд╕рд▓рд┐рдП, рдкреГрд╖реНрдареЛрдВ рдХреЗ рдмреАрдЪ рдиреЗрд╡рд┐рдЧреЗрд╢рди, рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдкреНрд░реЙрдкрд░реНрдЯреА рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб, рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдЪреАрдЬреЗрдВ рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдмрдиреА рд░рд╣реАрдВ рдФрд░ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдмрдВрдж рдирд╣реАрдВ рд╣реБрдПред рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ, рдЗрд╕ рдХреЛрдб рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЛ PCL рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдЕрдиреБрдЪрд┐рдд (IMHO) рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдореВрд░реНрддрддрд╛ рдХрд╛ рджреЛрд╖ рд╣реЛрдЧрд╛ рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдХреЛрдб рдХрд╛ рд╕рдорд░реНрдерди рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдПрдХ рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛ XAML рдореЗрдВ рдЧреБрдгреЛрдВ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ViewModels рдЧреБрдгреЛрдВ рдХрд╛ рдмрдВрдзрди рдерд╛ред рдмрд╛рдж рдХреЗ рдХрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рдХрд╛рд░ (
Brush
,
Visibility
) рд╣реИрдВ рдЬреЛ рдкреАрд╕реАрдПрд▓ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВред
рд░реВрдкрд╛рдВрддрд░рдг рддрдВрддреНрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛
рдЧрдпрд╛ рд╣реИ , рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЖрдкрдХреЛ рдпрд╣ рдпрд╛рдж рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╕рд╛рде, рдЗрд╕ рддрд░рд╣ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдг рд╕реЗ рдЖрд╡реЗрджрди рдзреАрдорд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
рдПрдХ рдмрд╛рдд рдФрд░
рдХреБрдЫ рдЪреАрдЬреЗрдВ рд╣реИрдВ, рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддреА рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдЕрдзрд┐рдХ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдЬрд╛рди рд╕рдХрддрд╛ рдХрд┐ рдХреИрд╕реЗред рдореИрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХрд╛ рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рд╕рд╣реА рд░рд╛рд╕реНрддрд╛ рддрдп рдХрд┐рдпрд╛ред
рдкрд╣рд▓реА рдмрд╛рддред рд╕рд┐рд╕реНрдЯрдо рдХреЗ рддрд░реНрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдерд╛рди рдкрд░, рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдкрд╕рдВрдж рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрд╡рд╛рдж рджрд┐рдЦрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдлрд┐рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкрд╕рдВрдж рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдЬрд╛рд░реА рд░рдЦреЗрдВред рдореИрдВ рдХрдВрдЯреЗрдирд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдореЗрдВ ShowDialog рдкрджреНрдзрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдФрд░ рдкреАрд╕реАрдПрд▓ рдореЗрдВ рдХреЛрдб рд╕реЗ рд╕реАрдзреЗ рдЗрд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рд╕реЗ рдмреЗрд╣рддрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЖрдпрд╛ред рддрджрдиреБрд╕рд╛рд░, рд╡рд┐рдзрд┐ рдХреЗ "рдореБрдХрд╛рдмрд▓рд╛" рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдиреЗ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдВрд╡рд╛рдж рджрд┐рдЦрд╛рдпрд╛ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдкрд╕рдВрдж рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣рд╛ рдерд╛, рдЬрдмрдХрд┐ рдкрд░реАрдХреНрд╖рдг рдиреЗ рдПрдХ рдкреВрд░реНрд╡-рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдорд╛рди рд▓реМрдЯрд╛рдпрд╛ред
рджреВрд╕рд░реА рдмрд╛рддред рддрд░реНрдХ рдЯрд╛рдЗрдорд░ рдирд┐рдпрдВрддреНрд░рдг рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдкреАрд╕реАрдПрд▓ рдореЗрдВ рдЙрдкрд▓рдмреНрдз
Timer
рд╡рд░реНрдЧ рдПрдХ рдЕрд▓рдЧ рдереНрд░реЗрдб рдореЗрдВ рдЕрдВрдд-рдЕрдВрддрд░рд╛рд▓ рдЕрдВрддрд░рд╛рд▓ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдмреБрд▓рд╛рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рддрддреНрд╡ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рд╡рд┐рдлрд▓рддрд╛ рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред рдореЗрд░реЗ рд╕рд┐рд░ рдкрд░ рд╕рдорд╛рдзрд╛рди рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдПрдХ рд╡рд┐рдзрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред "рдореБрдХрд╛рдмрд▓рд╛" рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдпрд╣ рд╡рд┐рдзрд┐ рдореБрдЦреНрдп рд╕реВрддреНрд░ рдореЗрдВ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
BeginInvoke
рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИ, рдФрд░ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ - рдпрд╣ рдмрд╕ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рддреА рд╣реИред
рдПрдХ рдФрд░ рдЪреАрдЬ
рдЬреЛ рдореИрдВ рддрдм рддрдХ
рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд▓рд╕реА рдерд╛, рдЬрдм рддрдХ рдХрд┐ рдореЗрд░реЗ рд╣рд╛рде рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рдЧрдП рдереЗ, рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдПрдХ рд╣реА рдЯрд╛рдЗрдорд░ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░ рд░рд╣рд╛ рдерд╛ред рдЕрдм рдПрдХ-рджреЛ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рдордЬрдмреВрд░рди рджреЗрд░реА рд╣реЛ рд░рд╣реА рд╣реИ, рдЬреЛ рдмрджрд╕реВрд░рдд рд╣реИред
рдкрд░рд┐рдгрд╛рдо
рд╢реЗрд╖ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдмрдВрдж рдереАред ViewModels рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рдЕрдм рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЛрдВ ("рдпрд╣рд╛рдВ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ" - "рдпрд╣рд╛рдВ рдФрд░ рдРрд╕реЗ-рдРрд╕реЗ рдирдВрдмрд░ рджрд░реНрдЬ рдХрд░реЗрдВ" - "рдЕрдкреЗрдХреНрд╖рд┐рдд рдХреЗ рд╕рд╛рде рдореВрд▓реНрдп рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВ") рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред
рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЗрдЪреНрдЫреБрдХ рдкрд░реАрдХреНрд╖рдХреЛрдВ рдХреЛ рдкреНрд░реЗрд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИред рдФрд░ рд╡реЗ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдХреГрдкрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдЧрддрд┐ рдкрд░ рд╣реИ :)
рдЬрдм рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдмрдЧ рдХреЗ рд╕рд╛рде рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдмрд╛рд╣рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдХреЗрд╡рд▓ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдерд╛ рдХрд┐ TeamCity рдХреА рд╣рд░реА рдЖрдВрдЦреЛрдВ рдХреЗ рд╕рд╛рде рдЖрд╡реЗрджрди рд╕реАрдзреЗ рд▓рдбрд╝рд╛рдИ рдореЗрдВ
рдордВрдЧрд▓ рдкрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдХрд┐рддрдиреА рдмрд╛рд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдиреЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рдкрдХрдбрд╝реАрдВ, рдЬрдм рдХреБрдЫ рдЪрд┐рдк рдХреЛ "рдЬрдХрдбрд╝рдирд╛" рдЖрд╡рд╢реНрдпрдХ рдерд╛ - рдХреЗрд╡рд▓ рдЖрдВрдХрдбрд╝реЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдЬрд╛рдирддрд╛ рд╣реИ ...
рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд░рд┐рдгрд╛рдо рдпрд╣ рд╣реИ рдХрд┐, рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реА рдкрд░реАрдХреНрд╖рдг "рдкрд╛рд░рд┐рдд" рд╣реИрдВ рдФрд░ рдЬреЛ рдЕрдЫреВрддрд╛ рд░рд╣рд╛ред рдпрд╣ рдбреЗрдЯрд╛ рдЖрдБрдХрдбрд╝реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЯреАрдо рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ("рдкреНрд░рднрд╛рд╡рд┐рдд" рд╡рд░реНрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕реНрддрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХреЛрдб рдХреА рд╡рд┐рдзрд┐рдпрд╛рдВ рдФрд░ рд▓рд╛рдЗрдиреЗрдВ), рд╕рд╛рде рд╣реА рд╕рд╛рде рд▓рд╛рд▓ рдФрд░ рд╣рд░реЗ рд░рдВрдЧ рдХреЗ рд░рдВрдЧ рдХреЗ рд╕рд╛рде рд╕реНрд░реЛрдд рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВред
рд╕рднреА рдХреЛрдб рдкрд░реАрдХреНрд╖рдг рдЕрднреА рднреА рдмрдВрдж рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛ рд╕рдХреЗ рд╣реИрдВред рддреЛ, рдХреЛрдб-рдкреАрдЫреЗ рдХрд╛ рдХреЛрдб рдкрд░рд┐рднрд╛рд╖рд╛ рджреНрд╡рд╛рд░рд╛ рдмрдВрдж рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рдХрдВрдЯреЗрдирд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рднреА рд░рд╣рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдкреАрд╕реАрдПрд▓ рдХреЗ рдЕрдВрджрд░ рдХреНрдпрд╛ рдерд╛ (рдФрд░ рдпрд╣ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рд╣реИ рдЬреЛ рд╕реАрдзреЗ рдЗрд╕рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ) рдХреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╡рд░ рдФрд░ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЪреВрдБрдХрд┐ рдореИрдВ рдПрдХ рдкрд╛рдЧрд▓ рд╣реВрдБ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рддрд░реАрдХреЛрдВ рдХреЗ 100% рд╕реЗ рдХрдо рдХрд╡рд░реЗрдЬ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдирд┐рд░реНрдорд╛рдг рдХреЛ "рдЧрд┐рд░рдиреЗ" рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ (рдпрджрд┐ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХреЛрдб рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╡рд┐рдзрд┐ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд▓реИрдореНрдмреНрдбрд╛ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ)ред рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдЗрд╕ рддрд░рд╣ рдХрд╛ рдирд┐рдпрдВрддреНрд░рдг рд╢рд╛рдпрдж рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛ред
рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЛрдб рдХрд╡рд░реЗрдЬ рдкрд░реАрдХреНрд╖рдгреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХрд╡рд░реЗрдЬ рдХреЗ рд╕рд╛рде рд╕рдВрдмрдВрдз рд░рдЦрддрд╛ рд╣реИ, рдФрд░ рд▓рд╛рд▓ рд░реЗрдЦрд╛рдУрдВ рдХреЗ рдЕрдзреНрдпрдпрди рд╕реЗ рдЕрдХреНрд╕рд░ рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдкреНрд░реЗрд░рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдПрдиреНрдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдореБрдЦреНрдп рдирд┐рд╖реНрдХрд░реНрд╖ рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рдВрдбреЛрдЬ рдлреЛрди рдХреЗ рд▓рд┐рдП рдЖрдк рдХреЛрдб рдХрд╡рд░реЗрдЬ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд╕рд╛рде рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдЖрдпреЛрдЬрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдХрд╡рд░реЗрдЬ рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рдмрдХрд╡рд╛рд╕ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдХрд┐рд╕реА рдЕрдиреНрдп рдореИрдЯреНрд░рд┐рдХреНрд╕ рдХреЗ рдФрдкрдЪрд╛рд░рд┐рдХ рдЙрдкрдпреЛрдЧ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдХреЛрдЯрд┐рдВрдЧ рдХреЛ рдПрдХ рдХрд╖реНрдЯрдкреНрд░рдж рдХреЗрдкреАрдЖрдИ рдирд╣реАрдВ рдорд╛рдирддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рдЖрдк рд╣рд╡рд╛ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рддреЛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЪреАрдЬ рд╣реЛ рд╕рдХрддреА рд╣реИред