рдСрд░рд▓рд┐рдпрдиреНрд╕ 3.0 рдЬрд╛рд░реА рдХрд┐рдпрд╛

рдпрд╣ рдСрд░рд▓рд┐рдпрдиреНрд╕ рдЯреАрдо рдХреА рдПрдХ рдЕрддрд┐рдерд┐ рдкреЛрд╕реНрдЯ рд╣реИред рдСрд░рд▓рд┐рдпрдиреНрд╕ .NET рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рддрд░рд┐рдд рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд░реЙрд╕-рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣реИред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП https://github.com/dotnet/orleans рджреЗрдЦреЗрдВред

рд╣рдореЗрдВ рдСрд░рд▓рд┐рдпрдиреНрд╕ 3.0 рдХреА рд░рд┐рд╣рд╛рдИ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╣реБрдП рдЦреБрд╢реА рд╣реЛ рд░рд╣реА рд╣реИред рдСрд░рд▓рд┐рдпрдиреНрд╕ 2.0 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдЗрд╕рдореЗрдВ рдХрдИ рд╕реБрдзрд╛рд░ рдФрд░ рд╕реБрдзрд╛рд░ рд╣реИрдВ, рд╕рд╛рде рд╣реА рдХрдИ рдирдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рднреА рд╣реИрдВред рдпреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЗ рдЕрдиреБрднрд╡ рд╕реЗ рддрдп рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЬреЛ рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдФрд░ рд╡рд╛рддрд╛рд╡рд░рдгреЛрдВ рдореЗрдВ рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдСрд░рд▓рд┐рдпрдиреНрд╕-рдЖрдзрд╛рд░рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╕рд╛рде рд╣реА рд╡реИрд╢реНрд╡рд┐рдХ рдСрд░рд▓рд┐рдпрдиреНрд╕ рд╕рдореБрджрд╛рдп рдХрд╛ рдЙрддреНрд╕рд╛рд╣ рднреА рд╣реИ, рдЬреЛ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛ рдмреЗрд╣рддрд░, рддреЗрдЬ рдФрд░ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рд╕рднреА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж, рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдЗрд╕ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдпреЛрдЧрджрд╛рди рджрд┐рдпрд╛!



рдСрд░рд▓рд┐рдпрдиреНрд╕ 2.0 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреНрд░рдореБрдЦ рдкрд░рд┐рд╡рд░реНрддрди


рдСрд░рд▓рд┐рдпрдиреНрд╕ 2.0 рдХреЛ 18 рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдереЛрдбрд╝рд╛ рд░рд┐рд▓реАрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рддрдм рд╕реЗ рдлреНрд░реЗрдорд╡рд░реНрдХ рдиреЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рдЧрддрд┐ рдХреА рд╣реИред 2.0 рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреБрдЫ рдмрджрд▓рд╛рд╡:

  • рд╡рд┐рддрд░рд┐рдд ACID рд▓реЗрдирджреЗрди
  • рдПрдХ рдирдпрд╛ рдЕрдиреБрд╕реВрдЪрдХ рд╣реИ рдХрд┐ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдореЗрдВ 30% рд╕реЗ рдЕрдзрд┐рдХ рдХреА рд╡реГрджреНрдзрд┐ рд╣реБрдИ рд╣реИ
  • рдиреНрдпреВ рд░реЛрд╕рд▓рд┐рди-рдЖрдзрд╛рд░рд┐рдд рдХреЛрдб рдЬрдирд░реЗрдЯрд░
  • рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐ рдЧрддрд┐ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреБрдирд░реНрд╡рд┐рдХрд╕рд┐рдд рдХреНрд▓рд╕реНрдЯрд░ рд╕рджрд╕реНрдпрддрд╛
  • рд╕рд╣-рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рд╕рдорд░реНрдерди

рд╕рд╛рде рд╣реА рдХрдИ рдЕрдиреНрдп рд╕реБрдзрд╛рд░ рдФрд░ рд╕реБрдзрд╛рд░ред

ASP.NET рдмреЗрдбрд░реЙрдХ рдХреЗ рд╕рд╛рде рдиреЗрдЯрд╡рд░реНрдХ рд▓реЗрдпрд░ рдХреЛ рдмрджрд▓рдирд╛


рдЯреАрдПрд▓рдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд╕рдВрдЪрд╛рд░ рдмрдирд╛рдП рд░рдЦрдирд╛ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдореБрдЦ рдЪрд┐рдВрддрд╛ рдХрд╛ рд╡рд┐рд╖рдп рд░рд╣рд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рджреЛрдиреЛрдВ рд╕рдореБрджрд╛рдп рд╕реЗ рдФрд░ рдЖрдВрддрд░рд┐рдХ рднрд╛рдЧреАрджрд╛рд░реЛрдВ рд╕реЗред рд╕рдВрд╕реНрдХрд░рдг 3.0 рдореЗрдВ, рд╣рдо TLS рд╕рдорд░реНрдерди рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЬреЛ Microsoft.Orleans.Connections.Security рдкреИрдХреЗрдЬ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП TransportLayerSecurity рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред

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

рдСрд░рд▓рд┐рдпрдиреНрд╕ 3.0 рдореЗрдВ, рдкреВрд░реЗ рдиреЗрдЯрд╡рд░реНрдХ рд▓реЗрдпрд░ рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмреЗрдбрд░реЙрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдирд╛рдИ рдЧрдИ рд▓реЗрдпрд░ рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ ASP.NET рдЧреНрд░реБрдк рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВред рдмреЗрдбрд░реЙрдХ рдХрд╛ рд▓рдХреНрд╖реНрдп рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рддреЗрдЬ рдФрд░ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдиреЗрдЯрд╡рд░реНрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдирд╛ рд╣реИред

ASP.NET рдЯреАрдо рдФрд░ рдСрд░рд▓рд┐рдпрдиреНрд╕ рдЯреАрдо рдиреЗ рдиреЗрдЯрд╡рд░реНрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕рд░реНрд╡рд░ рджреЛрдиреЛрдВ рдХреЛ рд╕рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛, рдЯреНрд░рд╛рдВрд╕рдкреЛрд░реНрдЯ-рдПрдЧреНрдиреЙрд╕реНрдЯрд┐рдХ рд╣реИрдВ, рдФрд░ рдЗрд╕реЗ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпреЗ рд╕рд╛рд░ рд╣рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рдСрд░рд▓рд┐рдпрдиреНрд╕-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдиреЗрдЯрд╡рд░реНрдХ рдХреЛрдб рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рдмрд┐рдирд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ "рдкрд░рд┐рд╡рд╣рди" рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдСрд░рд▓рд┐рдпрдиреНрд╕ рдЯреАрдПрд▓рдПрд╕ рд╕рдкреЛрд░реНрдЯ рдХреЛ рдмреЗрдбрд░реЙрдХ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рд╣рдо рдЗрд╕реЗ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдмрдирд╛рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рд░рдЦрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЗрд╕реЗ .NET рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рджреВрд╕рд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

рдпрджреНрдпрдкрд┐ рдЗрд╕ рдирд╡рд╛рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрддреНрд╕рд╛рд╣рди рдЯреАрдПрд▓рдПрд╕ рд╕рдорд░реНрдерди рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдерд╛, рд░рд╛рдд рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓реЛрдб рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ, рдФрд╕рддрди рдереНрд░реВрдкреБрдЯ рд▓рдЧрднрдЧ 30% рдмрдврд╝ рдЬрд╛рддрд╛ рд╣реИред

рдиреЗрдЯрд╡рд░реНрдХ рд▓реЗрдпрд░ рдХреЛ MemoryPool<byte> рдХрд░рдиреЗ рдореЗрдВ рд╣рдорд╛рд░реА рдХрд╕реНрдЯрдо рдмрдлрд░ рдкреВрд▓рд┐рдВрдЧ рдХреЛ MemoryPool<byte> рд╕рд╛рде рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рдФрд░ рдЗрд╕ рдмрджрд▓рд╛рд╡ рдХреЗ рд╕рд╛рде, рдЕрдм рдХреНрд░рдордмрджреНрдзрддрд╛ Span<T> рд▓рд╛рдн рдЙрдард╛рддреА рд╣реИред рдХреБрдЫ рдХреЛрдб рдкрде рдЬреЛ рдкрд╣рд▓реЗ рд╕рдорд░реНрдкрд┐рдд рдереНрд░реЗрдбреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЙрдХ рдХрд░рдиреЗ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреЗ рдереЗ, рдЬреЛ BlockingCollection<T> рд╣реИрдВ рдЕрдм рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд╕рдВрджреЗрд╢ рдкрд╛рд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП Channel<T> рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк .NET рдереНрд░реЗрдб рдкреВрд▓ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрдо рд╕рдорд░реНрдкрд┐рдд рдзрд╛рдЧреЗ рд╣реЛрддреЗ рд╣реИрдВред

рдЬреЗрдиреЗрд░рд┐рдХ рд╣реЛрд╕реНрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рд╣-рд╣реЛрд╕реНрдЯрд┐рдВрдЧ


рдПрдХ рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ ASP.NET Core рдЬреИрд╕реЗ рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд╕рд╛рде рдСрд░рд▓рд┐рдпрдиреНрд╕ рдХреА рд╕рд╣-рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдЕрдм .NET рдЬреЗрдиреЗрд░рд┐рдХ рд╣реЛрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рд╕реЗ рдкрд╣рд▓реЗ рдЖрд╕рд╛рди рд╣реИред

