
рдореИрдВ рдорд▓реНрдЯреА-рдЯреЗрдиреЗрдВрд╕реА рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдирд╣реАрдВ рджреВрдВрдЧрд╛, рдЙрдиреНрд╣реЛрдВрдиреЗ рдкрд╣рд▓реЗ рднреА рдХрдИ рдмрд╛рд░ рдпрд╣рд╛рдВ рдФрд░ рдпрд╣рд╛рдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ ред рдФрд░ рд▓реЗрдЦ рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рд╕реАрдзреЗ рдЬрд╛рдирд╛ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ:
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреБрд░рдВрдд рдорд▓реНрдЯреАрдЯреИрдиреЗрдВрдЯ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ?
рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреЗрд╡рд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдкрд░ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЙрддреНрдкрд╛рдж рдХреЗ рд░реВрдк рдореЗрдВ рдмреЙрдХреНрд╕рд┐рдВрдЧ рдпрд╛ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдЧреНрд░рд╛рд╣рдХ рдПрдХ рдмреЙрдХреНрд╕ рдЦрд░реАрджрддрд╛ рд╣реИ рдФрд░ рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреИрдирд╛рдд рдХрд░рддрд╛ рд╣реИ (рдРрд╕реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ)ред
рд▓реЗрдХрд┐рди рд╕рдордп рдХреЗ рд╕рд╛рде, рдбреЗрд╡рд▓рдкрд░ рдХрдВрдкрдиреА рдпрд╣ рд╕реЛрдЪ рд╕рдХрддреА рд╣реИ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рд░рдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рдЗрд╕реЗ рдХрд┐рд░рд╛рдП рдкрд░ рджрд┐рдпрд╛ рдЬрд╛рдП (рд╕реЗрд╡рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░)ред рдЗрд╕ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╡рд┐рдзрд┐ рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдХрдВрдкрдиреА рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдлрд╛рдпрджреЗ рд╣реИрдВред рдЧреНрд░рд╛рд╣рдХ рдЬрд▓реНрджреА рд╕реЗ рдПрдХ рдХрд╛рд░реНрдп рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рддреИрдирд╛рддреА рдФрд░ рдкреНрд░рд╢рд╛рд╕рди рдХреА рдЪрд┐рдВрддрд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗред рдЖрд╡реЗрджрди рдХрд┐рд░рд╛рдП рдкрд░ рд▓реЗрддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдмрдбрд╝реЗ рдПрдХрдореБрд╢реНрдд рдирд┐рд╡реЗрд╢ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдХрдВрдкрдиреА рдирдП рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ, рд╕рд╛рде рд╣реА рдирдП рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧреА: рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рддреИрдирд╛рдд рдХрд░рдирд╛, рдкреНрд░рд╢рд╛рд╕рди рдХрд░рдирд╛, рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛, рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рджреМрд░рд╛рди рдбреЗрдЯрд╛ рдХрд╛ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рдирд╛, рдбреЗрдЯрд╛ рдмреИрдХрдЕрдк, рдЧрддрд┐ рдФрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдирд╛, рдпрджрд┐ рд╡реЗ рд╣реЛрддреЗ рд╣реИрдВ рддреЛ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдареАрдХ рдХрд░рдирд╛ред
рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдорд▓реНрдЯреА-рдЯреЗрдиреЗрдВрдЯ рдХреНрдпреЛрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?
рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЗрд╕реЗ рдмрд╣реБ-рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рддрдм рдирд┐рдореНрди рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреА: рдкреНрд░рддреНрдпреЗрдХ рдЧреНрд░рд╛рд╣рдХ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкрдЯреНрдЯреЗ рдкрд░ рджрд┐рдП рдЧрдП рдЖрд╡реЗрджрди рдХреЗ рд╕рд╛рде рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдПрдХ рд╕рдорд░реНрдкрд┐рдд рд╕реНрдЯреИрдВрдб рддреИрдирд╛рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдорд╣рдВрдЧрд╛ рд╣реИ, рджреЛрдиреЛрдВ рдХреНрд▓рд╛рдЙрдб рд╕реНрдЯреИрдВрдб рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЦрдкрдд рдФрд░ рдкреНрд░рд╢рд╛рд╕рди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВред рдЖрд╡реЗрджрди рдореЗрдВ рдмрд╣реБ-рдХрд┐рд░рд╛рдпреЗрджрд╛рд░реА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд▓рд╛рднрджрд╛рдпрдХ рд╣реИ рддрд╛рдХрд┐ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрдИ рдЧреНрд░рд╛рд╣рдХреЛрдВ (рд╕рдВрдЧрдардиреЛрдВ) рдХреА рд╕реЗрд╡рд╛ рдХрд░ рд╕рдХреЗред
рдпрджрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ 1000 рдЦреАрдВрдЪрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╕рдореВрд╣ рдЧреНрд░рд╛рд╣рдХреЛрдВ (рд╕рдВрдЧрдардиреЛрдВ) рдХреЗ рд▓рд┐рдП рдлрд╛рдпрджреЗрдордВрдж рд╣реИ, рддрд╛рдХрд┐ рдХреБрд▓ рдореЗрдВ рд╡реЗ 1000 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкреНрд░рддрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрд╕реНрдЯреЗрдВрд╕ рдХрд╛ рд╡рд╛рдВрдЫрд┐рдд рднрд╛рд░ рджреЗ рд╕рдХреЗрдВред рдФрд░ рдлрд┐рд░ рдмрд╛рджрд▓ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рд╕рдмрд╕реЗ рдЗрд╖реНрдЯрддрдо рдЙрдкрднреЛрдЧ рд╣реЛрдЧрд╛ред
рдорд╛рди рд▓реЗрдВ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ 20 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ (рд╕рдВрдЧрдарди рдХреЗ рдХрд░реНрдордЪрд╛рд░реА) рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдЧрдарди рджреНрд╡рд╛рд░рд╛ рдХрд┐рд░рд╛рдП рдкрд░ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдлрд┐рд░ рдЖрдкрдХреЛ рд╕рд╣реА рд▓реЛрдб рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрди рд╕рдВрдЧрдардиреЛрдВ рдореЗрдВ рд╕реЗ 50 рдХреЛ рд╕рдореВрд╣ рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рдВрдЧрдардиреЛрдВ рдХреЛ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ рдЕрд▓рдЧ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдПрдХ рд╕рдВрдЧрдарди рдПрдХ рдЖрд╡реЗрджрди рдХреЛ рдХрд┐рд░рд╛рдП рдкрд░ рджреЗрддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдХрд░реНрдордЪрд╛рд░рд┐рдпреЛрдВ рдХреЛ рд╡рд╣рд╛рдВ рдЬрд╛рдиреЗ рджреЗрддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рд╣реИ рдХрд┐ рдЕрдиреНрдп рд╕рдВрдЧрдарди рднреА рдЙрд╕реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдмрд╣реБ-рдХрд┐рд░рд╛рдпреЗрджрд╛рд░реА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрд╡реЗрджрди рдХреЛ рдЕрдм рд╕рдВрдЧрдарди рдХреЗ рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рддреИрдирд╛рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рджреЛ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- рдмрд╛рджрд▓ рдореЗрдВ рдмрд╣реБ-рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдЖрд╡реЗрджрди;
- рдЧреНрд░рд╛рд╣рдХ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХрд▓-рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдЖрд╡реЗрджрдиред
рд╣рдорд╛рд░рд╛ рдЖрд╡реЗрджрди рдЗрд╕реА рддрд░рд╣ рдЖрдпрд╛ рд╣реИ: рдЧреИрд░-рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рд╕реЗ рдмрд╣реБ-рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рддрдХред рдФрд░ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдорд▓реНрдЯреА-рдЯреЗрдиреЗрдВрд╕реА рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдХреБрдЫ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕рд╛рдЭрд╛ рдХрд░реВрдВрдЧрд╛ред
рдЧреИрд░-рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдП рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдмрд╣реБ-рдХрд┐рд░рд╛рдпреЗрджрд╛рд░реА рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВ?
рд╣рдо рддреБрд░рдВрдд рд╡рд┐рд╖рдп рдХреЛ рд╕реАрдорд┐рдд рдХрд░ рджреЗрдВрдЧреЗ, рд╣рдо рдХреЗрд╡рд▓ рд╡рд┐рдХрд╛рд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рд╣рдо рдкрд░реАрдХреНрд╖рдг рдХреЗ рдореБрджреНрджреЛрдВ, рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЬрд╛рд░реА рдХрд░рдиреЗ, рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдФрд░ рдкреНрд░рд╢рд╛рд╕рди рдкрд░ рдирд╣реАрдВ рдЫреВрдПрдВрдЧреЗред рдЗрди рд╕рднреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдореЗрдВ, рдмрд╣реБ-рдХрд┐рд░рд╛рдпреЗрджрд╛рд░реА рдХреЗ рдЙрджреНрднрд╡ рдХреЛ рднреА рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдЕрдм рд╣рдо рдХреЗрд╡рд▓ рд╡рд┐рдХрд╛рд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред
рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдПрдХ рдЖрд╡реЗрджрди рдХреНрдпрд╛ рд╣реИ рдЬреЛ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдирд╣реАрдВ рдерд╛ рдФрд░ рдмрд╣реБ-рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдмрди рдЧрдпрд╛, рдореИрдВ рдЗрд╕рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп, рдЙрдкрдпреЛрдЧ рдХреА рдЧрдИ рд╕реЗрд╡рд╛рдУрдВ рдФрд░ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред
рдпрд╣ рдПрдХ ECM рдкреНрд░рдгрд╛рд▓реА (DirectumRX) рд╣реИ, рдЬрд┐рд╕рдореЗрдВ 10 рд╕реЗрд╡рд╛рдПрдВ (5 рдЕрдЦрдВрдб рд╕реЗрд╡рд╛рдПрдВ рдФрд░ 5 рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ) рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЗрди рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдПрдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕рд░реНрд╡рд░ рдкрд░ рдпрд╛ рдХрдИ рд╕рд░реНрд╡рд░реЛрдВ рдкрд░ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╕реЗрд╡рд╛рдПрдБ рд╣реИрдВ- рд╡реЗрдм рд╕реЗрд╡рд╛ - рд╡реЗрдм рдХреНрд▓рд╛рдЗрдВрдЯ (рдмреНрд░рд╛рдЙрдЬрд╝рд░) рдХреА рд╕рд░реНрд╡рд┐рд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдПред
- WCF рд╕реЗрд╡рд╛ - рдбреЗрд╕реНрдХрдЯреЙрдк рдХреНрд▓рд╛рдЗрдВрдЯ (WPF рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ) рдХреА рд╕рд░реНрд╡рд┐рд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдПред
- рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ред
- рдкреГрд╖реНрдарднреВрдорд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ред
- рдкреГрд╖реНрдарднреВрдорд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреА рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ред
- рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдпреЛрдЬрдирд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╕реЗрд╡рд╛
- рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдмреНрд▓реЙрдХ рдирд┐рд╖реНрдкрд╛рджрди рд╕реЗрд╡рд╛
- рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рднрдВрдбрд╛рд░рдг рд╕реЗрд╡рд╛ (рдмрд╛рдЗрдирд░реА рдбреЗрдЯрд╛)ред
- HTML рдореЗрдВ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛ (рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди)ред
- HTML рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рдг рдкрд░рд┐рдгрд╛рдо рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реЗрд╡рд╛
рдкреНрд░рдпреБрдХреНрдд рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдвреЗрд░:
.NET + SQLServer / Postgres + NHibernate + IIS + RabbitMQ + Redis
рддреЛ, рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдмрд╣реБ-рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ? рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрдВрддреНрд░ рдХреЛ рдкрд░рд┐рд╖реНрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдХрд┐рд░рд╛рдпреЗрджрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреНрдЮрд╛рди рдЬреЛрдбрд╝реЗрдВ:
- рдбреЗрдЯрд╛ рднрдВрдбрд╛рд░рдг;
- ORM;
- рдбреЗрдЯрд╛ рдХреИрд╢рд┐рдВрдЧ;
- рдЕрдиреБрд░реЛрдз рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг;
- рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрддрд╛рд░ рд╕рдВрджреЗрд╢;
- рд╡рд┐рдиреНрдпрд╛рд╕;
- рдкреНрд░рд╡реЗрд╢;
- рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдХрд╛рд░реНрдп рдХрд░рдирд╛;
- рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд;
- рд╕рдВрджреЗрд╢ рджрд▓рд╛рд▓ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрддред
рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпреЗ рдореБрдЦреНрдп рд╕реНрдерд╛рди рдереЗ рдЬрд┐рдирдореЗрдВ рд╕реБрдзрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдЖрдЗрдП рдЙрди рдкрд░ рдЕрд▓рдЧ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣рдг рд╡рд┐рдзрд┐ рдЪреБрдирдирд╛
рдЬрдм рдЖрдк рдорд▓реНрдЯреА-рдЯреЗрдиреЗрдВрд╕реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЗрдЦ рдкрдврд╝рддреЗ рд╣реИрдВ, рддреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реА рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣рдг рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдмрд┐рдВрджреБ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рд╣рдорд╛рд░реА рдИрд╕реАрдПрдо рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП, рдореБрдЦреНрдп рднрдВрдбрд╛рд░рдг рдПрдХ рд░рд┐рд▓реЗрд╢рдирд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд▓рдЧрднрдЧ 100 рдЯреЗрдмрд▓ рд╣реИрдВред рдХрдИ рд╕рдВрдЧрдардиреЛрдВ рдХреЗ рдбреЗрдЯрд╛ рдХреЗ рднрдВрдбрд╛рд░рдг рдХреЛ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдП рддрд╛рдХрд┐ рд╕рдВрдЧрдарди A рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕рдВрдЧрдарди B рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рди рджреЗрдЦ рд╕рдХреЗ?
рдХрдИ рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ (рдЗрди рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рд▓рд┐рдЦрд╛ рдЬрд╛ рдЪреБрдХрд╛ рд╣реИ):
- рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдЧрдарди рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрдирд╛рдПрдВ (рдкреНрд░рддреНрдпреЗрдХ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдХреЗ рд▓рд┐рдП);
- рд╕рднреА рд╕рдВрдЧрдардиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдЧрдарди рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдЕрдкрдиреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдПрдВ;
- рд╕рднреА рд╕рдВрдЧрдардиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ "рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ / рд╕рдВрдЧрдарди рдХреБрдВрдЬреА" рдПрдХ рдХреЙрд▓рдо рдЬреЛрдбрд╝реЗрдВред
рд╕реНрдХреАрдо рдХрд╛ рдЪреБрдирд╛рд╡ рдЖрдХрд╕реНрдорд┐рдХ рдирд╣реАрдВ рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкрд╕рдВрджреАрджрд╛ рд╡рд┐рдХрд▓реНрдк рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рд╢рд╛рд╕рди рдХреЗ рдорд╛рдорд▓реЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдорд╛рдорд▓реЗ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИрдВ:
- рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдЬреЛрдбрд╝реЗрдВ (рдПрдХ рдирдпрд╛ рд╕рдВрдЧрдарди рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдХрд┐рд░рд╛рдП рдкрд░);
- рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдХреЛ рд╣рдЯрд╛ рджреЗрдВ (рд╕рдВрдЧрдарди рдиреЗ рдХрд┐рд░рд╛рдП рдкрд░ рд▓реЗрдиреЗ рд╕реЗ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛);
- рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдХреЛ рджреВрд╕рд░реЗ рдХреНрд▓рд╛рдЙрдб рд╕реНрдЯреИрдВрдб рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ (рдХреНрд▓рд╛рдЙрдб рд╕реНрдЯреИрдВрдб рдХреЗ рдмреАрдЪ рд▓реЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХрд░реЗрдВ рдЬрдм рдПрдХ рд╕реНрдЯреИрдВрдб рд▓реЛрдб рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ)ред
рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдорд╛рдорд▓реЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХрд╛ рдореБрдЦреНрдп рдХрд╛рд░реНрдп рд╕рдВрдЧрдарди рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рджреВрд╕рд░реЗ рд╕реНрдЯреИрдВрдб рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реИред рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ рдпрджрд┐ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдХрд╛ рдЕрдкрдирд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╕рд┐рд░рджрд░реНрдж рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк 100 рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдЧрдардиреЛрдВ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдорд┐рд▓рд╛рддреЗ рд╣реИрдВред рддрд╛рд▓рд┐рдХрд╛рдУрдВ рд╕реЗ рдХреЗрд╡рд▓ рдЖрд╡рд╢реНрдпрдХ рдбреЗрдЯрд╛ рдирд┐рдХрд╛рд▓рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдЙрдиреНрд╣реЗрдВ рдХрд┐рд╕реА рдЕрдиреНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВ, рдЬрд╣рд╛рдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдиреНрдп рдХрд┐рд░рд╛рдпреЗрджрд╛рд░реЛрдВ рдХрд╛ рдбреЗрдЯрд╛ рд╣реИ, рдФрд░ рддрд╛рдХрд┐ рдЙрдирдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЕрдВрддрд░ рди рдХрд░реЗрдВред
рдЕрдЧрд▓рд╛ рдорд╛рдорд▓рд╛ рдПрдХ рдирдП рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╣реИред рдорд╛рдорд▓рд╛ рднреА рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИред рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдЬреЛрдбрд╝рдирд╛ рд╕рд┐рд╕реНрдЯрдо рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ, рдЕрдзрд┐рдХрд╛рд░реЛрдВ рдХреЛ рднрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЖрдк рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░ рд╕рдХреЗрдВред рдпрд╣ рдХрд╛рд░реНрдп рдПрдХ рд╕рдВрджрд░реНрдн рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдХреНрд▓реЛрди рдХрд░рдХреЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдкрдХреА рдЬрд░реВрд░рдд рдХреА рд╕рднреА рдЪреАрдЬреЗрдВ рд╣реИрдВред
рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рд╣рдЯрд╛рдиреЗ рдХрд╛ рдорд╛рдорд▓рд╛ рдмрд╣реБрдд рдЖрд╕рд╛рдиреА рд╕реЗ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдХреЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрди рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдПрдХ рдпреЛрдЬрдирд╛ рдЪреБрдиреА: рдПрдХ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ - рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ ред
ORM
рд╣рдордиреЗ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣рдг рд╡рд┐рдзрд┐ рдХреЛ рдЪреБрдирд╛, рдЕрдЧрд▓рд╛ рд╕рд╡рд╛рд▓: рдЪрдпрдирд┐рдд рдпреЛрдЬрдирд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдУрдЖрд░рдПрдо рдХреИрд╕реЗ рд╕рд┐рдЦрд╛рдирд╛ рд╣реИ?
рд╣рдо рдирд┐рд╣рд░реНрдиреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдерд╛ рдХрд┐ рдирд┐рдмрд░реНрдиреЗрдЯ рдХрдИ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗ рдФрд░ рд╕рдордп-рд╕рдордп рдкрд░ рджрд╛рдИрдВ рдУрд░ рд╕реНрд╡рд┐рдЪ рдХрд░реЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, http рдЕрдиреБрд░реЛрдз рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рд╕рдВрдЧрдарди рдП рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдП рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдпрджрд┐ рдЕрдиреБрд░реЛрдз рд╕рдВрдЧрдарди рдмреА рд╕реЗ рд╣реИ, рддреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдмреАред
NHibernate рдХреЗ рдкрд╛рд╕ рдРрд╕рд╛ рдЕрд╡рд╕рд░ рд╣реИред рдЖрдкрдХреЛ NHibernate.Connection.DriverConnectionProvider рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЬрдм рднреА NHibernate рдбреЗрдЯрд╛рдмреЗрд╕ рдХрдиреЗрдХреНрд╢рди рдЦреЛрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП DriverConnectionProvider рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдВ рд╣рдо рдЗрд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдПрдХ рдХреЗ рд╕рд╛рде рдмрджрд▓ рджреЗрдВрдЧреЗ:
public class MyDriverConnectionProvider : DriverConnectionProvider { protected override string ConnectionString => TenantRegistry.Instance.CurrentTenant.ConnectionString; }
TenantRegistry рдХреНрдпрд╛ рд╣реИред Instance.CurrentTenant рдореИрдВ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж рдмрддрд╛рдКрдВрдЧрд╛ред
рдбреЗрдЯрд╛ рдХреИрд╢рд┐рдВрдЧ
рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдХрдо рдХрд░рдиреЗ рдпрд╛ рдХрдИ рдмрд╛рд░ рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдХреА рдЧрдгрдирд╛ рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╕рд░ рд╕реЗрд╡рд╛рдПрдВ рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╢ рдХрд░рддреА рд╣реИрдВред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдХреИрд╢ рдХреЛ рддреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдпрджрд┐ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдбреЗрдЯрд╛ рдХреИрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рд╕рдВрдЧрдарди рдХреЗ рдбреЗрдЯрд╛ рдХреИрд╢ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕рдВрдЧрдарди рд╕реЗ рдЕрдиреБрд░реЛрдз рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордп рдХрд┐рдпрд╛ рдЬрд╛рдПред рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрдкрд╛рдп рдкреНрд░рддреНрдпреЗрдХ рдХреИрд╢ рдХреА рдХреБрдВрдЬреА рдореЗрдВ рдПрдХ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЬреЛрдбрд╝рдирд╛ рд╣реИ:
var tenantCacheKey = cacheKey + TenantRegistry.Instance.CurrentTenant.Id;
рдкреНрд░рддреНрдпреЗрдХ рдХреИрд╢ рдмрдирд╛рддреЗ рд╕рдордп рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдХреИрд╢ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрдирд╛ рднреВрд▓ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреИрд╢ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХреЛ рдПрдХрдЬреБрдЯ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХреИрд╢рд┐рдВрдЧ рддрдВрддреНрд░ рдмрдирд╛рдПрдВ рдЬреЛ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░реЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдмреЙрдХреНрд╕ рд╕реЗ рдХреИрд╢ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рд▓реЙрдЧрд┐рдВрдЧ
рдЬрд▓реНрджреА рдпрд╛ рдмрд╛рдж рдореЗрдВ, рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЖрдкрдХреЛ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рдиреЗ рдФрд░ рдЙрд╕рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдкрд╣рд▓рд╛ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдХрд┐рд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдФрд░ рдХрд┐рд╕ рд╕рдВрдЧрдарди рдХреА рдУрд░ рд╕реЗ рдпреЗ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЧрдИ?
рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдЬрдм рд▓реЙрдЧ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдореЗрдВ рдПрдХ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдФрд░ рдПрдХ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрджреЗрд╢ рд╕рдордп:
2019-05-24 17:05:27.985 <message> [User2 :Tenant1] 2019-05-24 17:05:28.126 <message> [User3 :Tenant2] 2019-05-24 17:05:28.173 <message> [User4 :Tenant3]
рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдпрд╣ рдирд╣реАрдВ рд╕реЛрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд▓реЙрдЧ рдХреЛ рдХрд┐рд╕ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реИ, рдпрд╣ рд▓реЙрдЧрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЗ "рд╣реБрдб рдХреЗ рдиреАрдЪреЗ" рд╕реНрд╡рдЪрд╛рд▓рд┐рдд, рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╣рдо NLog рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕ рдкрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ред рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ NLog.LayoutRenderers.LayoutRenderer рд╣реИ , рдЬреЛ рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рд▓реЙрдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЗ рд▓рд┐рдП рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛:
[LayoutRenderer("tenant")] public class TenantLayoutRenderer : LayoutRenderer { protected override void Append(StringBuilder builder, LogEventInfo logEvent) { builder.Append(TenantRegistry.Instance.CurrentTenant.Id); } }
рдФрд░ рдлрд┐рд░ рд▓реЙрдЧ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдЗрд╕ LayoutRenderer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:
<target layout="${odate} ${message} [${user} :${tenant}]"/>
рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди
рдЙрдкрд░реЛрдХреНрдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ, рдореИрдВрдиреЗ рдЕрдХреНрд╕рд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛:
TenantRegistry.Instance.CurrentTenant
рдпрд╣ рдмрддрд╛рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЙрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╣рдо рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ:
рдХреЛрдИ рднреА рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди (рдПрдХ HTTP рдЕрдиреБрд░реЛрдз рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛, рдПрдХ рдХрддрд╛рд░ рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛, рдПрдХ рдЕрд▓рдЧ рдереНрд░реЗрдб рдореЗрдВ рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдп рдХрд░рдирд╛) рдХреБрдЫ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рдХрд┐рд╕реА рднреА рд╕реНрдерд╛рди рдкрд░ рдХреЛрдИ рднреА рдкреВрдЫ рд╕рдХрддрд╛ рд╣реИ: "рдХрд┐рд╕ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдХреЗ рд▓рд┐рдП рдпрд╣ рдзрд╛рдЧрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?" рдпрд╛ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ, "рд╡рд░реНрддрдорд╛рди рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдХреНрдпрд╛ рд╣реИ?"
TenantRegistry.Instance.CurrentTenant рд╡рд░реНрддрдорд╛рди рдзрд╛рд░рд╛ рдХреЗ рд▓рд┐рдП рд╡рд░реНрддрдорд╛рди рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рд╣реИред рд╕реНрдЯреНрд░реАрдо рдФрд░ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдХреЛ рд╣рдорд╛рд░реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡реЗ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ HTTP рдЕрдиреБрд░реЛрдз рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордп рдпрд╛ рдХрддрд╛рд░ рд╕реЗ рдПрдХ рд╕рдВрджреЗрд╢ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддреЗ рд╕рдордпред рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдХреЛ рдПрдХ рдзрд╛рд░рд╛ рдореЗрдВ рдмрд╛рдБрдзрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
рдПрдХ рдереНрд░реЗрдб рд╕реЗ рдмрдВрдзрд╛ рдПрдХ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдХреЛрдб рдореЗрдВ рдХрд╣реАрдВ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЯреЗрдиреЗрдВрдЯ рд░реАрдЬреЗрдВрд╕реА рд╕реЗ рд╕рдВрдкрд░реНрдХ рдХрд░рдХреЗ - рдпрд╣ рдПрдХ рд╕рд┐рдВрдЧрд▓рдЯрди рд╣реИ, рдЬреЛ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрдХреНрд╕реЗрд╕ рдкреНрд╡рд╛рдЗрдВрдЯ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдХрдиреЗрдХреНрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд╣рд░реНрдиреЗрдЯ рдФрд░ NLog рдЗрд╕ рд╕рд┐рдВрдЧрд▓рдЯрди (рд╡рд┐рд╕реНрддрд╛рд░ рдмрд┐рдВрджреБрдУрдВ рдкрд░) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдХрд╛рд░реНрдп
рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рдЕрдХреНрд╕рд░ рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдп рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдЯрд╛рдЗрдорд░ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдп рд╕рдВрдЧрдарди рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдкреНрд░рддреНрдпреЗрдХ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рдЯрд╛рдЗрдорд░ рдпрд╛ рдзрд╛рдЧрд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рдПрдХ рдзрд╛рдЧрд╛ / рдЯрд╛рдЗрдорд░ рдХреЗ рднреАрддрд░ рд╡рд┐рднрд┐рдиреНрди рдХрд┐рд░рд╛рдпреЗрджрд╛рд░реЛрдВ рдореЗрдВ рдПрдХ рдХрд╛рд░реНрдп рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЯрд╛рдЗрдорд░ рд╣реИрдВрдбрд▓рд░ рдореЗрдВ, рд╣рдо рдХрд┐рд░рд╛рдпреЗрджрд╛рд░реЛрдВ рдХреЛ рдЫрд╛рдВрдЯрддреЗ рд╣реИрдВ, рдкреНрд░рддреНрдпреЗрдХ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдХреЛ рдПрдХ рдзрд╛рд░рд╛ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ:
рджреЛ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░реЛрдВ рдХреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдкреНрд░рд╡рд╛рд╣ рд╕реЗ рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрджрд┐ рд╣рдо рдПрдХ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рджреВрд╕рд░рд╛ рдкреНрд░рд╡рд╛рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдо рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдзрд╛рдЧреЗ / рдЯрд╛рдЗрдорд░ рдХрд╛ рдЙрддреНрдкрд╛рджрди рди рд╣реЛред
рдПрдХ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдХреЗ рд╕рд╛рде http рдЕрдиреБрд░реЛрдз рдХреЛ рдХреИрд╕реЗ рд╕рд╣рд╕рдВрдмрдВрдзрд┐рдд рдХрд░реЗрдВ
рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ http рдЕрдиреБрд░реЛрдз рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╡рд╣ рдХрд┐рд╕ рд╕рдВрдЧрдарди рд╕реЗ рдЖрдпрд╛ рд╣реИред рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрд░рдорд╛рдгрд┐рдд рд╣реИ, рддреЛ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреБрдХреА (рдпрджрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рдпрд╛ JWT рдЯреЛрдХрди рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдЕрднреА рддрдХ рдкреНрд░рдорд╛рдгрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрдирд╛рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдПрдХ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╡реЗрдмрд╕рд╛рдЗрдЯ рдЦреЛрд▓реА рд╣реИ рдФрд░ рдкреНрд░рдорд╛рдгрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд╣ рдПрдХ рд▓реЙрдЧрд┐рди рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдиреБрд░реЛрдз рднреЗрдЬрддрд╛ рд╣реИред рдЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рддрд▓рд╛рд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рд╕рдВрдЧрдарди рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ?
рд╕рд╛рде рд╣реА, рдЖрд╡реЗрджрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдЧрд┐рди рдкреЗрдЬ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдирд╛рдо рдЕрдиреБрд░реЛрдз рдкреНрд░рд╛рдкреНрдд рд╣реЛрдВрдЧреЗ, рдФрд░ рдпрд╣ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрдЧрдардиреЛрдВ рдХреЗ рд▓рд┐рдП рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдХреА рднрд╛рд╖рд╛ред
рдЕрдирд╛рдо http- рдЕрдиреБрд░реЛрдз рдФрд░ рд╕рдВрдЧрдарди (рдХрд┐рд░рд╛рдпреЗрджрд╛рд░) рдХреЗ рд╕рд╣рд╕рдВрдмрдВрдз рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рдВрдЧрдардиреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдк-рдбреЛрдореЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЙрдкрдбреЛрдореЗрди рдХрд╛ рдирд╛рдо рд╕рдВрдЧрдарди рдХреЗ рдирд╛рдо рд╕реЗ рдмрдирд╛ рд╣реИред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдбреЛрдореЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП:
https://company1.service.com https://company2.service.com
рдЗрди рдкрддреЛрдВ рдкрд░ рдПрдХ рд╣реА рдорд▓реНрдЯреА-рдЯреЗрдиреЗрдВрдЯ рд╡реЗрдм рд╕реЗрд╡рд╛ рдЙрдкрд▓рдмреНрдз рд╣реИред рд▓реЗрдХрд┐рди рдЕрдм рд╕реЗрд╡рд╛ рд╕рдордЭрддреА рд╣реИ рдХрд┐ рдХрд┐рд╕ рд╕рдВрдЧрдарди рд╕реЗ рдПрдХ рдЕрдирд╛рдо http рдЕрдиреБрд░реЛрдз рдЖрдПрдЧрд╛, рдЬреЛ рдбреЛрдореЗрди рдирд╛рдо рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИред
рдбреЛрдореЗрди рдирд╛рдо рдФрд░ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдХрд╛ рдмрдВрдзрди рд╡реЗрдм рд╕реЗрд╡рд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
<tenant name="company1" db="database1" host="company1.service.com" /> <tenant name="company2" db="database2" host="company2.service.com" />
рд╡рд┐рдиреНрдпрд╛рд╕ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
Mikroservisyред рдбреЗрдЯрд╛ рднрдВрдбрд╛рд░рдг
рдЬрдм рдореИрдВрдиреЗ рдХрд╣рд╛ рдХрд┐ рдИрд╕реАрдПрдо рдкреНрд░рдгрд╛рд▓реА рдХреЛ 100 рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдореИрдВрдиреЗ рдЕрдЦрдВрдб рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреАред рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдПрдХ microservice рдХреЛ рдПрдХ рд░рд┐рд▓реЗрд╢рдирд▓ рд╕реНрдЯреЛрд░реЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЗрд╕рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 2-3 рдЯреЗрдмрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдЗрдХреНрд░реЛрд╕рд┐рд╕реНрдЯ рдореЗрдВ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рднрдВрдбрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рдЗрд╕рдХреА рдкрд╣реБрдВрдЪ рд╣реЛрддреА рд╣реИред рдФрд░ рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд░ рддрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░реЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдПред
рд▓реЗрдХрд┐рди рд╣рдо рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рдЧрдП: рд╣рдордиреЗ рд╕рдВрдЧрдарди рдХреЗ рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдпрджрд┐ рдПрдХ рдорд╛рдЗрдХреНрд░реЛрд╕реИрд╕ рд╕рд░реНрд╡рд┐рд╕ рдХреЗ рд▓рд┐рдП рд░рд┐рд▓реЗрд╢рдирд▓ рд╕реНрдЯреЛрд░реЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рдпрд╣ рдореМрдЬреВрджрд╛ рд╕рдВрдЧрдарди рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдбреЗрдЯрд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕реНрдЯреЛрд░реЗрдЬ рдореЗрдВ рди рдмрд┐рдЦрд░реЗ, рд▓реЗрдХрд┐рди рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХрддреНрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЕрдЦрдВрдб рд╕реЗрд╡рд╛рдПрдВ рд╕рдорд╛рди рдбреЗрдЯрд╛рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреА рд╣реИрдВред
рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдЯреЗрдмрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рдореЛрдиреЛрд▓рд┐рде рдпрд╛ рдЕрдиреНрдп рдорд╛рдЗрдХреНрд░реЛрд╕реЗрд╡рд╛ рдХреЗ рдЯреЗрдмрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдкрдХреНрд╖ рдФрд░ рд╡рд┐рдкрдХреНрд╖ рд╣реИрдВред
рдкреЗрд╢реЗрд╡рд░реЛрдВ:
- рдПрдХ рд╕реНрдерд╛рди рдкрд░ рд╕рдВрдЧрдарди рдбреЗрдЯрд╛;
- рдмреИрдХрдЕрдк рдФрд░ рд╕рдВрдЧрдарди рдбреЗрдЯрд╛ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди;
- рдмреИрдХрдЕрдк рдореЗрдВ, рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдбреЗрдЯрд╛ рд╕реБрд╕рдВрдЧрдд рд╣реИред
рд╡рд┐рдкрдХреНрд╖:
- рд╕реНрдХреЗрд▓рд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп рд╕рднреА рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдПрдХ рд╕рдВрдХреАрд░реНрдг рдЧрд░реНрджрди рд╣реИ (DBMS рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдВ рдмрдврд╝ рдЬрд╛рддреА рд╣реИрдВ);
- рдорд╛рдЗрдХреНрд░реЛрд╕рд░реНрд╡рд┐рд╕реЗрдЬ рдХреЗ рдкрд╛рд╕ рдПрдХ-рджреВрд╕рд░реЗ рдХреА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рддрдХ рднреМрддрд┐рдХ рдкрд╣реБрдВрдЪ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
Mikroservisyред рдХрд┐рд░рд╛рдпреЗрджрд╛рд░реЛрдВ рдХреЗ рдЬреНрдЮрд╛рди рдХреА рд╣рдореЗрд╢рд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред
рдПрдХ рдорд╛рдЗрдХреНрд░реЛрд╕рд┐рд╕реНрдЯ рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБ-рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ, рдЬреЛ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ HTML рдореЗрдВ рдмрджрд▓рдиреЗ рдореЗрдВ рд▓рдЧреА рд╣реБрдИ рд╣реИред
рд╕реЗрд╡рд╛ рдХреНрдпрд╛ рдХрд░рддреА рд╣реИ:
- рдХрд┐рд╕реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдХрдирд╡рд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП RabbitMQ рдХрддрд╛рд░ рд╕реЗ рдПрдХ рд╕рдВрджреЗрд╢ рд▓реЗрддрд╛ рд╣реИред
- рд╕рдВрджреЗрд╢ рд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдФрд░ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ
- рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕рдВрдЧреНрд░рд╣рдг рд╕реЗрд╡рд╛ рд╕реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВред
- рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдФрд░ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдкреНрд░реЗрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ
- HTML рдХреЛ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рджреЗрддрд╛ рд╣реИред
- HTML рдХреЛ рд░реВрдкрд╛рдВрддрд░рдг рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рд╕реЗрд╡рд╛ рдореЗрдВ рджреЗрддрд╛ рд╣реИред
рд╕реЗрд╡рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИ рдФрд░ рд░реВрдкрд╛рдВрддрд░рдг рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИред рдЙрдиреНрд╣реЗрдВ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░реЛрдВ рдХрд╛ рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдЬреНрдЮрд╛рди рд╣реИ: рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдкрд╛рд░рдЧрдорди рдореЗрдВ рд╕реЗрд╡рд╛ рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИред
Mikroservisyред рдЙрдк-рдбреЛрдореЗрди рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ
рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛ рд╣реИ рдХрд┐ рдЙрдк-рдбреЛрдореЗрди рдЕрдирд╛рдо http рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВ:
https://company1.service.com https://company2.service.com
рд▓реЗрдХрд┐рди рд╕рднреА рд╕реЗрд╡рд╛рдПрдБ рдЕрдирд╛рдо рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЬреЛ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлрд╝реНрдЯ, http рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд╡реЗ рдЕрдХреНрд╕рд░ рдЗрд╕ рдмрд╛рдд рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣реЛрд╕реНрдЯрдирд╛рдо рдХреНрдпрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ, рд╡реЗ JWT рдЯреЛрдХрди рдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд╕рд╛рде рдЖрдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреБрдХреА рд╕реЗ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред
рдХрд╛ рд╡рд┐рдиреНрдпрд╛рд╕
рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╡реЗ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рди рд╕рдХреЗрдВред рдЕрд░реНрдерд╛рддреН:
- рдХрд┐рд░рд╛рдпреЗрджрд╛рд░реЛрдВ рдХреЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдЬреБрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рддрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ;
- рдХрд┐рд░рд╛рдпреЗрджрд╛рд░реЛрдВ рдХреЛ рдбреЛрдореЗрди рдирд╛рдо рдмрд╛рдБрдзреЗрдВ;
- рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдХреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рднрд╛рд╖рд╛ рдФрд░ рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВред
рдХрд┐рд░рд╛рдпреЗрджрд╛рд░реЛрдВ рдореЗрдВ рдХрдИ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рд╣рдо xml рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ web.config рдирд╣реАрдВ рд╣реИ рдФрд░ рди рд╣реА app.configред рдпрд╣ рдПрдХ рдЕрд▓рдЧ xml рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд░рд┐рдмреВрдЯ рдХрд┐рдП рдмрд┐рдирд╛ рдкрдХрдбрд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рдПрдХ рдирдП рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкреВрд░реЗ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рди рдХрд░реЗрдВред
рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреА рд╕реВрдЪреА рдХреБрдЫ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
<block name="TENANTS"> <tenant name="Jupiter" db="DirectumRX_Jupiter" login="admin" password="password" hyperlinkUriScheme="jupiter" hyperlinkFileExtension=".jupiter" hyperlinkServer="http://jupiter-rx.directum.ru/Sungero" helpAddress="http://jupiter-rx.directum.ru/Sungero/help" devHelpAddress="http://jupiter-rx.directum.ru/Sungero/dev_help" language="Ru-ru" isAttributesSignatureAbsenceAllowed="false" endorsingSignatureLocksSignedProperties="false" administratorEmail ="admin@jupiter-company.ru" feedbackEmail="support@jupiter-company.ru" isSendFeedbackAllowed="true" serviceUserPassword="password" utcOffset="5" collaborativeEditingEnabled="false" collaborativeEditingForced="false" /> <tenant name="Mars" db="DirectumRX_Mars" login="admin" password="password" hyperlinkUriScheme="mars" hyperlinkFileExtension=".mars" hyperlinkServer="http://mars-rx.directum.ru/Sungero" helpAddress="http://mars-rx.directum.ru/Sungero/help" devHelpAddress="http://mars-rx.directum.ru/Sungero/dev_help" language="Ru-ru" isAttributesSignatureAbsenceAllowed="false" endorsingSignatureLocksSignedProperties="false" administratorEmail ="root@mars-ooo.ru" feedbackEmail="support@mars-ooo.ru" isSendFeedbackAllowed="true" serviceUserPassword="password" utcOffset="-1" collaborativeEditingEnabled="false" collaborativeEditingForced="false" /> </block>
рдЬрдм рдХреЛрдИ рдирдпрд╛ рд╕рдВрдЧрдарди рдХрд┐рд╕реА рд╕реЗрд╡рд╛ рдХреЛ рдХрд┐рд░рд╛рдП рдкрд░ рд▓реЗрддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдПрдХ рдирдпрд╛ рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдЬреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдпрд╣ рд╡рд╛рдВрдЫрдиреАрдп рд╣реИ рдХрд┐ рдЕрдиреНрдп рд╕рдВрдЧрдардиреЛрдВ рдХреЛ рдпрд╣ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рд╕реЗрд╡рд╛рдУрдВ рдХрд╛ рдкреБрдирдГ рдЖрд░рдВрдн рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╣рдо рдкрд░ рд╕рднреА рд╕реЗрд╡рд╛рдПрдБ рдкреБрдирдГ рдЖрд░рдВрдн рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рд╡рд┐рдиреНрдпрд╛рд╕ рд▓реЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реЗрд╡рд╛рдПрдБ (рдореЛрдиреЛрд▓рд┐рде) рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред
рдкрд░рд┐рдгрд╛рдо
рдЬрдм рдХреЛрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрд╣реБ-рдХрд┐рд░рд╛рдпреЗрджрд╛рд░ рдмрди рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдХрд╛рд╕ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдирд╛рдЯрдХреАрдп рд░реВрдк рд╕реЗ рдмрдврд╝ рдЧрдИ рд╣реИред рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЖрдкрдХреЛ рдмрд╣реБрдкрд░рддрддрд╛ рдХреА рдЖрджрдд рд╣реЛрддреА рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рд╕рдорд░реНрдерди рдХреЛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддреЗ рд╣реИрдВред
рдпрд╣ рднреА рдпрд╛рдж рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рдорд▓реНрдЯреА-рдЯреЗрдиреЗрдВрд╕реА рди рдХреЗрд╡рд▓ рд╡рд┐рдХрд╛рд╕ рд╣реИ, рдмрд▓реНрдХрд┐ рдкрд░реАрдХреНрд╖рдг, рдкреНрд░рд╢рд╛рд╕рди, рддреИрдирд╛рддреА, рдЕрджреНрдпрддрди, рдмреИрдХрдЕрдк, рдбреЗрдЯрд╛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рднреА рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рдФрд░ рдмрд╛рд░ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмреЗрд╣рддрд░ред