рд╣рдо рдкреБрд▓реБрдореА рдХреЗ рд▓рд┐рдП .NET рдХреЛрд░ рд╕рдорд░реНрдерди рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕рд╛рд╣рд┐рдд рд╣реИрдВ! рдЗрд╕ рдШреЛрд╖рдгрд╛ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЖрдк рдХреНрд▓рд╛рдЙрдб рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЬрд┐рд╕рдореЗрдВ рдПрдЬрд╝реНрдпреЛрд░, рдЬреИрд╕реЗ рдХреБрдмреЗрд░рдиреЗрдЯреНрд╕, рдлрд╝рдВрдХреНрд╢рдВрд╕, рдРрдк рд╕рд░реНрд╡рд┐рд╕, рд╡рд░реНрдЪреБрдЕрд▓ рдорд╢реАрди, рдХреЙрд╕рдореЙрд╕рдмрдбреА рдФрд░ рдЕрдзрд┐рдХ - рд╕рд╣рд┐рдд рдЕрдкрдиреА рдкрд╕рдВрджреАрджрд╛ .NET рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ C #, VB.NET рдФрд░ F # рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдпрд╣ рдмрд┐рдирд╛ рдкреНрд░реЛрдбрдХреНрд╢рди-рддреИрдпрд╛рд░ "рдЗрдВрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЛрдб" рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдХрднреА рднреА рдЕрдкрдиреЗ рдХреЛрдб рд╕рдВрдкрд╛рджрдХ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдкреВрд░реЗ рдмрд╛рджрд▓ рдХреЛ рдЖрдкрдХреА рдЙрдВрдЧрд▓рд┐рдпреЛрдВ рдкрд░ рд▓рд╛рддрд╛ рд╣реИред

рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдЗрди рджрд┐рдиреЛрдВ рдФрд░ рдЕрдзрд┐рдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдзреБрдирд┐рдХ рдХреНрд▓рд╛рдЙрдб рдХреНрд╖рдорддрд╛рдПрдВ рдЬреИрд╕реЗ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрд╕рд┐рд╕реНрдЯрд░реНрд╕, рдХрдВрдЯреЗрдирд░, рд╕рд░реНрд╡рд░рд▓реЗрд╕, рдФрд░ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред "рдЕрд╡рд╕рдВрд░рдЪрдирд╛" рд╢рдмреНрдж рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЪрд▓рд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХреНрд▓рд╛рдЙрдб рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИред рдЖрдзреБрдирд┐рдХ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рд╕реЛрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдмрдЬрд╛рдп рдЗрд╕рдХреЗ рдмрд╛рдж рддрдХ рдЗрдВрддрдЬрд╛рд░ рдХрд░рдиреЗ рдХреЗред рдкреБрд▓реБрдореА рдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдбреЗрд╡рд▓рдкрд░реНрд╕ рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреА рдЯреАрдореЛрдВ рдХреЛ рдЕрднрд┐рдирд╡ рдирдИ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдзреБрдирд┐рдХ рдХреНрд▓рд╛рдЙрдб рдХреА рдкреЗрд╢рдХрд╢ рдХреА рдЧрдИ рд╣рд░ рдЪреАрдЬ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рддрд╛ рд╣реИред
рдкреБрд▓реБрдореА рдиреЗ рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдереЛрдбрд╝рд╛ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдФрд░ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рд╕реНрдерд┐рд░ 1.0 рдореАрд▓ рдХреЗ рдкрддреНрдерд░ рдкрд░ рдкрд╣реБрдВрдЪ рдЧрдпрд╛ред рд╕реИрдХрдбрд╝реЛрдВ рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдХреНрд▓рд╛рдЙрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, .NET рдиреЗ рдкреБрд▓реАрдореА рдХреЗ рд╕рдмрд╕реЗ рдЕрдХреНрд╕рд░ рдЕрдиреБрд░реЛрдзрд┐рдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рддреЗрдЬреА рд╕реЗ рд╡реГрджреНрдзрд┐ рдХреА рд╣реИред рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рд╣рдо рдореЗрдВ рд╕реЗ рдХрдИ рдкреБрд▓реБрдореА рдЯреАрдо рдХреЗ рд╢реБрд░реБрдЖрддреА .NET ex-pats рд╣реИрдВ, рд╣рдо рдЖрдЬ рдЖрдкрдХреЗ рдХреНрд▓рд╛рдЙрдб рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП .NET рдХреЛрд░ рдкрд░ рдЙрдкрд▓рдмреНрдз Pulumi рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд░реЛрдорд╛рдВрдЪрд┐рдд рд╣реИрдВред
рдкреБрд▓реБрдореА рдХреНрдпрд╛ рд╣реИ?
рдкреБрд▓реБрдореА рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреА рдЬрд░реВрд░рддреЛрдВ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИ, "рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЕрд╡рд╕рдВрд░рдЪрдирд╛" рдирд╛рдордХ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рд╡рд╛рдВрдЫрд┐рдд рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рдЗрдВрдЬрди рдЖрдкрдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдкреНрд░рд╛рд╡рдзрд╛рди рдХрд░рддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╣реЛ, рджреЛрд╣рд░рд╛рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реЛред , рдФрд░ рдЙрддреНрдкрд╛рджрди рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреА рдорд╛рдВрдЧ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдордЬрдмреВрддред рдкреБрд▓реБрдореА рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдХрд░ рдФрд░ рдЖрдзреБрдирд┐рдХ рдХреНрд▓рд╛рдЙрдб рдЕрд╡рд╕рдВрд░рдЪрдирд╛ рдкреИрдЯрд░реНрди, рдЬреИрд╕реЗ рдХрдВрдЯреЗрдирд░ рдФрд░ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо, рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдФрд░ рдЖрд╕рд╛рди рдмрдирд╛рдХрд░ рдПрдХ рдХрджрдо рдЖрдЧреЗ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред
.NET рдХреЗ рд▓рд┐рдП рдкреБрд▓реБрдореА рдХреЗ рд╕рд╛рде рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- C #, VB.NET, рдпрд╛ F # рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВред
- рдХреЛрдб рдЗрдВрдЬрди рдХреЗ рд░реВрдк рдореЗрдВ рдкреБрд▓реБрдореА рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд▓рд╛рдЙрдб рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдПрдВ, рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ рдпрд╛ рд╣рдЯрд╛рдПрдВ, рдПрдЬрд╝реНрдпреЛрд░ рдпреВрдЖрдИ рдФрд░ рдПрдб-рд╣реЙрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдореИрдиреБрдЕрд▓ рдкреЙрдЗрдВрдЯ-рдПрдВрдб-рдХреНрд▓рд┐рдХ рдХреЛ рд╣рдЯрд╛ рджреЗрдВред
- рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдФрд░ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛрдб рд╕рд╣рд┐рдд рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдЖрдИрдбреАрдИ рдФрд░ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдСрдЯреЛ-рдкреВрд░реНрдгрддрд╛, рд░реАрдлрд╝реИрдХреНрдЯрд░рд┐рдВрдЧ рдФрд░ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдкреНрд░рд▓реЗрдЦрди рдЬреИрд╕реА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд▓рд╛рдн рдЙрдард╛рдПрдВред
- рдорд╛рдирдХ рдХрдВрдкрд╛рдЗрд▓рд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ, рд░реЛрд╕рд▓рд┐рди рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░, рдФрд░ рд╕реБрд░рдХреНрд╖рд╛, рдЕрдиреБрдкрд╛рд▓рди рдФрд░ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдиреАрддрд┐ рдЗрдВрдЬрди рдХреЗ рд╕рд╛рде рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдЬрд▓реНрджреА рдкрдХрдбрд╝реЗрдВред
- рдХрд┐рд╕реА рднреА рдореМрдЬреВрджрд╛ NuGet рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдпрд╛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╡рд┐рддрд░рд┐рдд рдХрд░реЗрдВ, рдЪрд╛рд╣реЗ рд╡рд╣ рдмреБрдирд┐рдпрд╛рджреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ, рдЙрддреНрдкрд╛рджрдХрддрд╛ рдпрд╛ рдХреЗрд╡рд▓ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкреИрдЯрд░реНрди рдХреЗ рд▓рд┐рдП рд╣реЛред
- рдирд┐рд░рдВрддрд░ рд░реВрдк рд╕реЗ, рдЕрдиреБрдорд╛рдирд┐рдд рд░реВрдк рд╕реЗ рдФрд░ рднрд░реЛрд╕реЗрдордВрдж рд░реВрдк рд╕реЗ рдПрдЬрд╝реНрдпреЛрд░ DevOps рдкрд╛рдЗрдкрд▓рд╛рдЗрди, GitHub рдХреНрд░рд┐рдпрд╛рдПрдБ, рдпрд╛ рдПрдХ рджрд░реНрдЬрди рд╕реЗ рдЕрдзрд┐рдХ рдПрдХреАрдХрд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
- рдХреНрд▓рд╛рд╕рд┐рдХ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреНрд▓рд╛рдЙрдб рджреЗрд╢реА рддрдХрдиреАрдХреЛрдВ рдЬреИрд╕реЗ рдХреБрдмреЗрд░рдиреЗрдЯ, рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░, рд╕рд░реНрд╡рд░рд▓реЗрд╕ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдФрд░ рдЕрддреНрдпрдзрд┐рдХ рд╕реНрдХреЗрд▓реЗрдмрд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдЬреИрд╕реЗ рдХрд┐ рдХреЙрд╕реНрдореЛрд╕рдмреАрдбреА рдЬреИрд╕реЗ рдЖрдкрдХреЗ рдореБрдЦреНрдп рд╡рд┐рдХрд╛рд╕ рдЕрдиреБрднрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдХреЗрд▓реЗрдмрд▓ рдХреНрд▓рд╛рдЙрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВ, рдЬреЛ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡рд┐рдХрд╛рд╕ рдХреЗ рдХрд░реАрдм рд▓рд╛рддреЗ рд╣реИрдВред
рдкреБрд▓реБрдореА рдХрд╛ рдореБрдлреНрдд рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдПрд╕рдбреАрдХреЗ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕реАрдПрд▓рдЖрдИ рдФрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рд╡рд░реНрдЧреАрдХрд░рдг рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЗрди рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИред рдкреБрд▓реБрдореА, рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдкреБрд▓реБрдореА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЗрдЪреНрдЫреБрдХ рдЯреАрдореЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░реАрдорд┐рдпрдо рд╕реБрд╡рд┐рдзрд╛рдПрдБ рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдкрд╣рдЪрд╛рди рдФрд░ рдЙрдиреНрдирдд рдиреАрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдЬрд╝реНрдпреЛрд░ рдПрдХреНрдЯрд┐рд╡ рдбрд╛рдпрд░реЗрдХреНрдЯреНрд░реА рдПрдХреАрдХрд░рдгред
рдПрдХ рдЙрджрд╛рд╣рд░рдг: рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдРрдк рдХреЗ рд╕рд╛рде рд╡реИрд╢реНрд╡рд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕
рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рдПрдХ рдирдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдбреЗрдЯрд╛ рдХреЗ рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд┐рддрд░рдг рдХреЗ рд▓рд┐рдП Azure CosmosDB рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рджрд░реНрд╢рди рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛ, рдЪрд╛рд╣реЗ рд╡реЗ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдХрд╣реАрдВ рднреА рд╣реЛрдВ, C # рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╣рдо рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрдиреНрдп рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЬреИрд╕реЗ рдХрд┐ JSON, YAML, рдПрдХ DSL рдпрд╛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреЙрдЗрдВрдЯ-рдПрдВрдб-рдХреНрд▓рд┐рдХ рдореЗрдВ Azure рдХрдВрд╕реЛрд▓ред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкрд╛рдареНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдмрд░рд╛рдмрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЪреБрдиреМрддреАрдкреВрд░реНрдг рднреА рд╣реИ - рдпрд╣ рдЬрдЯрд┐рд▓, рдЕрдкреНрд░рд╛рдкреНрдп рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЕрднреА рднреА рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдкреБрд▓реБрдореА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд╣рдорд╛рд░реА рдкрд╕рдВрджреАрджрд╛ .NET рднрд╛рд╖рд╛ рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реИ рдФрд░ рдкреБрд▓реБрдореА рдЯреВрд▓ рдмрд╛рдХреА рдХреЛ рд╕рдВрднрд╛рд▓ рд▓реЗрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ C # рдХреЛрдб рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд Azure AppService FunctionApp рдХреЗ рд╕рд╛рде рдПрдХ Azure CosmosDB рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рд╕реНрдХреЗрд▓ рдХрд░рддрд╛ рд╣реИ:
using System; using System.Collections.Generic; using Pulumi; using Pulumi.Azure.AppService; using Pulumi.Azure.Core; using Pulumi.Azure.CosmosDB; class Program { static Task<int> Main(string[] args) { return Deployment.RunAsync(() => { var locations = new[] { "WestUS", "WestEurope", "SouthEastAsia" }; var rg = new ResourceGroup("myapp-rg", new ResourceGroupArgs { Location = locations[0], }); var app = new CosmosApp("myapp", new CosmosAppArgs { ResourceGroup = resourceGroup, Locations = locations, DatabaseName = "pricedb", ContainerName = "prices", Factory = (location, db) => { var func = new ArchiveFunctionApp("myapp-func", new ArchiveFunctionAppArgs { Location = location, Archive = new FileArchive("app"), AppSettings = new Dictionary<string, string> { ["COSMOSDB_ENDPOINT"] = db.Endpoint, }, }, ); return func.App.ID; }, }); }); }
GitHub рджреНрд╡рд╛рд░рд╛ рд╣реЛрд╕реНрдЯ рдХрд┐рдП рдЧрдП
рдХрдЪреНрдЪреЗ Program.cs рджреЗрдЦреЗрдВрдЗрд╕ рдХреЛрдб рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдк рдкреБрд▓реБрдореА рд╕реАрдПрд▓рдЖрдИ рдХреЛ рдкреБрд▓реБрдореА рдЕрдк рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЗрдВрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рджрд┐рдЦрд╛рдПрдЧрд╛ рдЬреЛ рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рд╣реИред рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдХреБрдЫ рд╣реА рдорд┐рдирдЯреЛрдВ рдореЗрдВ рдЖрдкрдХреЗ рдкреВрд░реЗ рдЖрд╡реЗрджрди рдФрд░ рдЗрд╕рдХреЗ рдЖрд╡рд╢реНрдпрдХ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЛ рддреИрдирд╛рдд рдХрд░реЗрдЧрд╛ред

рдмрд╛рдж рдореЗрдВ, рдпрджрд┐ рдЖрдкрдХреЛ рдХреЛрдИ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдк рд╕рд┐рд░реНрдл рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд╕реАрдПрд▓рдЖрдИ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЬрдорд╛ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдЖрдкрдХреЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЛ рддрджрдиреБрд╕рд╛рд░ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдЧрд╛ред рдЖрдкрдХреА рддреИрдирд╛рддреА рдХрд╛ рдкреВрд░рд╛ рдЗрддрд┐рд╣рд╛рд╕ рджрд░реНрдЬ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рджреЗрдЦ рд╕рдХреЗрдВ рдХрд┐ рдХреНрдпрд╛ рдмрджрд▓рд╛рд╡ рдХрд┐рдП рдЧрдП рд╣реИрдВред
.NET рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рднреА рдорд╣рд╛рди рдХреНрдпреЛрдВ рд╣реИ?
рд╣рдо рдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдЕрдкрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП .NET рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреНрдпреЛрдВ рди рдЗрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рд▓рд┐рдП рднреА рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ? рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рдКрдкрд░ рдХреБрдЫ рдлрд╛рдпрджреЗ рд╕реЗ рдКрдкрд░ рджреЗрдЦрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ рдФрд░ .NET рд╕реЗ рдкреНрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрдирдореЗрдВ рд╕реЗ рдХрдИ рд╕реНрдкрд╖реНрдЯ рд╣реИрдВред
рдХрд┐рд╕реА рднреА .NET рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ, рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдХрдИ рдЙрдкрдпреЛрдЧреА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдорд┐рд▓рддреА рд╣реИрдВ:
- рдкрд░рд┐рдЪрд┐рдд: рдбреАрдПрд╕рдПрд▓ рдпрд╛ рдорд╛рд░реНрдХрдЕрдк рдЯреЗрдВрдкрд▓реЗрдЯрд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╕реАрдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИред
- рд╕реНрдкрд╖реНрдЯрддрд╛: рд▓рдХреНрд╖реНрдп рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрд╡рд╕рдВрд░рдЪрдирд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реВрдк, рд╕рд╢рд░реНрдд, рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди, LINQ, async рдХреЛрдб, рдФрд░ рдЕрдзрд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
- рдЕрдореВрд░реНрддрддрд╛: рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдФрд░ рдмрд╛рд░-рдмрд╛рд░ рдПрдХ рд╣реА рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛ рдХреЙрдкреА-рдПрдВрдб-рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдкреИрдЯрд░реНрди рдХреЛ рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддрд╛ рд╣реИред
- рд╕рд╛рдЭрд╛рдХрд░рдг рдФрд░ рдкреБрди: рдЙрдкрдпреЛрдЧ: рдЕрдкрдиреА рдЯреАрдо рдпрд╛ рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдореБрджрд╛рдп рдХреЗ рд╕рд╛рде NuGet рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдФрд░ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд▓рд╛рдЙрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдХреЗ рдПрдХ рд╕рдореБрджрд╛рдп рдореЗрдВ рдЯреИрдк рдХрд░реЗрдВред
- рдЙрддреНрдкрд╛рджрдХрддрд╛: рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдЖрдИрдбреАрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдкреВрд░рд╛ рдХрд░реЗрдВ, рдкрд░рд┐рднрд╛рд╖рд╛ рдкрд░ рдЬрд╛рдПрдВ, рд▓рд╛рдЗрд╡ рддреНрд░реБрдЯрд┐ рдЬрд╛рдВрдЪ, рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ, рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдФрд░ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдкреНрд░рд▓реЗрдЦрдиред
- рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрдЧрдарди: рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЕрдкрдиреЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдорди рдХреЛрдб рд╕реНрдЯреНрд░рдХреНрдЪрд░рд┐рдВрдЧ рддрдХрдиреАрдХреЛрдВ рдЬреИрд╕реЗ рдЕрд╕реЗрдВрдмрд▓реА рдФрд░ рдиреЗрдорд╕реНрдкреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
- рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЬреАрд╡рдирдЪрдХреНрд░: рд╕реНрд░реЛрдд рдирд┐рдпрдВрддреНрд░рдг, рдХреЛрдб рд╕рдореАрдХреНрд╖рд╛, рдкрд░реАрдХреНрд╖рдг рдФрд░ рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг (CI) рдФрд░ рд╡рд┐рддрд░рдг (CD) рд╕рд╣рд┐рдд рдЕрдкрдиреЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдкреНрд░рдмрдВрдзрди рдФрд░ рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ ALM рд╕рд┐рд╕реНрдЯрдо рдФрд░ рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдкреБрд▓реБрдореА рдкреВрд░реЗ .NET рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдЕрдирд▓реЙрдХ рдХрд░рддрд╛ рд╣реИ - рдРрд╕рд╛ рдХреБрдЫ рдЬреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдорд┐рд▓ рдЬрд╛рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди JSON, YAML, DSLs рдпрд╛ CLI рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рдиреЛрдВ рд╕реЗ рдЧрд╛рдпрдм рд╣реИред рдПрдХ рдкреВрд░реНрдг рднрд╛рд╖рд╛ рддрдХ рдкрд╣реБрдВрдЪ рд╣реЛрдирд╛ рдХреЙрд╕рдореЙрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдКрдкрд░ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдерд╛, рдЬреЛ рдПрдХ рдХрд╕реНрдЯрдо рдШрдЯрдХ рд╣реИ рдЬреЛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХрдХреНрд╖рд╛рдУрдВ, рд▓реВрдкреНрд╕, рд▓реИрдореНрдмреНрдбрд╛ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ LINQ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдПрдХ рд╕рд╛рдЭрд╛ рдиреАрдВрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдФрд░ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреЛ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝реЗрдВ, рдФрд░ рдЖрдк рдЪреАрдЬреЛрдВ рдХреЛ рддреЗрдЬреА рд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рдордЬрд╝рдмреВрддреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред
рд╕рдореБрджрд╛рдп рд╕реЗ рдЬреБрдбрд╝реЗрдВ рдФрд░ рд╢реБрд░реБрдЖрдд рдХрд░реЗрдВ
рдЖрдЬ рд╣рдордиреЗ .NET рдХреЗ рд▓рд┐рдП рдкреБрд▓реБрдореА рдХрд╛ рдкрд╣рд▓рд╛ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдЬрд╛рд░реА рдХрд┐рдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗрд╡рд╛рдУрдВ рдХреА рд╕рдВрдкреВрд░реНрдг рдПрдЬрд╝реНрдпреЛрд░ рд╕рд╛рдВрд╕ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред рдкреБрд▓реБрдореА рдХреЛ рдПрдХ рдХреЛрд╢рд┐рд╢ рджреЗрдиреЗ рдХреЗ
рд▓рд┐рдП, .NET рд╣реЛрдордкреЗрдЬ рдХреЗ рд▓рд┐рдП рдкреБрд▓реБрдореА рдкрд░ рдЬрд╛рдПрдВ ред
рд╡рд╣рд╛рдВ рдЖрдкрдХреЛ .NET рдХреЗ рд▓рд┐рдП рдкреБрд▓реБрдореА рдХреЗ рд╕рд╛рде рдЗрдВрд╕реНрдЯрд╛рд▓ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрдИ рдирд┐рд░реНрджреЗрд╢ рдорд┐рд▓реЗрдВрдЧреЗред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд╕рд╛рдзрди рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ:
рд╣рд╛рд▓рд╛рдБрдХрд┐ .NET рдХреЗ рд▓рд┐рдП рдкреБрд▓реБрдореА рдХреЛ "рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди" рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рд╕рднреА рд╕рдмрд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдкреБрд▓реБрдореА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЙрдбрд▓ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ (рдФрд░ рдмрд╛рдХреА рдЕрдкрдиреЗ рд░рд╛рд╕реНрддреЗ рдореЗрдВ рд╣реИ)ред рд╣рдорд╛рд░рд╛ рд▓рдХреНрд╖реНрдп рдЕрдЧрд▓реЗ рдХреБрдЫ рд╣рдлреНрддреЛрдВ рдореЗрдВ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдПрдХрддреНрд░ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рд╣рдо рдЕрдзрд┐рдХ рдЙрджрд╛рд╣рд░рдг рдФрд░ рдмреЗрд╣рддрд░ рдкреНрд░рд▓реЗрдЦрди рд╕рд╣рд┐рдд рдкреВрд░реЗ рдмреЛрд░реНрдб рдореЗрдВ .NET рдЕрдиреБрднрд╡ рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдбрд╝реА рдореЗрд╣рдирдд рдХрд░реЗрдВрдЧреЗред
рдХреГрдкрдпрд╛ рдЕрдкрдиреЗ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ, рд╡рд┐рдЪрд╛рд░реЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреЗ
рд▓рд┐рдП рд╕рдореБрджрд╛рдп рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ рдФрд░ рдЯреАрдо рдФрд░ рдЕрдиреНрдп рдЕрдВрддрд┐рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХ рд╕рд╣рд╛рдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред рдкрд┐рд▓реБрдореА рднреА
GitHub рдкрд░ рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рд╣реИ ред
рдпрд╣ рдкреБрд▓реБрдореА рдЯреАрдо рдФрд░ рд╣рдорд╛рд░реЗ рд╕рдореБрджрд╛рдп рдХреЗ рд▓рд┐рдП рдПрдХ рд░реЛрдорд╛рдВрдЪрдХ рджрд┐рди рд╣реИред .NET рдХреЗ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдкреБрд▓реБрдореА рдиреЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╣рдорд╛рд░реА рдЬрдбрд╝реЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдкрд╛рдиреЗ рдФрд░ .NET рд╕рдореБрджрд╛рдп рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рдбреЗрд╡рд▓рдкрд░реНрд╕, рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдЯреАрдореЛрдВ рдХреА рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдСрдкрд░реЗрдЯрд░ рдПрдХ рд╕рд╛рде рдмреЗрд╣рддрд░ рдХреНрд▓рд╛рдЙрдб рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВред
рд╣рдо .NET рдХреЗ рд▓рд┐рдП рдкреБрд▓реБрдореА рдХреЗ рд╕рд╛рде рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдП рдЧрдП рдирдП рдФрд░ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдХреНрд▓рд╛рдЙрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрд╕реБрдХ рд╣реИрдВ!