UseOrleans рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ ASP.NET рдХреЛрд░ рдХреЗ рд╕рд╛рде рдСрд░рд▓рд┐рдпрдиреНрд╕ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
 var host = new HostBuilder() .ConfigureWebHostDefaults(webBuilder => { //  ASP.NET Core webBuilder.UseStartup<Startup>(); }) .UseOrleans(siloBuilder => { //  Orleans siloBuilder.UseLocalHostClustering(); }) .ConfigureLogging(logging => { /*   ,    */ }) .ConfigureServices(services => { /*    */ }) .UseConsoleLifetime() .Build(); //      . await host.RunAsync(); 

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

рд╡рд┐рд╢реНрд╡рд╕рдиреАрдпрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░


рдЙрдиреНрдирдд рдЧрдкрд╢рдк рдХреА рдмрджреМрд▓рдд рдХреНрд▓рд╕реНрдЯрд░ рдЕрдм рджреБрд░реНрдШрдЯрдирд╛рдУрдВ рд╕реЗ рдЙрдмрд░рдиреЗ рдореЗрдВ рддреЗрдЬ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореИрд╕реЗрдЬрд┐рдВрдЧ рдПрд░рд░ рдХреЛ рдЕрдм рд▓рдЧрд╛рддрд╛рд░ рд╣реИрдВрдбрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдХреЙрд▓рд░ рдХреЛ рд╡рд╛рдкрд╕ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рддреЗрдЬреА рд╕реЗ рдХреАрдбрд╝реЗ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдХреЛрдИ рд╕рдВрджреЗрд╢ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреНрд░рдордмрджреНрдз рдпрд╛ deserialized рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдЕрдкрд╡рд╛рдж рдореВрд▓ рдХреЙрд▓рд░ рдХреЛ рд╡рд╛рдкрд╕ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдмрдврд╝реА рд╣реБрдИ рд╡реНрдпрд╛рдкрдХрддрд╛


рдзрд╛рд░рд╛рдУрдВ рдореЗрдВ рдЕрдм рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдбреЗрдЯрд╛ рдПрдбреЗрдкреНрдЯрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рднреА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЗрд╕ рдмрд╛рдд рдкрд░ рдЕрдзрд┐рдХ рдирд┐рдпрдВрддреНрд░рдг рджреЗрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рд╡рд╛рд╣ рдЖрдЗрдЯрдо рдХреЛ рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдореЗрдВ рдХреИрд╕реЗ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕реНрдЯреНрд░реАрдо рдкреНрд░рджрд╛рддрд╛ рдХреЛ рдпрд╣ рднреА рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдзрд╛рд░рд╛рдПрдБ рдореМрдЬреВрджрд╛ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдФрд░ / рдпрд╛ рдЧреИрд░-рдСрд░рд▓рд┐рдпрдиреНрд╕ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХреАрдХреГрдд рд╣реЛ рд╕рдХрддреА рд╣реИрдВред

рд▓реЗрди-рджреЗрди рдХреА рдХрд╕реНрдЯрдо рд╕реНрдерд┐рддрд┐ рдЕрдм рдШреЛрд╖рд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИ рдХрд┐ рд▓реЗрди-рджреЗрди рдореЗрдВ рд╡рд╣ рдХреМрди рд╕реА рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛ рд╕рдХрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд▓реЗрдирджреЗрди рд░рд╛рдЬреНрдп рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЬреЛ рд╕реЗрд╡рд╛ рдЬреАрд╡рди рдХреА рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕реЗрд╡рд╛ рдмрд╕ рдХрддрд╛рд░ рдореЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реИ, рдПрдХ рд▓реЗрдирджреЗрди рдкреНрд░рдмрдВрдзрдХ рдХреЗ рдХрд░реНрддрд╡реНрдпреЛрдВ рдХреЛ рдкреВрд░рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рд▓реЗрдЦрди рд╣реИред

рдЕрдм рд╕рдореНрдорд┐рд▓рд┐рдд рд╣реЛрдВ!


рдЕрдм рдЬрдм рдСрд░рд▓рд┐рдпрдиреНрд╕ 3.0 рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо рдЕрдкрдирд╛ рдзреНрдпрд╛рди рднрд╡рд┐рд╖реНрдп рдХреА рд░рд┐рд▓реАрдЬрд╝ рдХреА рдУрд░ рдореЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВ - рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рд░реЛрдорд╛рдВрдЪрдХ рдпреЛрдЬрдирд╛рдПрдБ рд╣реИрдВ! GitHub рдкрд░ рд╣рдорд╛рд░реЗ рдЧрд░реНрдо рдФрд░ рд╕реНрд╡рд╛рдЧрдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рдореБрджрд╛рдп рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВред



рдЗрд╕реЗ рднреА рджреЗрдЦреЗрдВ: рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП 7 рдирд┐рдГрд╢реБрд▓реНрдХ рдкрд╛рдареНрдпрдХреНрд░рдо

Source: https://habr.com/ru/post/hi474240/


All Articles