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

рдЗрди рджрд┐рдиреЛрдВ рдЕрдзреЛрд╕рдВрд░рдЪрдирд╛ рдФрд░ рдЕрдзрд┐рдХ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛ рдЧрдИ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдзреБрдирд┐рдХ рдХреНрд▓рд╛рдЙрдб рдХреНрд╖рдорддрд╛рдПрдВ рдЬреИрд╕реЗ рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрд╕реЛрд░реНрд╡рд┐рд╕, рдХрдВрдЯреЗрдирд░, рд╕рд░реНрд╡рд░ рдФрд░ рдбреЗрдЯрд╛ рд╡реЗрдпрд░рд╣рд╛рдЙрд╕ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рд╢рдмреНрдж рдЕрд╡рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреА рдЬрд░реВрд░рдд рдХреЗ рд╕рднреА рдХреНрд▓рд╛рдЙрдб рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдзреБрдирд┐рдХ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рддреЗ рд╕рдордп рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЧрд╣рди рд╡рд┐рдЪрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдкреБрд▓реБрдореА рдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЗрдВрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдФрд░ рдЯреАрдореЛрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдирдП рдирдП рдлреАрдЪрд░реНрд╕ рддреИрдпрд╛рд░ рдХрд┐рдП рдЬрд╛ рд╕рдХреЗрдВ рдЬреЛ рдЖрдзреБрдирд┐рдХ рдХреНрд▓рд╛рдЙрдб рдХреЗ рд▓рд┐рдП рд╣рд░ рдЪреАрдЬ рдХрд╛ рдлрд╛рдпрджрд╛ рдЙрдард╛рддреЗ рд╣реИрдВред
рдкреБрд▓реБрдореА рдХреЛ рдПрдХ рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдереЛрдбрд╝рд╛ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рд╣рд╛рд▓ рд╣реА рдореЗрдВ 1.0 рдХреЗ рд╕реНрдерд┐рд░ рдирд┐рд╢рд╛рди рддрдХ рдкрд╣реБрдВрдЪ рдЧрдпрд╛ рд╣реИред рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдХреНрд▓рд╛рдЙрдб-рдЖрдзрд╛рд░рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реИрдХрдбрд╝реЛрдВ рдХрдВрдкрдирд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, .NET рддреЗрдЬреА рд╕реЗ рдкреБрд▓реБрдореА рдХреЗ рд╕рдмрд╕реЗ рдЕрдХреНрд╕рд░ рдЕрдиреБрд░реЛрдз рдХрд┐рдП рдЧрдП рд╕рд╛рдореБрджрд╛рдпрд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рдЪрд▓рд╛ рдЧрдпрд╛ред рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рд╣рдо рдореЗрдВ рд╕реЗ рдХрдИ рдкреБрд▓реБрдореА рдЯреАрдо рдореЗрдВ рд╢реБрд░реБрдЖрддреА .NET рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рд╣реИрдВ, рдЖрдЬ рд╣рдо рдЖрдкрдХреЗ рдХреНрд▓рд╛рдЙрдб рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдХреА рдЬрд░реВрд░рддреЛрдВ рдХреЗ рд▓рд┐рдП .NET рдХреЛрд░ рдкрд░ рдкреБрд▓реБрдореА рдХреЛ рдЙрдкрд▓рдмреНрдз рдХрд░рд╛рдХрд░ рдмрд╣реБрдд рдЦреБрд╢ рд╣реИрдВред
рдкреБрд▓реБрдореА рдХреНрдпрд╛ рд╣реИ?
рдкреБрд▓реБрдореА рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ "рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ" рдирд╛рдордХ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреА рдмреБрдирд┐рдпрд╛рджреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЗрдВрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЛ рдПрдХ рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдЖрдк рд╡рд╛рдВрдЫрд┐рдд рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рддрдВрддреНрд░ рдЖрдкрдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╣реЛрдиреЗ, рджреЛрд╣рд░рд╛рдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рдФрд░ рдЙрддреНрдкрд╛рджрди рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдкреБрд▓реБрдореА рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдПрдХ рдХрджрдо рдЖрдЧреЗ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдзреБрдирд┐рдХ рдХреНрд▓рд╛рдЙрдб рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрдВрдЯреЗрдирд░ рдФрд░ рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдХрд╛рд░реНрдпрдХреНрд░рдо, рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдФрд░ рд╕рд░рд▓ред
.NET рдХреЗ рд▓рд┐рдП рдкреБрд▓реБрдореА рдХреЗ рд╕рд╛рде, рдЖрдк рдпрд╣ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- C #, VB.NET, рдпрд╛ F # рдХреЗ рд╕рд╛рде рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░реЗрдВред
- Azure рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рдХрд╕реНрдЯрдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдореИрдиреНрдпреБрдЕрд▓ рдкреЙрдЗрдВрдЯ-рдПрдВрдб-рдХреНрд▓рд┐рдХ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реБрдП, рдХреЛрдб рд╣реИрдВрдбрд▓рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкреБрд▓реБрдореА рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд▓рд╛рдЙрдб рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд┐рд░реНрдорд╛рдг, рдЕрджреНрдпрддрди рдпрд╛ рд╣рдЯрд╛рдирд╛ред
- рдСрдЯреЛ-рдХрдореНрдкреНрд▓реАрдЯ, рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ, рдФрд░ рдСрдирд▓рд╛рдЗрди рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рдЬреИрд╕реЗ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдФрд░ рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдХреЛрдб рд╕рд╣рд┐рдд рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рдЖрдИрдбреАрдИ рдФрд░ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
- рд╕реБрд░рдХреНрд╖рд╛, рдЕрдиреБрдкрд╛рд▓рди, рдФрд░ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдХрдВрдкрд╛рдЗрд▓рд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ, рд░реЛрд╕рд▓рд┐рди рдПрдирд╛рд▓рд╛рдЗрдЬрд╝рд░, рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдиреАрддрд┐ рддрдВрддреНрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВред
- рдХрд┐рд╕реА рднреА рдореМрдЬреВрджрд╛ NuGet рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдпрд╛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреБрдирд░реНрд╡рд┐рддрд░рд┐рдд рдХрд░реЗрдВ, рдЪрд╛рд╣реЗ рдмреЗрд╣рддрд░ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ, рдкреНрд░рджрд░реНрд╢рди рдпрд╛ рд╕рд┐рд░реНрдл рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкреИрдЯрд░реНрди рдХреЗ рд▓рд┐рдПред
- Azure DevOps рдкрд╛рдЗрдкрд▓рд╛рдЗрди, GitHub рдХреНрд░рд┐рдпрд╛рдПрдБ, рдпрд╛ рдПрдХ рджрд░реНрдЬрди рд╕реЗ рдЕрдзрд┐рдХ рдПрдХреАрдХрд░рдг рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд╕рд╛рде рдирд┐рд░рдВрддрд░, рдЕрдиреБрдорд╛рдирд┐рдд рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рддреИрдирд╛рддреА рдХрд░реЗрдВред
- рдХреНрд▓рд╛рд╕рд┐рдХ рдХреНрд▓рд╛рдЙрдб рдЗрдВрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдЯреЗрдХреНрдиреЛрд▓реЙрдЬреА рдЬреИрд╕реЗ рдХреБрдмреЗрд░рдиреЗрдЯ, рдбреЙрдХрдЯрд░ рдХрдВрдЯреЗрдирд░, рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдХреЗрд▓реЗрдмрд▓ рдХреНрд▓рд╛рдЙрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВред
рдореБрдХреНрдд рдкреБрд▓реБрдореА рдЦреБрд▓рд╛ рд╕реНрд░реЛрдд рдПрд╕рдбреАрдХреЗ, рдЬрд┐рд╕рдореЗрдВ рд╕реАрдПрд▓рдЖрдИ рдФрд░ рдХрдИ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЗрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдкреБрд▓реАрдореА рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдкреБрд▓реБрдореА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдЯреАрдореЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдиреНрдирдд рд╕реБрд╡рд┐рдзрд╛рдПрдБ рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдЙрдиреНрдирдд рдиреАрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП Azure ActiveDirectory рдПрдХреАрдХрд░рдгред
рдЙрджрд╛рд╣рд░рдг: рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕
рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рдПрдХ рдирдпрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдЪреНрдЪ рдкреНрд░рджрд░реНрд╢рди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реИрд╢реНрд╡рд┐рдХ рдбреЗрдЯрд╛ рд╡рд┐рддрд░рдг рдХреЗ рд▓рд┐рдП Azure CosmosDB рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рд╡реЗ рдХрд╣рд╛рдБ рд╣реИрдВ, рд╕рд░реНрд╡рд░ рд░рд╣рд┐рдд C # рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рд╕реНрдХреЗрд▓ рдХрд░рддрд╛ рд╣реИред рд╣рдо рдЖрдорддреМрд░ рдкрд░ JSON, YAML, DSL, рдпрд╛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкреЙрдЗрдВрдЯ-рдПрдВрдб-рдЕрдЬрд╝ рдЕрдЬрд╝реВрд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдХреБрдЫ рдЕрдиреНрдп рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдЯреВрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрдо рддреМрд░ рдкрд░ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдбрд░рд╛рд╡рдирд╛ рд╣реИ - рдпрд╣ рдЬрдЯрд┐рд▓ рд╣реИ, рдЕрдкреНрд░рдпреБрдХреНрдд рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдкреБрд▓реБрдореА рдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣рдорд╛рд░реА рдкрд╕рдВрджреАрджрд╛ .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 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ IaaS рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░рддреЗ? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдордиреЗ рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреБрдЫ рдлрд╛рдпрджреЛрдВ рдХреЛ рдкрд╣рд▓реЗ рд╣реА рд╕реВрдЪреАрдмрджреНрдз рдХрд░ рд▓рд┐рдпрд╛ рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рдХрдИ рд╢рд╛рдпрдж рд╕реНрдкрд╖реНрдЯ рд╣реИрдВ рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ рдФрд░ .NET рд╕реЗ рдкреНрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЪрд▓реЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рджреЛрд╣рд░рд╛рддреЗ рд╣реИрдВред
рдХрд┐рд╕реА рднреА .NET рднрд╛рд╖рд╛ рдХреЗ рдкреНрд░рдпреЛрдЧ рд╕реЗ, рдЖрдкрдХреЛ IaaS рдХреЗ рд▓рд┐рдП рдХрдИ рдЙрдкрдпреЛрдЧреА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдорд┐рд▓рддреА рд╣реИрдВ:
- рдкреНрд░рд╢рд┐рдХреНрд╖рдг: рдбреАрдПрд╕рдПрд▓ рдпрд╛ рдорд╛рд░реНрдХрдЕрдк рдЯреЗрдореНрдкреНрд▓реЗрдЯ рднрд╛рд╖рд╛рдУрдВ рдХреЛ рд╕реАрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
- рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐: рд▓реВрдк, рд╕рд╢рд░реНрдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐, рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди, LINQ, рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХреЛрдб, рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛ рдмрдирд╛рдПрдВ рдЬреЛ рд▓рдХреНрд╖реНрдп рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рдЬрд░реВрд░рддреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред
- рдЕрдореВрд░реНрддрддрд╛: рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдФрд░ рдПрдХ рд╣реА рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рдФрд░ рдПрдХрд╛рдзрд┐рдХ рдХреЙрдкреА рдХрд░рдиреЗ рдФрд░ рдЪрд┐рдкрдХрд╛рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддрд╛ рд╣реИред
- рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдФрд░ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛: рдЕрдкрдиреА рдЯреАрдо рдпрд╛ рдЕрдВрддрд░реНрд░рд╛рд╖реНрдЯреНрд░реАрдп рд╕рдореБрджрд╛рдп рдХреЗ рд╕рд╛рде NuGet рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдФрд░ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд▓рд╛рдЙрдб рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдХреЗ рд╕рдореБрджрд╛рдп рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВред
- рдЙрддреНрдкрд╛рджрдХрддрд╛: рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рд╡рд┐рдХрд╛рд╕ рдкрд░рд┐рд╡реЗрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХрдВрдкреНрд▓реАрд╢рди, рдЧреЛ-рдЯреВ рдбреЗрдлрд┐рдирд┐рд╢рди, рд▓рд╛рдЗрд╡ рдПрд░рд░ рдЪреЗрдХрд┐рдВрдЧ, рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ, рд╕реНрдЯреИрдЯрд┐рдХ рдПрдирд╛рд▓рд┐рд╕рд┐рд╕ рдФрд░ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
- рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдВрдЧрдарди: рдПрдХ рдпрд╛ рдЕрдзрд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдХреЛрдб рд╕рдВрд░рдЪрдирд╛ рддрдХрдиреАрдХреЛрдВ, рдЬреИрд╕реЗ рдХрд┐ рдЕрд╕реЗрдВрдмрд▓реА рдФрд░ рдирд╛рдорд╕реНрдерд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
- рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдЬреАрд╡рдирдЪрдХреНрд░: рдЕрдкрдиреЗ рдирд┐рдпрдВрддреНрд░рдг, рд╕реНрд░реЛрдд рд╕рддреНрдпрд╛рдкрди, рдкрд░реАрдХреНрд╖рдг рд╕рддреНрдпрд╛рдкрди рдФрд░ рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг (CI), рдФрд░ рд╡рд┐рддрд░рдг (CD) рд╕рд╣рд┐рдд рдЕрдкрдиреЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдкреНрд░рдмрдВрдзрди рдФрд░ рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рдореМрдЬреВрджрд╛ ALM рд╕рд┐рд╕реНрдЯрдо рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
рдкреБрд▓реБрдореА рдкреВрд░реЗ .NET рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рддрдХ рдкрд╣реБрдБрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ - рдХреБрдЫ рдРрд╕рд╛ рдЬреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдорд┐рд▓ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди JSON, YAML, DSL рдпрд╛ CLI рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рдирд╣реАрдВред рдХреЙрд╕рдореЙрд╕ рдЙрджрд╛рд╣рд░рдг рдКрдкрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рднрд╛рд╖рд╛ рддрдХ рдкрд╣реБрдВрдЪ рдЖрд╡рд╢реНрдпрдХ рдереА, рдЬреЛ рдПрдХ рдХрд╕реНрдЯрдо рдШрдЯрдХ рд╣реИ рдЬреЛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдХрдХреНрд╖рд╛рдУрдВ, рд▓реВрдкреНрд╕, рд▓реИрдореНрдмреНрдбрд╛ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ LINQ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдбреЗрд╡рд▓рдкрд░реНрд╕ рдФрд░ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреЛ рдПрдХ рд╕рдорд╛рди рдврд╛рдВрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╕рд╛рде рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреЛ рдПрдХ рд╕рд╛рде рдЬреЛрдбрд╝реЗрдВ, рдФрд░ рдЖрдкрдХреЛ рдкрд░рд┐рдгрд╛рдо рддреЗрдЬреА рд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдорд┐рд▓реЗрдЧрд╛ред
рд╕рдореБрджрд╛рдп рд╕реЗ рдЬреБрдбрд╝реЗрдВ рдФрд░ рд╢реБрд░реБрдЖрдд рдХрд░реЗрдВ
рд╣рдордиреЗ .NET рдХреЗ рд▓рд┐рдП рдкрд╣рд▓рд╛ рдкреБрд▓реВрдореА рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдЬрд╛рд░реА рдХрд┐рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдПрдЬрд╝реНрдпреЛрд░ рд╕реЗрд╡рд╛рдУрдВ рдХреА рдкреВрд░реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╢рд╛рдорд┐рд▓ рд╣реИред рдкреБрд▓реБрдореА рдХреЛ рдЖрдЬрд╝рдорд╛рдиреЗ рдХреЗ
рд▓рд┐рдП, .NET рд╣реЛрдордкреЗрдЬ рдХреЗ рд▓рд┐рдП рдкреБрд▓реБрдореА рд╣реЛрдордкреЗрдЬ рдкрд░ рдЬрд╛рдПрдБред
рд╡рд╣рд╛рдВ рдЖрдкрдХреЛ рдХреБрдЫ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдорд┐рд▓реЗрдВрдЧреЗ рдФрд░ .NET рдХреЗ рд▓рд┐рдП рдкреБрд▓реБрдореА рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢ рдорд┐рд▓рдиреЗ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд╕рд╛рдзрди рдЕрддрд┐рд░рд┐рдХреНрдд рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ: