.NET рджреБрдирд┐рдпрд╛ рдореЗрдВ System.Transactions рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░


рдХреНрдпрд╛ рдЖрдкрдиреЗ C # рдореЗрдВ using (var scope = new TransactionScope(TransactionScopeOption.Required)) рдирд┐рд░реНрдорд╛рдг рджреЗрдЦрд╛ рд╣реИ? рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ using рдмреНрд▓реЙрдХ рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рдХреЛрдб рд▓реЗрдирджреЗрди рдореЗрдВ рд╣реИ рдФрд░ рдЗрд╕ рдмреНрд▓реЙрдХ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рдмрд╛рдж рдкрд░рд┐рд╡рд░реНрддрди рдкреНрд░рддрд┐рдмрджреНрдз рд╣реЛрдВрдЧреЗ рдпрд╛ рд╡рд╛рдкрд╕ рд▓реЗ рдЬрд╛рдПрдВрдЧреЗред рдпрд╣ рддрдм рддрдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдЬрдм рддрдХ рдЖрдк рдЧрд╣рд░реА рдЦреБрджрд╛рдИ рд╢реБрд░реВ рдирд╣реАрдВ рдХрд░рддреЗред рдФрд░ рдЖрдк рдЬрд┐рддрдирд╛ рдЧрд╣рд░рд╛ рдЦреЛрджрддреЗ рд╣реИрдВ, "рд╡рд┐рдпрд░ рдФрд░ рд╡рд┐рдпрд░" рд╣реЛрддрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрдм рдореИрдВ TransactionScope рд╡рд░реНрдЧ рд╕реЗ рдЕрдзрд┐рдХ рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рдЧрдпрд╛ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, .NET рд▓реЗрдирджреЗрди рдХреЗ рд╕рд╛рде, рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдПрдХ рдкреВрд░рд╛ рдЧреБрдЪреНрдЫрд╛ рдЙрддреНрдкрдиреНрди рд╣реБрдЖред

TransactionScope рд╡рд░реНрдЧ рдХреНрдпрд╛ рд╣реИ? рдЬреИрд╕реЗ рд╣реА рд╣рдо using (var scope = new TransactionScope()) рдирд┐рд░реНрдорд╛рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпрд╛ рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рд╕рдм рдХреБрдЫ рддреБрд░рдВрдд рдЯреНрд░рд╛рдВрдЬреЗрдХреНрд╢рдирд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ? "рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ" рдФрд░ "рд▓реЗрдирджреЗрди рдкреНрд░рдмрдВрдзрдХ" рдХреНрдпрд╛ рд╣реИрдВ? рдХреНрдпрд╛ рдореИрдВ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рдпрд╣ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ " TransactionScope рдЙрджрд╛рд╣рд░рдг" рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ? рдПрдХ рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рдХреНрдпрд╛ рд╣реИ рдФрд░ рдХреНрдпрд╛ рдпрд╣ рд╕рдЪ рд╣реИ рдХрд┐ SQL Server рдпрд╛ Oracle рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рдПрдХ рд╡рд┐рддрд░рд┐рдд .NET рд▓реЗрдирджреЗрди рдХреЗ рд╕рдорд╛рди рд╣реИ?

рдЗрд╕ рдкреНрд░рдХрд╛рд╢рди рдореЗрдВ, рдореИрдВрдиреЗ рдЙрди рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдЬреЛ рдЗрди рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рдЦреЛрдЬрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреА рд╣реИрдВ рдФрд░ .NET рджреБрдирд┐рдпрд╛ рдореЗрдВ рд▓реЗрдирджреЗрди рдХреА рд╕рдордЭ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреА рд╣реИрдВред

рд╕рд╛рдордЧреНрд░реА
рдкрд░рд┐рдЪрдп
рд▓реЗрдирджреЗрди рдХреНрдпрд╛ рд╣реИрдВ рдФрд░ рд╡реЗ рдХрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддреЗ рд╣реИрдВ?
рдХреНрдпрд╛ рд▓реЗрдирджреЗрди рдпрд╣рд╛рдБ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ
рдЯреАрдПрд▓; рдбреАрдЖрд░ рдЕрдиреБрднрд╛рдЧ
System.Transactions рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд▓реЗрдирджреЗрди
рдпрд╣ рдХреНрдпрд╛ рд╣реИ
рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ
рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░
TransactionScope рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд▓реЗрдирджреЗрди рдкреНрд░рдпреЛрдЬреНрдпрддрд╛
рдЪрдВрдЪрд▓ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг
рдЯреАрдПрд▓; рдбреАрдЖрд░ рдЕрдиреБрднрд╛рдЧ
рд╡рд┐рддрд░рд┐рдд рд▓реЗрди-рджреЗрди
рдпрд╣ рдХреНрдпрд╛ рд╣реИ
рд▓реЗрди-рджреЗрди рдХреЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓
рджреНрд╡рд┐рдзреНрд░реБрд╡реАрдп рдирд┐рд░реНрдзрд╛рд░рдг
System.Transations рдзреЛрдЦрд╛ рд╢реАрдЯ
рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рд╕реАрдорд╛рдПрдБ рдФрд░ рд╡рд┐рдХрд▓реНрдк
рддреЛ рдХреНрдпрд╛ рдпрд╣ .NET рдХреЛрд░ рдореЗрдВ рд╣реИ?
рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рдФрд░ рдбрдмреНрд▓реНрдпреВрд╕реАрдПрдл
рдЯреАрдПрд▓; рдбреАрдЖрд░ рдЕрдиреБрднрд╛рдЧ
рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд╛рд▓рдирд╛

рдкрд░рд┐рдЪрдп


рд▓реЗрдирджреЗрди рдХреНрдпрд╛ рд╣реИрдВ рдФрд░ рд╡реЗ рдХрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рддреЗ рд╣реИрдВ?


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


рд▓реЗрдирджреЗрди рдХрд╛ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдЙрджрд╛рд╣рд░рдг рджреЛ рдЦрд╛рддреЛрдВ рдХреЗ рдмреАрдЪ рдзрди рдХрд╛ рд╣рд╕реНрддрд╛рдВрддрд░рдг рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЦрд╛рддрд╛ рд╕рдВрдЦреНрдпрд╛ 2 рд╕реЗ рдмрд┐рдирд╛ рдЦрд╛рддрд╛ рдирдВрдмрд░ 2 рдХреЗ рдкреИрд╕реЗ рд╡рд╛рдкрд╕ рд▓реЗрдирд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИ, рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдЬреИрд╕реЗ рдЦрд╛рддрд╛ рд╕рдВрдЦреНрдпрд╛ 2 рд╕реЗ рдЬрдорд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдЦрд╛рддрд╛ рдирдВрдмрд░ 1 рдХреЛ рд╡рд╛рдкрд╕ рд▓реЗрдирд╛ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рджреЛрдиреЛрдВ рдкрд░рд┐рдЪрд╛рд▓рди рд╡рд╛рдкрд╕ рд▓реЗрдиреЗ рдФрд░ рдЬрдорд╛ рдХрд░рдиреЗ рджреЛрдиреЛрдВ рд╣реЛрдВред - рддреБрд░рдВрдд рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ред рдпрджрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рджреВрд╕рд░рд╛ рдСрдкрд░реЗрд╢рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдк рдЗрд╕ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ "рд╕рднреА рдпрд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ" рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╡рд╛рдВрдЫрдиреАрдп рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рднреА рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╕рдВрдЪрд╛рд▓рди рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЬреИрд╕реЗ рдХрд┐ рдкрд╛рд╡рд░ рдЖрдЙрдЯреЗрдЬ, рдпрд╛рдиреА рд╣рдо рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдПрдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рд╣реА рдпрд╣ рдмрд╣рд╛рд▓реА рдХреЗ рдмрд╛рдж рдЙрдкрд▓рдмреНрдз рд╣реЛрддрд╛ рд╣реИред

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

рд╣рдо рджреЛ рдЦрд╛рддреЛрдВ рдХреЗ рдмреАрдЪ рдкреИрд╕реЗ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред рдкрд╣рд▓реА рддрд╕реНрд╡реАрд░ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рджрд┐рдЦрд╛рддреА рд╣реИ рдЬрдм рдЦрд╛рддрд╛ рд╕рдВрдЦреНрдпрд╛ 1 рд╕реЗ рдЦрд╛рддрд╛ рд╕рдВрдЦреНрдпрд╛ 2 рддрдХ 50 рд░реВрдмрд▓ рдХрд╛ рд╣рд╕реНрддрд╛рдВрддрд░рдг рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рдерд╛ред рд╣рд░рд╛ рд░рдВрдЧ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдПрдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реИ (рдбреЗрдЯрд╛ рдкреВрд░реНрдг рд╣реИ)ред


рдЕрдм рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рд╕реНрддрд╛рдВрддрд░рдг рд▓реЗрдирджреЗрди рдХреЗ рдмрд╛рд╣рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЦрд╛рддрд╛ рд╕рдВрдЦреНрдпрд╛ 1 рд╕реЗ рдкреИрд╕реЗ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рдмрд╛рдж, рдПрдХ рд╡рд┐рдлрд▓рддрд╛ рд╣реБрдИ, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рд╡рд╛рдкрд╕ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдзрди рдЦрд╛рддрд╛ рд╕рдВрдЦреНрдпрд╛ 2 рдореЗрдВ рдЬрдорд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рд╕рд┐рд╕реНрдЯрдо рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕реНрдерд┐рддрд┐ (рд▓рд╛рд▓ рд░рдВрдЧ) рдореЗрдВ рд╣реЛрдЧрд╛ред


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


рдореИрдВ рд╣рдорд╛рд░реА рдХрдВрдкрдиреА рдХреЗ рдЕрдиреБрднрд╡ рд╕реЗ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ рд▓реЗрдирджреЗрди рдЙрдкрдпреЛрдЧреА рд╣реЛрддреЗ рд╣реИрдВ: рд╕рд╛рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рд▓реЗрдЦрд╛рдВрдХрди (рдХреБрдЫ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рдФрд░ рд░рд╛рд╕реНрддреЗ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рдорд╛рдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП рд▓реЗрдЦрд╛рдВрдХрди), рднрдВрдбрд╛рд░рдг рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд▓реЗрдЦрд╛рдВрдХрди (рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рдорд╛рди рдкрд░ рд░рд╣рдиреЗ рд╡рд╛рд▓реЗ рдХрдорд░реЗ рдХреА рдорд╛рддреНрд░рд╛ рдХреЗ рд▓рд┐рдП рд▓реЗрдЦрд╛рдВрдХрди, рдПрдХ рдХрдорд░реЗ рдХреА рдорд╛рддреНрд░рд╛) рдорд╛рд▓ рдХреА рдирд┐рдпреБрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП рдирд┐: рд╢реБрд▓реНрдХ, рдорд╛рд▓ рдХреА рдорд╛рддреНрд░рд╛ рдЬреЛ рдХрд░реНрдордЪрд╛рд░реА рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рднрдВрдбрд╛рд░рдг рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рддрд┐ рджрд┐рди рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред

рдбреЗрдЯрд╛ рдЕрдЦрдВрдбрддрд╛ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рд╣реЛрдиреЗ рдкрд░ рдЖрдиреЗ рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╕реНрдкрд╖реНрдЯ рд╣реИрдВред рд╕рд┐рд╕реНрдЯрдо рджреНрд╡рд╛рд░рд╛ рджреА рдЧрдИ рдЬрд╛рдирдХрд╛рд░реА рд╕рд┐рд░реНрдл рдЭреВрдареА рдирд╣реАрдВ рд╣реЛрддреА - рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рд╕реЗ рд╕реНрдкрд░реНрд╢ рдЦреЛ рджреЗрддреА рд╣реИ рдФрд░ рдмрдХрд╡рд╛рд╕ рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреА рд╣реИред

рдХреНрдпрд╛ рд▓реЗрдирджреЗрди рдпрд╣рд╛рдБ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ


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

рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╡рд┐рд╖рдп рдбреЛрдореЗрди рд▓реЗрдирджреЗрди (рд╡реНрдпрд╛рдкрд╛рд░ рд▓реЗрдирджреЗрди) рдФрд░ рд╕рд┐рд╕реНрдЯрдо рд▓реЗрдирджреЗрди рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рддреЗ рд╣реИрдВред рджреВрд╕рд░реЗ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЬрдЧрд╣реЛрдВ рдкрд░ рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

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

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

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

System.Transactions рд▓реЗрди-рджреЗрди рдкрд░ рдЬрд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдШрдЯрдирд╛ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред System.Transactions рдЙрдкрдХрд░рдг рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рдЯреНрд░рд╛рдВрдЬреИрдХреНрд╢рди рдореЗрдореЛрд░реА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдСрдкрд░реЗрд╢рди рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рд╢рд╛рд╕реНрддреНрд░реАрдп рдЕрдирд┐рд╡рд╛рд░реНрдпрддрд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рдПрдХ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдСрдкрд░реЗрд╢рди рд╣реИ) рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд▓реЗрдирджреЗрди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдбреАрдмреАрдПрдордПрд╕ рд▓реЗрдирджреЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд╡рд╛рдкрд╕ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд░реЛрд▓ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬрд╝реЗрд╢рди рдореИрдХреЗрдирд┐рдЬрд╝реНрдо (C # - lock , Java - synchronized ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛рдлреА рдХрдо рд╣реЛ рдЬрд╛рддреА рд╣реИред рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХрд╛ рдПрдХ рдФрд░ рд╡рд┐рдХрд╛рд╕ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЯреНрд░рд╛рдВрдЬреЗрдХреНрд╢рдирд▓ рдореЗрдореЛрд░реА рд╣реИ, рдЬрд┐рд╕реЗ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рд╕реНрддрд░ (рддреАрд╕рд░реЗ рдЙрджрд╛рд╣рд░рдг) рдкрд░ рд╕рдорд░реНрдерд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред рдЗрд╕ рддрд░рд╣ рдХреЗ рдЪрдорддреНрдХрд╛рд░ рдХреА рдЙрдореНрдореАрдж рдРрд╕реА рднрд╛рд╖рд╛ рдореЗрдВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдЬрд┐рд╕рдХрд╛ рд▓рд╛рд▓рд┐рддреНрдп рдЗрд╕рдХреА рдФрджреНрдпреЛрдЧрд┐рдХ рдкреНрд░рдпреЛрдЬреНрдпрддрд╛ рдХреЛ рдкрд╛рд░ рдХрд░рддрд╛ рд╣реИ - рдХреНрд▓реЛрдЬрд░ред рдФрд░ рд╢реНрд░рдорд┐рдХ-рдХрд┐рд╕рд╛рди рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдкреНрд▓рдЧ-рдЗрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣реИрдВ рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рдЯреНрд░рд╛рдВрд╕реЗрдХреНрд╢рдирд▓ рдореЗрдореЛрд░реА рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИрдВред

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


рдЯреАрдПрд▓; рдбреАрдЖрд░ рдЕрдиреБрднрд╛рдЧ


рдРрд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рдЕрд╡рд┐рднрд╛рдЬреНрдп (рдкрд░рдорд╛рдгреБ) рдСрдкрд░реЗрд╢рдиреЛрдВ рд╕реЗ рдорд┐рд▓рдХрд░ рдмрдирддреА рд╣реИрдВ, рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рд╕реВрдЪрдирд╛рддреНрдордХ рднреА рд╣реЛред рдбреЗрдЯрд╛ рдЕрдЦрдВрдбрддрд╛ рд╕реЗ рд╕рдордЭреМрддрд╛ рд╣реЛрдиреЗ рдкрд░ рдкреНрд░рддреНрдпреЗрдХ рдЕрд╡рд┐рднрд╛рдЬреНрдп рдСрдкрд░реЗрд╢рди рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЫреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рджреЛ рдЦрд╛рддреЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рдзрди рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреЛ рдЦрд╛рддрд╛ рд╕рдВрдЦреНрдпрд╛ 1 рд╕реЗ рд╡рд╛рдкрд╕ рд▓реЗрдиреЗ рдФрд░ рдЦрд╛рддрд╛ рд╕рдВрдЦреНрдпрд╛ 2 рдореЗрдВ рдЬрдорд╛ рдХрд░рдиреЗ рдХреЗ рджреЛ рдЕрд╡рд┐рднрд╛рдЬреНрдп рд╕рдВрдЪрд╛рд▓рди рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рдСрдкрд░реЗрд╢рди рдбреЗрдЯрд╛ рдХреА рдЕрдЦрдВрдбрддрд╛ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░реЗрдЧрд╛ред рдкреИрд╕рд╛ рдпрд╛ рддреЛ рдХрд╣реАрдВ рдирд╣реАрдВ рдорд┐рдЯрддрд╛ рд╣реИ, рдпрд╛ рдХрд╣реАрдВ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред рдПрдХ рд▓реЗрди-рджреЗрди рдЕрд╡рд┐рднрд╛рдЬреНрдп рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╡реЗ рд╕рднреА рдПрдХ рд╕рд╛рде (рдмреЗрд╢рдХ, рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ) рдпрд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдкреНрд░рджрд░реНрд╢рди рди рдХрд░реЗрдВред рд╣рдо рддрдХрдиреАрдХреА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рдбреЛрдореЗрди рд▓реЗрдирджреЗрди рдФрд░ рд▓реЗрдирджреЗрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЖрдо рддреМрд░ рдкрд░ рдбреЛрдореЗрди рд▓реЗрдирджреЗрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред

System.Transactions рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд▓реЗрдирджреЗрди


рдпрд╣ рдХреНрдпрд╛ рд╣реИ


.NET рджреБрдирд┐рдпрд╛ рдореЗрдВ, рдПрдХ рд▓реЗрдирджреЗрди рдкреНрд░рдмрдВрдзрди рдордВрдЪ рдХреЗ рд░рдЪрдирд╛рдХрд╛рд░реЛрдВ рджреНрд╡рд╛рд░рд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣реИред рдПрдХ рдЯреНрд░рд╛рдВрд╕реЗрдХреНрд╢рдирд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдЗрд╕ рдлреНрд░реЗрдорд╡рд░реНрдХ рдореЗрдВ TransactionScope , TransactionScopeOption , TransactionScopeAsyncFlowOption рдФрд░ TransactionOptions System.Transactions рдирд╛рдо рд╕реНрдерд╛рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдпрджрд┐ рд╣рдо .NET рдорд╛рдирдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╕рдм рдЙрдкрд▓рдмреНрдз рд╣реИ рд╕рдВрд╕реНрдХрд░рдг 2.0 рдХреЗ рд╕рд╛рдеред

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

C # рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд▓реЗрдирджреЗрди рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:

 using (var scope = new System.Transactions.TransactionScope(System.Transactions.TransactionScopeOption.Required)) { // -  ,    . scope.Complete(); } 

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

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдПрдХ рд▓реЗрди-рджреЗрди рд░реЛрд▓рдмреИрдХ рдХреЗ рджреМрд░рд╛рди, рдЗрд╕ рддрд░рд╣ рдХреЗ using рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░ рдХрд┐рдП рдЧрдП рд╕рднреА рдСрдкрд░реЗрд╢рди рд░рджреНрдж рд╣реЛ рдЬрд╛рдПрдВрдЧреЗ? рдФрд░ рдЕрдЧрд░ рдореИрдВрдиреЗ рдПрдХ рдЪрд░ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдорд╛рди рд╕реМрдВрдкрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЪрд░ рдкреБрд░рд╛рдиреЗ рдореВрд▓реНрдп рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛? рдЬрдм рдореИрдВрдиреЗ рдкрд╣рд▓реА рдмрд╛рд░ рдПрдХ рд╕рдорд╛рди рдбрд┐рдЬрд╝рд╛рдЗрди рджреЗрдЦрд╛, рддреЛ рдореИрдВрдиреЗ рдРрд╕рд╛ рд╕реЛрдЪрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рд╡рд╛рдкрд╕ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдмрд╣реБрдд рд╣реА рд╡рд┐рд╢реЗрд╖ ред рдпрджрд┐ рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╛рдкрд╕ рд▓реЗ рдЬрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдпрд╣ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЯреНрд░рд╛рдВрд╕реЗрдХреНрд╢рдирд▓ рдореЗрдореЛрд░реА рд╣реЛрдЧрд╛ред рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпреЗ рд╡рд┐рд╢реЗрд╖ рдкрд░рд┐рд╡рд░реНрддрди рдХреНрдпрд╛ рд╣реИрдВ рдЬреЛ System.Transactions рдЖрдзрд╛рд░ рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓реЗрдирджреЗрди рдореЗрдВ рднрд╛рдЧ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ


System.Transactions рдЖрдзрд╛рд░ рдкрд░ рд▓реЗрди-рджреЗрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛ рдХрд┐ рдПрдХ рд▓реЗрдирджреЗрди рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдпрд╣ рдХрд┐ рдпрд╣ рд▓реЗрдирджреЗрди рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреА рдХреБрдЫ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реИред рдЖрдк рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рд┐рд╕реНрдЯрдо рдХреА рд╕реНрдерд┐рд░ рд╕рдВрдкрддреНрддрд┐ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдХреЗ рд▓реЗрди-рджреЗрди рдХрд╛ рдХрд╛рдо рдЪрд▓ рд░рд╣рд╛ рд╣реИред рдКрдкрд░ рдмрддрд╛рдП рдЧрдП рдкреНрд░рдХрд╛рд░ рдХреЗ using рдмреНрд▓реЙрдХ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдирд╛, рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЕрдЧрд░ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдФрд░ рдПрдХ рд▓реЗрдирджреЗрди рдореЗрдВ рдПрдХ рднрд╛рдЧреАрджрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк Transaction.Enlist Smth рдХреЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдкрдХреЛ рдЗрди рд╡рд┐рдзрд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ - рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдРрд╕реА "рдХреБрдЫ" рд╣реИ рдЬреЛ System.Transactions рд╕реЗ рд▓реЗрдирджреЗрди рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ (рдПрдХ рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд░рд┐рднрд╛рд╖рд╛ рдиреАрдЪреЗ рджреА рдЧрдИ рд╣реИ)ред

рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдХреНрдпрд╛ рд╣реИрдВ? рдпрджрд┐ рд╣рдо C # рд╕реЗ DBMS рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, SQL рд╕рд░реНрд╡рд░ рдпрд╛ Oracle рдбреЗрдЯрд╛рдмреЗрд╕, рддреЛ рд╣рдо рдЖрдорддреМрд░ рдкрд░ рдЙрдкрдпреБрдХреНрдд рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╡реЗ рдкреНрд░рдмрдВрдз рд╕рдВрд╕рд╛рдзрди рд╣реИрдВред рдХреЛрдб рдореЗрдВ, рд╡реЗ System.Data.SqlClient.SqlConnection рдФрд░ Oracle.ManagedDataAccess.Client.OracleConnection рдкреНрд░рдХрд╛рд░ рджреНрд╡рд╛рд░рд╛ Oracle.ManagedDataAccess.Client.OracleConnection ред рд╡реЗ рдпрд╣ рднреА рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ MSMQ System.Transactions рдЖрдзрд╛рд░ рдкрд░ рд▓реЗрдирджреЗрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЬреНрдЮрд╛рди рдФрд░ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реЛрдХрд░, рдЖрдк рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

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

рдЕрдзрд┐рдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдПрдХ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬреЛ рд╡рд┐рд╢реЗрд╖ System.Transactions.IEnlistmentNotification рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдЧреНрд░рд╛рд╣рдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рд╡рд░реНрдЧ рдЙрджрд╛рд╣рд░рдг, рд╕реНрдерд┐рд░ рд╕рдВрдкрддреНрддрд┐ System.Transactions.Transaction.Current рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЗрдирджреЗрди рдореЗрдВ рдПрдХ рднрд╛рдЧреАрджрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реИред рдЗрд╕рдХреЗ рдмрд╛рдж, рд▓реЗрди-рджреЗрди рдкреНрд░рдмрдВрдзрдХ рдЖрд╡рд╢реНрдпрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдХрд╣рддрд╛ рд╣реИред


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

рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХреЗ рдкреНрд░рдХрд╛рд░


рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХреЛ рджреЛ рдмрдбрд╝реЗ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдЯрд┐рдХрд╛рдК рдФрд░ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ред

рдЯрд┐рдХрд╛рдК рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ - рдПрдХ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдЬреЛ рдПрдХ рд▓реЗрдирджреЗрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд╕реВрдЪрдирд╛ рдкреНрд░рдгрд╛рд▓реА рдЕрдиреБрдкрд▓рдмреНрдз рд╣реЛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдХрдВрдкреНрдпреВрдЯрд░ рдкреБрдирд░рд╛рд░рдВрдн рд╣реЛрддрд╛ рд╣реИ)ред рдЕрд╕реНрдерд┐рд░ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ - рдПрдХ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдЬреЛ рд▓реЗрдирджреЗрди рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рд╕реВрдЪрдирд╛ рдкреНрд░рдгрд╛рд▓реА рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИред рдПрдХ рдЕрд╕рдВрдЧрдд рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдХреЗрд╡рд▓ рдореЗрдореЛрд░реА рдореЗрдВ рд▓реЗрдирджреЗрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

рдХреНрд▓рд╛рд╕рд┐рдХ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ DBMS (рдпрд╛ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП DBMS рдбреНрд░рд╛рдЗрд╡рд░) рд╣реИрдВред рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ - рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдЦрд░рд╛рдмреА, рдХрдо рд╕реЗ рдХрдо рдПрдХ рдкрд╛рд╡рд░ рдЖрдЙрдЯреЗрдЬ - DBMS рдХрд╛рдо рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд▓реМрдЯрдиреЗ рдХреЗ рдмрд╛рдж рдбреЗрдЯрд╛ рдЕрдЦрдВрдбрддрд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрдЧрд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЖрдкрдХреЛ рдХреБрдЫ рдЕрд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рд╣рдо рдЙрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗред рдПрдХ рдЧреИрд░-рдирд┐рд░рдВрддрд░ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЙрдкрд░реЛрдХреНрдд рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдЯреНрд░рд╛рдВрд╕реЗрдХреНрд╢рдирд▓ рдореЗрдореЛрд░реА рд╣реИред

TransactionScope рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


TransactionScope рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╕рдордп TransactionScope рдЖрдк рдХреБрдЫ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рд╕реЗрдЯрд┐рдВрдЧ рд╣реИ рдЬреЛ рд░рдирдЯрд╛рдЗрдо рдХреЛ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП:

  1. рдЗрд╕ рд╕рдордп рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд▓реЗрдирджреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ;
  2. рдПрдХ рдирдпрд╛ рдмрдирд╛рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ;
  3. рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдПрдХ рд▓реЗрдирджреЗрди рдХреЗ рдмрд╛рд╣рд░ рдПрдХ using рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВред

System.Transactions.TransactionScopeOption рдЧрдгрди рдЗрди рд╕рднреА рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИред

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

рдирд┐рд░реНрдорд╛рдг рдХреЗ рджреМрд░рд╛рди рд▓реЗрдирджреЗрди рдЕрд▓рдЧрд╛рд╡ рд╕реНрддрд░ рдХреА рд╕реНрдерд╛рдкрдирд╛ TransactionScopeрд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд▓рд╛рд╣рдХрд╛рд░ рд╣реИред рд╡реЗ рд╕реВрдЪреАрдмрджреНрдз рд╕рднреА рд╕реНрддрд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ System.Transactions.IsolationLevelред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рдкреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЬрд┐рд╕ рдХрдиреЗрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рд▓реЗрди-рджреЗрди рдЕрд▓рдЧрд╛рд╡ рд╕реНрддрд░ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рд╡рд╣ рдкреВрд▓ рдореЗрдВ рд▓реМрдЯрдиреЗ рдкрд░ рдЗрд╕ рд╕реНрддрд░ рдХреЛ рдмрдирд╛рдП рд░рдЦреЗрдЧрд╛ ред рдЕрдм, рдЬрдм рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдкреВрд▓ рд╕реЗ рдпрд╣ рдХрдиреЗрдХреНрд╢рди рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдиреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдЧрд╛ред

рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдп рдкрд░рд┐рджреГрд╢реНрдп cTransactionScopeрдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдиреБрдХрд╕рд╛рди (рдЕрд░реНрдерд╛рддреН, рдиреЗрд╕реНрдЯреЗрдб рд▓реЗрди-рджреЗрди) "рд╣реИрдмрд░" рдкрд░ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╡рд░ рдХрд┐рдП рдЧрдП рд╣реИрдВ ред

рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд▓реЗрдирджреЗрди рдкреНрд░рдпреЛрдЬреНрдпрддрд╛


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

рдкреНрд░рддреНрдпреЗрдХ рдорд╛рдорд▓реЗ рдореЗрдВ, рд▓рд╛рдЧрдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд░рдЪрдирд╛рддреНрдордХ рд╣реЛрдЧрд╛:

  1. рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд▓реЗрдирджреЗрди рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдореЗрдВ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдирд╛ (рдЗрди рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ TransactionScopeрдХреЛ рдХрдИ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ );
  2. рдЗрд╕ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЛ рдмрдирд╛рдП рд░рдЦрдирд╛ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмреЛрд░реНрдб рдкрд░ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рд╕рд╛рде рдЙрдкрдХрд░рдг рдХрд┐рд░рд╛рдП рдкрд░ рд▓реЗрдиреЗ рдХреА рд▓рд╛рдЧрдд);
  3. рдХрд░реНрдордЪрд╛рд░реА рдкреНрд░рд╢рд┐рдХреНрд╖рдг (рдЪреВрдВрдХрд┐ .NET рд▓реЗрдирджреЗрди рдХрд╛ рд╡рд┐рд╖рдп рдЖрдо рдирд╣реАрдВ рд╣реИ)ред

рд╣рдореЗрдВ рдпрд╣ рдирд╣реАрдВ рднреВрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд▓реЗрди-рджреЗрди рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ "рдмрд╛рд╣рд░ рдХреА рджреБрдирд┐рдпрд╛" рдореЗрдВ рдЕрдкрдиреА рдкреНрд░рдЧрддрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд▓реЗрдирджреЗрди рдХреЗ рдмрд╛рд╣рд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдПрдХ рдкрддреНрд░рд┐рдХрд╛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдПред

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

рдЪрдВрдЪрд▓ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг


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

 internal sealed class Stm<T> : System.Transactions.IEnlistmentNotification { private T _current; private T _original; private bool _enlisted; public T Value { get { return _current; } set { if (!Enlist()) { _original = value; } _current = value; } } public Stm(T value) { _current = value; _original = value; } private bool Enlist() { if (_enlisted) return true; var currentTx = System.Transactions.Transaction.Current; if (currentTx == null) return false; currentTx.EnlistVolatile(this, System.Transactions.EnlistmentOptions.None); _enlisted = true; return true; } #region IEnlistmentNotification public void Commit(System.Transactions.Enlistment enlistment) { _original = _current; _enlisted = false; } public void InDoubt(System.Transactions.Enlistment enlistment) { _enlisted = false; } public void Prepare(System.Transactions.PreparingEnlistment preparingEnlistment) { preparingEnlistment.Prepared(); } public void Rollback(System.Transactions.Enlistment enlistment) { _current = _original; _enlisted = false; } #endregion IEnlistmentNotification } 

рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХрдорд╛рддреНрд░ рдФрдкрдЪрд╛рд░рд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ System.Transactions.IEnlistmentNotificationред рджрд┐рд▓рдЪрд╕реНрдк рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ, Enlist(рдЬреЛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИрдВ System.Transactions.IEnlistmentNotification) рдФрд░ Prepareред рд╡рд┐рдзрд┐ Enlistрд╕рд┐рд░реНрдл рдпрд╣ рдЬрд╛рдВрдЪрддреА рд╣реИ рдХрд┐ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рд▓реЗрдирджреЗрди рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ, рддреЛ рдПрдХ рдЧреИрд░-рд╕реНрдерд┐рд░ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд░реНрдЬ рдХрд░рддрд╛ рд╣реИред Prepareрдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд▓реЗрдирджреЗрди рдкреНрд░рдмрдВрдзрдХ рджреНрд╡рд╛рд░рд╛ рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдЕрдкрдиреА рддрддреНрдкрд░рддрд╛ рдХрд╛ рд╕рдВрдХреЗрдд рджреЗрддреЗ рд╣реИрдВ System.Transactions.PreparingEnlistment.Preparedред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдХ рдХреЛрдб рд╣реИ рдЬреЛ рд╣рдорд╛рд░реЗ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдЦрд╛ рд░рд╣рд╛ рд╣реИ:

 var stm = new Stm<int>(1); using (var scope = new System.Transactions.TransactionScope(System.Transactions.TransactionScopeOption.Required)) { stm.Value = 2; scope.Complete(); } 

рдпрджрд┐ рдЖрдк рдмреНрд▓реЙрдХ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рддреБрд░рдВрдд рдмрд╛рдж usingрд╕рдВрдкрддреНрддрд┐ рдкрдврд╝рддреЗ рд╣реИрдВ stm.Value, рддреЛ рд╡рд╣рд╛рдВ рдЕрдкреЗрдХреНрд╖рд┐рдд рдореВрд▓реНрдп рдХреА рдЙрдореНрдореАрдж рдХреА рдЬрд╛рдПрдЧреА 2ред рдФрд░ рдпрджрд┐ рдЖрдк рдХреЙрд▓ рд╣рдЯрд╛рддреЗ рд╣реИрдВ scope.Complete, рддреЛ рд▓реЗрди-рджреЗрди рд╡рд╛рдкрд╕ рдЪрд╛рд▓реВ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рд▓реЗрди-рджреЗрди рд╢реБрд░реВ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд stm.Valueрд╣реЛрдЧрд╛ 1ред

рд▓реЗрди-рджреЗрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдХреЙрд▓ рдХрд╛ рдПрдХ рд╕рд░рд▓ рдЕрдиреБрдХреНрд░рдо System.TransactionsрдиреАрдЪреЗ рдЖрд░реЗрдЦ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред


рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЧрдИ рд╕рднреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ System.Transactionsред рд▓реЗрди-рджреЗрди рдХреЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛрдиреЗ рдФрд░ рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╣рдо рдЙрдиреНрд╣реЗрдВ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред

рдЯреАрдПрд▓; рдбреАрдЖрд░ рдЕрдиреБрднрд╛рдЧ


рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ TransactionScopeрдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рдпрд╛ рдирдП рд▓реЗрдирджреЗрди рдХреЗ рднреАрддрд░ рдХреБрдЫ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ ред рдПрдХ рд▓реЗрдирджреЗрди рддрдм рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрджрд┐ рдФрд░ рдХреЗрд╡рд▓ рддрднреА TransactionScopeрд╡рд┐рдзрд┐ рдХреЛ рд╡рд░реНрдЧ рдХреЗ рдореМрдЬреВрджрд╛ рдЙрджрд╛рд╣рд░рдг рдкрд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ Dispose, рднрд▓реЗ рд╣реА рд╡рд┐рдзрд┐ рдХреЛ рдкрд╣рд▓реЗ рдмреБрд▓рд╛рдпрд╛ рдЧрдпрд╛ рд╣реЛCompleteред рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡рд╣ рдПрдХ рдирдпрд╛ рд▓реЗрдирджреЗрди рд╢реБрд░реВ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдПрдХ рдореМрдЬреВрджрд╛ рдХрд╛ рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдореМрдЬреВрджрд╛ рд▓реЗрдирджреЗрди рдХреЗ рдмрд╛рд╣рд░ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдХреЗрд╡рд▓ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рд▓реЗрдирджреЗрди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ - рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдШрдЯрдХ рдЬреЛ рдХреБрдЫ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рдлрд▓рддрд╛ рд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛) рдФрд░ рд░реБрдХ-рд░реБрдХ рдХрд░ (рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░рдирд╛)ред рдПрдХ DBMS рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд░рд╣рдиреЗ рд╡рд╛рд▓реЗ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИред рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдПрдХ рд▓реЗрдирджреЗрди рдкреНрд░рдмрдВрдзрдХ рджреНрд╡рд╛рд░рд╛ рд╕рдордиреНрд╡рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдШрдЯрдХ рдЬрд┐рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреА рднрд╛рдЧреАрджрд╛рд░реА рдХреЗ рдмрд┐рдирд╛ рд░рдирдЯрд╛рдЗрдо рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЪреБрдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрд╕рдВрдЧрдд рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдПрдХ рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ System.Transactions.IEnlistmentNotificationрдХреЛ рд╡рд┐рдзрд┐ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИPrepareрдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рддрддреНрдкрд░рддрд╛ рд╕реЗ, рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рддрддреНрдкрд░рддрд╛ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рдирд╛ред рдЬрдм рдХреЙрд▓рд░ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд▓реЗрдирджреЗрди рдЕрднреА рдЦреБрд▓рд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ рдЦреБрд▓рд╛ рд╣реИ, рддреЛ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░реЗрдВ System.Transactions.Transaction.EnlistVolatileред

рд╡рд┐рддрд░рд┐рдд рд▓реЗрди-рджреЗрди


рдпрд╣ рдХреНрдпрд╛ рд╣реИ


рдПрдХ рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рдореЗрдВ рдХрдИ рд╕реВрдЪрдирд╛ рдЙрдк-рдкреНрд░рдгрд╛рд▓рд┐рдпрд╛рдБ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреА рд╣реИрдВ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдЗрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИ, рдиреАрдЪреЗ рдЗрд╕ рдкрд░ рдФрд░ рдЕрдзрд┐рдХ)ред рдпрд╣ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╕рднреА рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдпрд╛ рддреЛ рдкреНрд░рддрд┐рдмрджреНрдз рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рд╡рд╛рдкрд╕ рд▓реБрдврд╝рдХ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд▓реЗрди-рджреЗрди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рд╛рдзрди рдКрдкрд░ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдП рдЧрдП рдереЗ: рдбреАрдмреАрдПрдордПрд╕, рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдБрдЪрд╛ System.Transactions, рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рдЯреНрд░рд╛рдВрдЬреИрдХреНрд╢рдирд▓ рдореЗрдореЛрд░реА рдЬрд┐рд╕реЗ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдореЗрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрди рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рднреА рдкреНрд░рджрд╛рди рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдУрд░реЗрдХрд▓ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ, рдПрдХ рд╣реА рд▓реЗрдирджреЗрди рдХреЗ рднреАрддрд░ рдХрдИ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдмрджрд▓рдирд╛ (рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрдврд╝рдирд╛) рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╡рд┐рддрд░рд┐рдд рдореЗрдВ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рдЕрдЧрд▓рд╛, рд╣рдо рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рд╖рдо рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рд▓реЗрди-рджреЗрди рдХреЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓


рдПрдХ рд▓реЗрди-рджреЗрди рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓реЗрдирджреЗрди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдХрд░рддреЗ рд╣реИрдВред .NET рджреБрдирд┐рдпрд╛ рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред

рд▓рд╛рдЗрдЯрд╡реЗрдЯред рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдЯрд┐рдХрд╛рдК рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рд╣реА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЛрдореЗрди рдХреЗ рднреАрддрд░ рд╕рднреА рд▓реЗрди-рджреЗрди рдХреА рдмрд╛рддрдЪреАрдд рд╣реЛрддреА рд╣реИ, рдпрд╛ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдкрджреЛрдиреНрдирддрд┐ рдФрд░ рдПрдХрд▓-рдЪрд░рдг рдкреНрд░рддрд┐рдмрджреНрдз (рд▓рд╛рдЧреВ IPromotableSinglePhaseNotification) рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ ред

OleTxред рдХрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЛрдореЗрди рдФрд░ рдХрдИ рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред рдЖрдк рдХрдИ рдЯрд┐рдХрд╛рдК рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рднреА рднрд╛рдЧ рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рдХрдВрдкреНрдпреВрдЯрд░ рдХреЛ рд╡рд┐рдВрдбреЛрдЬ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рджреВрд░рд╕реНрде рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЙрд▓ (RPC) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

WS-рдПрдЯреАредрдХрдИ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЛрдореЗрди рдФрд░ рдХрдИ рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред рдЖрдк рдХрдИ рдЯрд┐рдХрд╛рдК рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рднрд╛рдЧ рд▓реЗрдиреЗ рд╡рд╛рд▓реЗ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рднрд┐рдиреНрди рдУрдПрд╕ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рди рдХрд┐ рдХреЗрд╡рд▓ рд╡рд┐рдВрдбреЛрдЬред рд╣рд╛рдЗрдкрд░рдЯреЗрдХреНрд╕реНрдЯ рдЯреНрд░рд╛рдВрд╕рдорд┐рд╢рди рдкреНрд░реЛрдЯреЛрдХреЙрд▓ (HTTP) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

рд▓рд╛рдЗрдЯрд╡реЗрдЯ рдЯреНрд░рд╛рдВрдЬреЗрдХреНрд╢рди рдореИрдиреЗрдЬрд░ (LTM) ред .NET рдлреНрд░реЗрдорд╡рд░реНрдХ 2.0 рдФрд░ рдмрд╛рдж рдореЗрдВ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рд▓рд╛рдЗрдЯрд╡реЗрдЯ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЗрдирджреЗрди рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИред

рдХрд░реНрдиреЗрд▓ рд▓реЗрди-рджреЗрди рдкреНрд░рдмрдВрдзрдХ (KTM)ред Windows Vista рдФрд░ Windows Server 2008 рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓рд╛рдЗрдЯрд╡реЗрдЯ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЗрдирджреЗрди рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдВрдбреЛрдЬ рд╡рд┐рд╕реНрдЯрд╛ рдФрд░ рд╡рд┐рдВрдбреЛрдЬ 2008 рдореЗрдВ рдПрдХ рдЯреНрд░рд╛рдВрдЬреЗрдХреНрд╢рдирд▓ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо (TxF) рдФрд░ рдПрдХ рдЯреНрд░рд╛рдВрдЬреЗрдХреНрд╢рдирд▓ рд░рдЬрд┐рд╕реНрдЯреНрд░реА (TxR) рдХрд╛ рдЖрд╣реНрд╡рд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдбрд┐рд╕реНрдЯреНрд░рд┐рдмреНрдпреВрдЯреЗрдб рдЯреНрд░рд╛рдВрдЬреИрдХреНрд╢рди рдХреЛрдСрд░реНрдбрд┐рдиреЗрдЯрд░ (MSDTC) ред OleTx рдФрд░ WS-AT рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓реЗрдирджреЗрди рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИред

рдпрд╣ рднреА рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХреБрдЫ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рд╕реВрдЪреАрдмрджреНрдз рд╕рднреА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, MSMQ рдФрд░ SQL Server 2000 рд▓рд╛рдЗрдЯрд╡реЗрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП MSMQ рдпрд╛ SQL Server 2000 рд╕реЗ рдЬреБрдбрд╝реЗ рд▓реЗрдирджреЗрди MSDTC рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ, рднрд▓реЗ рд╣реА рд╡реЗ рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рднрд╛рдЧреА рд╣реЛрдВред рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рдпрд╣ рд╕реАрдорд╛ рдЗрд╕ рддрдереНрдп рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдХрд┐ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЗрдВрдЯрд░рдлрд╝реЗрд╕System.Transactions.IEnlistmentNotificationрдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рди рдХрд░реЗрдВ System.Transactions.IPromotableSinglePhaseNotificationред рдЗрд╕рдореЗрдВ рдЕрдиреНрдп рдмрд╛рддреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рд╡рд┐рдзрд┐ Promoteрд╣реИ рдЬреЛ рд░рдирдЯрд╛рдЗрдо рдЖрд╣реНрд╡рд╛рди рдХрд░рддреА рд╣реИ, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдПрдХ рд╕реНрдЯрд╛рдВрдк рд▓реЗрди-рджреЗрди рдкреНрд░рдмрдВрдзрдХ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреА рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдЕрдм рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рдХреЛ рдПрдХ рд▓реЗрдирджреЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╡рд╣ рднрд╛рдЧ рд▓реЗрддрд╛ рд╣реИ:

  1. рдХрд┐рд╕реА рднреА рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдХреЗ рдХрдо рд╕реЗ рдХрдо рджреЛ;
  2. рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдФрд░ рдХрдо рд╕реЗ рдХрдо рджреЛ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд░рд╣рдиреЗ рд╡рд╛рд▓реЗ;
  3. рдХрд┐рд╕реА рднреА рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдХреЗ рдХрдо рд╕реЗ рдХрдо рджреЛ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдкрд░ рд╕реНрдерд┐рдд рд╣реИрдВред

рдЗрд╕рд▓рд┐рдП, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рд╡рд┐рд╢реЗрд╖ рд▓реЗрдирджреЗрди рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рдФрд░ рдЗрд╕ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдореБрдЦреНрдп рд░реВрдк рд╕реЗ MSDTC рдкрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╣реИред рдпрд╣ рд╡рд┐рдВрдбреЛрдЬ рдХрд╛ рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдШрдЯрдХ рд╣реИ рдЬреЛ рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рддрд╛ рд╣реИред рд▓реЗрдирджреЗрди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдФрд░ рдореЙрдирд┐рдЯрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧреНрд░рд╛рдлрд┐рдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ, рдЬреЛ "рдХрдВрдкреНрдпреВрдЯрд░ - рдореЗрд░рд╛ рдХрдВрдкреНрдпреВрдЯрд░ - рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рд╕рдордиреНрд╡рдпрдХ - рд╕реНрдерд╛рдиреАрдп рдбреАрдЯреАрд╕реА" рдкрде рдХреЗ рдмрд╛рдж, "рдШрдЯрдХ рд╕реЗрд╡рд╛рдПрдБ" рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП, "рд╕реНрдерд╛рдиреАрдп рдбреАрдЯреАрд╕реА" рдиреЛрдб рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдореЗрдВ "рдЧреБрдг" рдЖрдЗрдЯрдо рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ, рдФрд░ рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЗрдВрджреНрд░реАрдп рдкреИрдирд▓ рдореЗрдВ "рд▓реЗрдирджреЗрди рдХреЗ рдЖрдВрдХрдбрд╝реЗ" рдЖрдЗрдЯрдо рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред

рджреНрд╡рд┐рдзреНрд░реБрд╡реАрдп рдирд┐рд░реНрдзрд╛рд░рдг


рдпрджрд┐ рдХрдИ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рд▓реЗрди-рджреЗрди рдореЗрдВ рднрд╛рдЧ рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рдЙрдирдХреЗ рдХрд╛рдо рдХреЗ рдкрд░рд┐рдгрд╛рдо рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдкреВрд░рд╛ рд╣реБрдЖ, рдФрд░ рд╡рд╣ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИ, рдФрд░ рджреВрд╕рд░реЗ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИ, рдФрд░ рд╡рд╣ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рдХрд╛ рд╕рд╛рд░ рдЗрд╕ рддрдереНрдп рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ рдХрд┐ рд▓реЗрдирджреЗрди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╕рднреА рдирд┐рдпрдВрддреНрд░рдг рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдпрд╛ рддреЛ рд╕рднреА рдПрдХ рд╕рд╛рде рдкреНрд░рддрд┐рдмрджреНрдз рд╣реИрдВ рдпрд╛ рд╡рд╛рдкрд╕ рд▓реБрдврд╝рдХ рдЧрдП рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдорддреМрд░ рдкрд░ рдПрдХ рджреЛ-рдЪрд░рдг рдирд┐рд░реНрдзрд╛рд░рдг рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЗрд╕ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рд╕рд╛рд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИред рдкрд╣рд▓реЗ рдЪрд░рдг рдХреЗ рджреМрд░рд╛рдирд▓реЗрди-рджреЗрди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рд╡рд┐рдлрд▓рддрд╛ рд╕реЗ рдЙрдмрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рддреИрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ (рдпрджрд┐ рдпрд╣ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рд╣реИ) рдФрд░ рдкреНрд░рддрд┐рдмрджреНрдз рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕рдлрд▓ рд╕рдорд╛рдкрди рдХреЗ рд▓рд┐рдПред рддрдХрдиреАрдХреА рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рд╕рдВрдХреЗрдд рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЙрд╕рдиреЗ рд╡рд┐рдзрд┐ System.Transactions.PreparingEnlistment.PreparedрдореЗрдВ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдкрд╣рд▓рд╛ рдЪрд░рдг рдкреВрд░рд╛ рдХрд░ рд▓рд┐рдпрд╛ рд╣реИ Prepareред рдпрд╛ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдЖрдкрдХреЛ рд╕реВрдЪрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рд╡рд╛рдкрд╕ рдХрд┐рдП рдЧрдП рдереЗ ForceRollbackред

рдЬрдм рд▓реЗрди-рджреЗрди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╕рднреА рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ "рдорддрджрд╛рди" рдХрд░рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рдЙрдиреНрд╣реЛрдВрдиреЗ рд▓реЗрди-рджреЗрди рдкреНрд░рдмрдВрдзрдХ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рдХреНрдпрд╛ рд╡реЗ рдмрджрд▓рд╛рд╡ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рд╡рд╛рдкрд╕ рд░реЛрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рджреВрд╕рд░рд╛ рдЪрд░рдг рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕ рд╕рдордп, рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХреЛ рдЕрдкрдиреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ (рдпрджрд┐ рд╕рднреА рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдиреЗ рдлрд┐рдХреНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдорддрджрд╛рди рдХрд┐рдпрд╛ рд╣реИ) рдпрд╛ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдпрджрд┐ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдкреНрд░рддрд┐рднрд╛рдЧреА рдиреЗ рд░реЛрд▓рдмреИрдХ рдХреЗ рд▓рд┐рдП рдорддрджрд╛рди рдХрд┐рдпрд╛ рд╣реИ) рдХреЛ рдирд┐рд░реНрджреЗрд╢ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рдпрд╣ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдЖрд╣реНрд╡рд╛рди рдореЗрдВ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ CommitрдФрд░ RollbackрдЬрд┐рд╕реЗ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЬрд┐рд╕рдореЗрдВ рд╡реЗ рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ System.Transactions.Enlistment.Doneред

рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ System.Transactions.Enlistment.Doneрдкрд╣рд▓реЗ рдЪрд░рдг рдХреЗ рджреМрд░рд╛рди рд╡рд┐рдзрд┐ рдХреЛ рднреА рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ) рдФрд░ рджреВрд╕рд░реЗ рдЪрд░рдг рдореЗрдВ рднрд╛рдЧ рдирд╣реАрдВ рд▓реЗрдЧрд╛ред Microsoft рдкрд░ рджреЛ-рдЪрд░рдг рдкреНрд░рддрд┐рдмрджреНрдз рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВ ред

рдпрджрд┐ рд▓реЗрди-рджреЗрди рдкреНрд░рдмрдВрдзрдХ рдФрд░ рдХрдо рд╕реЗ рдХрдо рдПрдХ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдЦреЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд▓реЗрди-рджреЗрди рд╕реНрдерд┐рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ ("рд╕рдВрджреЗрд╣ рдореЗрдВ", рд╕рдВрджреЗрд╣ рдореЗрдВ)ред рд▓реЗрдирджреЗрди рдкреНрд░рдмрдВрдзрдХ, рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ InDoubt, рдЗрд╕ рдШрдЯрдирд╛ рдХреЗ рдЙрдкрд▓рдмреНрдз рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред

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

System.Transactions рдЗрдВрдЯрд░рдлреЗрд╕ рдкрд░ рдзреЛрдЦрд╛ рд╢реАрдЯ


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



IEnlistmentNotificationред рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рд▓реЗрди-рджреЗрди рдкреНрд░рдмрдВрдзрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреНрд░рдо рдореЗрдВ рдХрд╣рддрд╛ рд╣реИред рдкрд╣рд▓реЗ рдЪрд░рдг рдХреЗ рджреМрд░рд╛рди, рд╡рд╣ рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рддрд╛ рд╣реИ Prepare(рдЬрдм рддрдХ рдХрд┐ рддрд╛рд░реЛрдВ рдХреЛ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рде рдирд╣реАрдВ рдЖрдпрд╛ ISinglePhaseNotification.SinglePhaseCommit, рдЬреИрд╕рд╛ рдХрд┐ рдЕрдЧрд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ)ред рдЗрд╕ рдкрджреНрдзрддрд┐ рдХреЗ рддрд╣рдд, рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рд╡рд┐рдлрд▓рддрд╛ рд╕реЗ рдЙрдмрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рд╕рд╣реЗрдЬрддрд╛ рд╣реИ, рдЕрдкрдиреЗ рдкрдХреНрд╖ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреА рдЕрдВрддрд┐рдо рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдпрд╛ рд░реЛрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ рдХрд░рддрд╛ рд╣реИред рд╡рд╣рд╛рдБ рдПрдХ рджреВрд╕рд░реЗ рдЪрд░рдг рдЖрддрд╛ рд╣реИ, рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рд▓реЗрдирджреЗрди рдХреЗ рдорддрджрд╛рди рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдХреА рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рддреАрди рддрд░реАрдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ: Commit, InDoubt, Rollbackред

ISinglePhaseNotificationредрд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рд╡рд╣ рд▓реЗрдирджреЗрди рдкреНрд░рдмрдВрдзрдХ рдХреЛ рджреВрд╕рд░реЗ рдкреНрд░рддрд┐рдмрджреНрдз рдЪрд░рдг рдХреЛ рдХрдо рдХрд░рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рдпрджрд┐ рд▓реЗрди-рджреЗрди рдкреНрд░рдмрдВрдзрдХ рдХреЗрд╡рд▓ рдПрдХ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рджреЗрдЦрддрд╛ рд╣реИ, рддреЛ рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ рд╡рд╣ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдХреА рд╡рд┐рдзрд┐ SinglePhaseCommit(рдЗрд╕рдХреЗ рдмрдЬрд╛рдп IEnlistmentNotification.Prepare) рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рддрд░рд╣ рдорддрджрд╛рди рдФрд░ рджреВрд╕рд░реЗ рдЪрд░рдг рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХреЛ рдмрд╛рд╣рд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рд╣реИрдВ, рдЬреЛ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рдиреЗ рд╕рдмрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣рд╛рдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрд╛ рд╣реИ ред

ITransactionPromoterред рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ (рди рдХреЗрд╡рд▓ рд╕реАрдзреЗ, рдмрд▓реНрдХрд┐ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗIPromotableSinglePhaseNotification), рдЕрдЧрд░ рд╡рд╣ рд▓реЗрди-рджреЗрди рдкреНрд░рдмрдВрдзрдХ рдХреЛ рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдкрд░ рднреА рд▓рд╛рдЗрдЯрд╡реЗрдЯ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдЕрдиреНрдп рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдЬрдЯрд┐рд▓рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЬрдм рдЖрдкрдХреЛ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ Promoteред

IPromotableSinglePhaseNotificationред рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдХреНрд░рдо рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ITransactionPromoter, рдФрд░ рджреВрд╕рд░рд╛, рддрд╛рдХрд┐ рд▓реЗрдирджреЗрди рдкреНрд░рдмрдВрдзрдХ рдПрдХрд▓-рдЪрд░рдг рдкреНрд░рддрд┐рдмрджреНрдз, рдХреЙрд▓рд┐рдВрдЧ рд╡рд┐рдзрд┐рдпреЛрдВ IPromotableSinglePhaseNotification.SinglePhaseCommitрдФрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗ IPromotableSinglePhaseNotification.Rollbackред рд▓реЗрди-рджреЗрди рдкреНрд░рдмрдВрдзрдХ IPromotableSinglePhaseNotification.Initializeрд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдХреЗ рд╕рдлрд▓ рдкрдВрдЬреАрдХрд░рдг рдХреЛ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рдХрд╣рддрд╛ рд╣реИред рдХрдореЛрдмреЗрд╢, рдЗрд╕реЗ Microsoft рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╕реЗ рд╕рдордЭрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

рдЖрдЗрдП рдереЛрдбрд╝рд╛ рдФрд░ рджреЗрдЦреЗрдВSystem.Transactions.EnlistmentрдФрд░ рдЙрд╕рдХреЗ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реАред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рд▓реЗрди-рджреЗрди рдкреНрд░рдмрдВрдзрдХ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдпрд╣ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред



рднрд░реНрддреА рд╣реЛрдиреЗред рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХрд▓ рд╡рд┐рдзрд┐ - Done, - - рдХреЛ рдХрд╛рд░реНрдп рдХреЗ рдЕрдкрдиреЗ рднрд╛рдЧ рдХреЗ рд╕рдлрд▓ рд╕рдорд╛рдкрди рдХрд╛ рд╕рдВрдХреЗрдд рджреЗ рд╕рдХрддрд╛ рд╣реИред

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

SinglePhaseEnlistmentред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рд▓реЗрди-рджреЗрди рдкреНрд░рдмрдВрдзрдХ рдХреЛ рдПрдХ рд╕рд░рд▓реАрдХреГрдд рдпреЛрдЬрдирд╛ (рдПрдХрд▓-рдЪрд░рдг рдкреНрд░рддрд┐рдмрджреНрдз) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░реЗрд╖рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рд╕реАрдорд╛рдПрдБ рдФрд░ рд╡рд┐рдХрд▓реНрдк


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

рдпрджрд┐ рд╕рд┐рд╕реНрдЯрдо рдХрд╛ рдирд┐рд░реНрдорд╛рддрд╛ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЙрддреНрддрд░ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИ, рддреЛ рдмрд╛рдж рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдХреЗ рд╕рдордиреНрд╡рдп рдХреЛ рд╕реНрдердЧрд┐рдд рдХрд░ рджреЗрддрд╛ рд╣реИ, рддреЛ рдХреБрдЫ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рдЙрд╕рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЙрдкрдпреБрдХреНрдд рд╣реЛрдВрдЧреЗред рдмреНрд░реВрд╡рд░ рдкреНрд░рдореЗрдп ( рд╕реАрдПрдкреА рдкреНрд░рдореЗрдп ) рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ , рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рдЙрди рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИрдВ, рдЬрд╣рд╛рдВ рдЙрдкрд▓рдмреНрдзрддрд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрдЧрддрддрд╛ рдЕрдзрд┐рдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред

рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдЕрдиреНрдп рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдкреНрд░рддрд┐рдмрдВрдз рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ OleTx рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рдиреЗрдЯрд╡рд░реНрдХ рдбреЛрдореЗрди рдХреЛ рдкрд╛рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рдХрд╛рдо рдкрд░ рд▓рд╛рдиреЗ рдХреЗ рд▓рдВрдмреЗ рдкреНрд░рдпрд╛рд╕ рд╕рдлрд▓ рдирд╣реАрдВ рд╣реБрдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдерд╛ рдХрд┐ рдУрд░реЗрдХрд▓ рдбреЗрдЯрд╛рдмреЗрд╕ (рд╡рд┐рддрд░рд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕ рд▓реЗрдирджреЗрди) рдХреЗ рдХрдИ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХреЗ рдмреАрдЪ рдмрд╛рддрдЪреАрдд рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рдХреА рдкреНрд░рдпреЛрдЬреНрдпрддрд╛ (рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓) рдкрд░ рдЧрдВрднреАрд░ рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рддреА рд╣реИред

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

рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рдХреЗ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реБрдП, рд╣рдо рд╕рдВрджреЗрд╢ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдорд╛рдзрд╛рди рдиреЛрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ RabbitMQ рдФрд░ Apache Kafkaред рдореЗрдВ "Habr├й" рдкрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд╢рди рдЗрди рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдЪрд╛рд░ рджреЗрдЦреА рдЧрдИ:

  1. , , ;
  2. , (Transaction Log Tailing);
  3. , ;
  4. (Event Sourcing).

рдПрдХ рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдк рд╕рд╛рдЧрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╣реИред рдЗрд╕рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрдерд╛рдиреАрдп рд▓реЗрдирджреЗрди рдХреЗ рд╕рд╛рде рдЙрдк-рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдЭрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдХрд╛рдо рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдгрд╛рд▓реА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рдХреЙрд▓ рдХрд░рддреА рд╣реИ (рдпрд╛ рддреЛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдпрд╛ рд╕рдордиреНрд╡рдпрдХ рдХреА рдорджрдж рд╕реЗ)ред рдкреНрд░рддреНрдпреЗрдХ рд▓реЗрдирджреЗрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рди рд░рджреНрджреАрдХрд░рдг рд▓реЗрдирджреЗрди рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдирд┐рдпрдВрддреНрд░рдг рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЙрдкрддрдВрддреНрд░ рдкрд┐рдЫрд▓реЗ рдЙрдкрдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкрд╣рд▓реЗ рдХрд┐рдП рдЧрдП рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд░рджреНрдж рдХрд░рдиреЗ рдХреА рдкрд╣рд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред "рд╣реИрдмреЗ" рдкрд░ "рд╕рд╛рдЧрд╛" рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЕрдЪреНрдЫреЗ рд▓реЗрдЦ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкреНрд░рдХрд╛рд╢рди microservices рдореЗрдВ ACID рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдкрд░ рд╕рд╛рдорд╛рдиреНрдп рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд▓реЗрдЦ рдПрдХ рд╕рдордиреНрд╡рдпрдХ рдХреЗ рд╕рд╛рде рд╕рд╛рдЧрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд╡рд┐рд╡рд░рдг рджреЗрддрд╛ рд╣реИред

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

рддреЛ рдХреНрдпрд╛ рдпрд╣ .NET рдХреЛрд░ рдореЗрдВ рд╣реИ?


.NET Core (рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ .NET рдорд╛рдирдХ рдореЗрдВ) рд▓реЗрдирджреЗрди рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдФрд░ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдкреНрд░рдХрд╛рд░ рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, .NET рдХреЛрд░ рдореЗрдВ, рдЖрдзрд╛рд░рд┐рдд рд▓реЗрдирджреЗрди System.TransactionsрдореЗрдВ рдПрдХ рдЧрдВрднреАрд░ рд╕реАрдорд╛ рд╣реИ: рд╡реЗ рдХреЗрд╡рд▓ рд▓рд╛рдЗрдЯрд╡реЗрдЯ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдХреЛрдб рдореЗрдВ рджреЛ рдЯрд┐рдХрд╛рдК рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд░рдирдЯрд╛рдЗрдо рдкрд░, рджреВрд╕рд░рд╛ рдкреНрд░рдмрдВрдзрдХ рдХрд╣рддреЗ рд╣реА рдкрд░реНрдпрд╛рд╡рд░рдг рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджреЗрдЧрд╛ред

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

рдЕрдиреБрднрд╡ рд╕реЗ, рдЖрдк .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдФрд░ .NET рдХреЛрд░ рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рдХреЗ рдЕрдВрддрд░реЛрдВ рдХреЛ рдПрдХ рд╣реА рдХреЛрдб рд▓рд┐рдЦрдХрд░, рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рд╕рдВрдХрд▓рд┐рдд рдФрд░ рдЪрд▓рд╛рдХрд░ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдРрд╕реЗ рдХреЛрдб рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЬреЛ SQL рд╕рд░реНрд╡рд░ рдФрд░ Oracle рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдЖрдордВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

 private static void Main(string[] args) { using (var scope = new System.Transactions.TransactionScope(System.Transactions.TransactionScopeOption.Required)) { MsSqlServer(); Oracle(); scope.Complete(); } } private static void Oracle() { using (var conn = new Oracle.ManagedDataAccess.Client.OracleConnection("User Id=some_user;Password=some_password;Data Source=some_db")) { conn.Open(); using (var cmd = conn.CreateCommand()) { cmd.CommandText = "update t_hello set id_hello = 2 where id_hello = 1"; cmd.ExecuteNonQuery(); } conn.Close(); } } private static void MsSqlServer() { var builder = new System.Data.SqlClient.SqlConnectionStringBuilder { DataSource = "some_computer\\some_db", UserID = "some_user", Password = "some_password", InitialCatalog = "some_scheme", Enlist = true, }; using (var conn = new System.Data.SqlClient.SqlConnection(builder.ConnectionString)) { conn.Open(); using (var cmd = conn.CreateCommand()) { cmd.CommandText = "update t_hello set id_hello = 2 where id_hello = 1"; cmd.ExecuteNonQuery(); } conn.Close(); } } 

рдмрд┐рд▓реНрдб-рддреИрдпрд╛рд░ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ GitHub рдкрд░ рд╣реИрдВ ред

.NET рдХреЛрд░ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдЪрд▓рд╛рдирд╛ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред рдлреЗрдВрдХреЗ рдЧрдП рдЕрдкрд╡рд╛рдж рдХрд╛ рд╕реНрдерд╛рди рдФрд░ рдкреНрд░рдХрд╛рд░ DBMS рдХреЙрд▓ рдХреЗ рдЖрджреЗрд╢ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рдЕрдкрд╡рд╛рдж рдЕрдорд╛рдиреНрдп рд▓реЗрдирджреЗрди рдСрдкрд░реЗрд╢рди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг рдЪрд▓рд╛рдирд╛ рдпрджрд┐ MSDTC рдЗрд╕ рд╕рдордп рдЪрд▓ рд░рд╣рд╛ рд╣реИ рддреЛ рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ; рд╣рд╛рд▓рд╛рдБрдХрд┐, MSDTC рдХреЗ рдЧреНрд░рд╛рдлрд╝рд┐рдХрд▓ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ, рдЖрдк рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рдХреЗ рдкрдВрдЬреАрдХрд░рдг рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рдФрд░ рдбрдмреНрд▓реНрдпреВрд╕реАрдПрдл


рд╡рд┐рдВрдбреЛрдЬ рдХрдореНрдпреБрдирд┐рдХреЗрд╢рди рдлрд╛рдЙрдВрдбреЗрд╢рди (WCF) рдиреЗрдЯрд╡рд░реНрдХ рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдФрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рд╣реИред рдЕрдзрд┐рдХ рдлреИрд╢рдиреЗрдмрд▓ REST рдФрд░ ASP.NET рд╡реЗрдм API рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ, рдЗрд╕рдХреЗ рдЕрдкрдиреЗ рдлрд╛рдпрджреЗ рдФрд░ рдиреБрдХрд╕рд╛рди рд╣реИрдВред .NET рд▓реЗрдирджреЗрди рдХреЗ рд╕рд╛рде WCF рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рджреЛрд╕реНрдд рд╣реИрдВ, рдФрд░ .NET рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕реЗрд╡рд╛ рдХреЗ рдмреАрдЪ рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рдХреЗ рдЖрдпреЛрдЬрди рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИред

.NET рдХреЛрд░ рдореЗрдВ, рдпрд╣ рддрдХрдиреАрдХ рдХреЗрд╡рд▓ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдкрд░ рдХрд╛рдо рдХрд░рддреА рд╣реИ, рдЕрд░реНрдерд╛рдд, рдЖрдк рдПрдХ рд╕реЗрд╡рд╛ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рдореМрдЬреВрджрд╛ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, .NET рдХреЛрд░ рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рдХреЗ рд╕рд╛рде, рдЪреАрдЬреЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рдХрд░ рд░рд╣реА рд╣реИрдВред

WCF рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

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

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

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

WCF рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░рд┐рд╡рд╣рди, рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдФрд░ рдЕрдиреНрдп рд╕реВрдХреНрд╖реНрдо рддрдХрдиреАрдХреА рдорд╛рдирдХреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ "рдмрд╛рдЗрдВрдбрд┐рдВрдЧ" (рдмрдВрдзрди) рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╕реЗ рдПрдХрдЬреБрдЯ рд╣реИрдВред WCF рд╕реЗрд╡рд╛ рдХреЗ рддреАрди рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИрдВ:

  1. рдЬрд┐рд╕ рдкрддреЗ рдкрд░ рдпрд╣ рдЙрдкрд▓рдмреНрдз рд╣реИ;
  2. рдмрд╛рдзреНрдпрдХрд╛рд░реА;
  3. рдЕрдиреБрдмрдВрдз (рдЗрдВрдЯрд░рдлреЗрд╕)ред

рдпреЗ рд╕рднреА рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрд╡рд╛ рдФрд░ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдП рдЧрдП рд╣реИрдВред

рд╣рдорд╛рд░реА рдХрдВрдкрдиреА рдореЗрдВ, рдбрдмреНрд▓реНрдпреВрд╕реАрдПрдл (рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рдХреЗ рд╕рд╛рде рдФрд░ рдмрд┐рдирд╛) рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдЙрддреНрдкрд╛рджреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдлреИрд╢рди рдХреЗ рд░реБрдЭрд╛рди рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдирдП рдЙрддреНрдкрд╛рджреЛрдВ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЕрднреА рднреА рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдШреЗрд░реЗ рдореЗрдВ рд╣реИред

рдбрдмреНрд▓реНрдпреВрд╕реАрдПрдл

рдореЗрдВ рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ рдбрдмреНрд▓реНрдпреВрд╕реАрдПрдл рдореЗрдВ рдЖрдзрд╛рд░рд┐рдд рд▓реЗрдирджреЗрди рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП System.Transactions, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдХреЛрдб рдореЗрдВ рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдиреЗ рд╕рдорд░реНрдерд┐рдд рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣ рдХреНрд▓рд╛рдЗрдВрдЯ рдФрд░ рд╕реЗрд╡рд╛ рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ, transactionFlow="true"рдФрд░ рдпрд╣ рдХрд┐ рдПрдХ рдЙрдкрдпреБрдХреНрдд рд▓реЗрдирджреЗрди рдкреНрд░рдмрдВрдзрдХ рд╕рднреА рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдкрд░ рдЪрд▓ рд░рд╣рд╛ рд╣реИ (рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ) , рдпрд╣ MSDTC рд╣реЛрдЧрд╛)ред

рд╡рд┐рддрд░рд┐рдд рд▓реЗрди-рджреЗрди рдмрд╛рдЗрдВрдбрд┐рдВрдЧ: NetTcpBinding, NetNamedPipeBinding, WSHttpBinding, WSDualHttpBinding, рдФрд░ WSFederationHttpBindingред

рд╕реЗрд╡рд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рд╡рд┐рдзрд┐ (рд╕рдВрдЪрд╛рд▓рди) рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП System.ServiceModel.TransactionFlowAttributeред рдлрд┐рд░ рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдЖрдк рдЬрдм рд╕реЗрдЯ TransactionScopeRequiredрдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ System.ServiceModel.OperationBehaviorAttributeрд▓реЗрдирджреЗрди рдЧреНрд░рд╛рд╣рдХ рдФрд░ рд╕реЗрд╡рд╛ рдХреЗ рдмреАрдЪ рд╡рд┐рддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕реЗрд╡рд╛ рдХреЛ рд▓реЗрдирджреЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реЛрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рддрдХ рдХрд┐ рдХреЛрдИ рдЕрдкрд╡рд╛рдж рд░рди рд╕рдордп рдкрд░ рдирд╣реАрдВ рдлреЗрдВрдХрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╕рдВрдмрдВрдзрд┐рдд TransactionAutoCompleteрд╡рд┐рд╢реЗрд╖рддрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рдорд╛рди рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ System.ServiceModel.OperationBehaviorAttributeред

рдПрдХ рд╕рд░рд▓ WCF рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЬреЛ рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред
 [System.ServiceModel.ServiceContract] public interface IMyService { [System.ServiceModel.OperationContract] [System.ServiceModel.TransactionFlow(System.ServiceModel.TransactionFlowOption.Mandatory)] int DoSomething(string input); } public class MyService : IMyService { [System.ServiceModel.OperationBehavior(TransactionScopeRequired = true)] [System.ServiceModel.TransactionFlow(System.ServiceModel.TransactionFlowOption.Mandatory)] public int DoSomething(string input) { if (input == null) throw new System.ArgumentNullException(nameof(input)); return input.Length; } } 

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдпрд╣ рдирд┐рдпрдорд┐рдд рд╕реЗрд╡рд╛ рдХреЛрдб рд╕реЗ рдХреЗрд╡рд▓ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдЙрдкрдпреЛрдЧ System.ServiceModel.TransactionFlowрдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреА рд╡рд┐рд╢реЗрд╖ рд╕реЗрдЯрд┐рдВрдЧ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрддрд╛ рд╣реИ System.ServiceModel.OperationBehaviorред

рдЗрд╕ рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рдирдореВрдирд╛ рд╡рд┐рдиреНрдпрд╛рд╕ред
 <system.serviceModel> <services> <service name="WcfWithTransactionsExample.MyService" behaviorConfiguration="serviceBehavior"> <endpoint address="" binding="wsHttpBinding" bindingConfiguration="mainWsBinding" contract="WcfWithTransactionsExample.IMyService"/> <endpoint address="mex" contract="IMetadataExchange" binding="mexHttpBinding"/> </service> </services> <bindings> <wsHttpBinding> <binding name="mainWsBinding" maxReceivedMessageSize="209715200" maxBufferPoolSize="209715200" transactionFlow="true" closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00"> <security mode="None"/> <readerQuotas maxArrayLength="209715200" maxStringContentLength="209715200"/> </binding> </wsHttpBinding> </bindings> </system.serviceModel> 

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ WSHttpBinding рдкреНрд░рдХрд╛рд░ рдХреА рд╣реИ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ transactionFlow="true"ред

рдЯреАрдПрд▓; рдбреАрдЖрд░ рдЕрдиреБрднрд╛рдЧ


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

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

рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд╛рд▓рдирд╛


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

рд▓реЗрдирджреЗрди (рд╡рд┐рд╖рдп рдХреНрд╖реЗрддреНрд░, DBMS, рд╕реЙрдлреНрдЯрд╡реЗрдпрд░)ред рдбреЛрдореЗрди рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдХрднреА-рдХрднреА рд▓реЗрдирджреЗрди рдХреЗ рд░реВрдк рдореЗрдВ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рд╕рдВрдЪрд╛рд▓рди, рдЬреЛ рдЕрднрд┐рдиреНрди рдбреЗрдЯрд╛ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░ (рдЕрд╕рдлрд▓ рд╕рд╣рд┐рдд) рднреА рдЕрднрд┐рдиреНрди рдбреЗрдЯрд╛ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдЖрдирд╛ рдЪрд╛рд╣рд┐рдП (рд╕рдВрднрд╡рддрдГ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрд▓рдЧ)ред рдЗрди рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдЖрдорддреМрд░ рдкрд░ рд╕рд┐рд╕реНрдЯрдо рд▓реЗрдирджреЗрди рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрди-рджреЗрди рдХрд╛ рдПрдХ рдХреНрд▓рд╛рд╕рд┐рдХ рдЙрджрд╛рд╣рд░рдг рджреЛ рдЦрд╛рддреЛрдВ рдХреЗ рдмреАрдЪ рдзрди рдХрд╛ рд╣рд╕реНрддрд╛рдВрддрд░рдг рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рджреЛ рдЕрд╡рд┐рднрд╛рдЬреНрдп рд╕рдВрдЪрд╛рд▓рди рд╢рд╛рдорд┐рд▓ рд╣реИрдВ - рдПрдХ рдЦрд╛рддреЗ рд╕реЗ рдзрди рд╡рд╛рдкрд╕ рд▓реЗрдирд╛ рдФрд░ рджреВрд╕рд░реЗ рдХреЛ рдЬрдорд╛ рдХрд░рдирд╛ред DBMS рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рдкреНрд░рд╕рд┐рджреНрдз рд▓реЗрдирджреЗрди рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд▓реЗрдирджреЗрди рднреА рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, .NET рджреБрдирд┐рдпрд╛ рдореЗрдВред рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдШрдЯрдХ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рд▓реЗрдирджреЗрди рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдореЗрдВ рдХрд┐рдП рдЧрдП рдмрджрд▓рд╛рд╡реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рдпрд╛рдиреА рдХрдорд┐рдЯ рдпрд╛ рд░реЛрд▓редрд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХреЛ рд▓реЗрди-рджреЗрди рдкреНрд░рдмрдВрдзрдХ рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рдФрд░ рд░реЛрд▓рд┐рдВрдЧ рдХрд░рдиреЗ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рдорд┐рд▓рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреА рдиреАрдВрд╡ рд╣реИSystem.Transactionsред

рдЯрд┐рдХрд╛рдК рдФрд░ рдЖрдВрддрд░рд╛рдпрд┐рдХ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХред рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рдлрд▓рддрд╛ рдХреЗ рдмрд╛рдж рдбреЗрдЯрд╛ рд░рд┐рдХрд╡рд░реА рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред .NET рдХреЗ рд▓рд┐рдП DBMS рдбреНрд░рд╛рдЗрд╡рд░ рдЖрдорддреМрд░ рдкрд░ рдРрд╕реА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдЖрдВрддрд░рд╛рдпрд┐рдХ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдЖрдкрджрд╛ рд╡рд╕реВрд▓реА рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рдЯреНрд░рд╛рдВрд╕реЗрдХреНрд╢рдирд▓ рдореЗрдореЛрд░реА - рд░реИрдо рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ - рдПрдХ рдЪрдВрдЪрд▓ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдХреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд▓реЗрдирджреЗрди рдФрд░ .NET рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХред .NET рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд▓реЗрдирджреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдирд╛рдорд╕реНрдерд╛рди рд╕реЗ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдмрдирд╛рддрд╛ рд╣реИSystem.Transactionsред рдпрд╣ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪрд╛ рд╡рд┐рднрд┐рдиреНрди рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╢рд┐рдХрд╛рд░ рдФрд░ рдЕрд▓рдЧрд╛рд╡ (рдЬреНрдЮрд╛рдд рд╕реАрдорд╛рдУрдВ рдХреЗ рд╕рд╛рде) рдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд▓реЗрдирджреЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ usingрдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХреЛрдб рдХреЛ рдПрдХ рдмреНрд▓реЙрдХ рдореЗрдВ рд▓рдкреЗрдЯрдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд▓реЗрди-рджреЗрди рдореЗрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╢рд╛рдорд┐рд▓ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХреЛ рдЕрдкрдиреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдмрдирд╛рдП рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдПред рд▓реЗрди-рджреЗрди рдореЗрдВ рд╡рд┐рд╖рдо рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдпрд╛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рдПрдХ рдкреНрд░рдмрдВрдзрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╡рд┐рддрд░рд┐рдд рдПрдХ рдореЗрдВ рд▓реЗрдирджреЗрди рдХреЛ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИред

рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди (DBMS, рд╕реЙрдлреНрдЯрд╡реЗрдпрд░)редрдПрдХ рд╡рд┐рддрд░рд┐рдд рд▓реЗрди-рджреЗрди рдореЗрдВ рдХрдИ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрд░реНрдерд╛рдд, рд╡реЗ рдпрд╛ рддреЛ рд╕рднреА рдПрдХ рд╕рд╛рде рдкреНрд░рддрд┐рдмрджреНрдз рд╣реИрдВ рдпрд╛ рд╡рд╛рдкрд╕ рд▓реБрдврд╝рдХ рдЧрдП рд╣реИрдВред рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рдХреБрдЫ рдЖрдзреБрдирд┐рдХ рдбреАрдмреАрдПрдордПрд╕ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди (рдпреЗ рдбреАрдмреАрдПрдордПрд╕ рджреНрд╡рд╛рд░рд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдирд╣реАрдВ рд╣реИрдВ) рдкрд░рд╕реНрдкрд░ рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдФрд░ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рддрд┐рдмрдВрдз рд▓рдЧрд╛рддреЗ рд╣реИрдВред рд╕рдВрджреЗрд╢ рд╕реЗрд╡рд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рдзреАрд░реЗ-рдзреАрд░реЗ рдлреИрд╢рди рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд▓реЗрди-рджреЗрди рдХреЛ рдПрдХ рд╡рд┐рддрд░рд┐рдд рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ: рдЬрдм рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрд╕рд╛рдзрди рдкреНрд░рдмрдВрдзрдХ рдХреЛ рд░рди рдЯрд╛рдЗрдо рдкрд░ рд▓реЗрдирджреЗрди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд▓реЗрдирджреЗрди рдкреНрд░рдмрдВрдзрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬреЛ рдХреБрдЫ рднреА рд▓реЗрддрд╛ рд╣реИ рд╡рд╣ рдХрд░реЗрдЧрд╛ред рдирд┐рдпрдорд┐рдд рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд▓реЗрдирджреЗрди .NET рдХреЛрд░ рдФрд░ .NET рдорд╛рдирдХ рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рдФрд░ рд╡рд┐рддрд░рд┐рдд рд▓реЗрдирджреЗрди рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВред

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

GitHub рдкрд░ System.Transactions рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рдЙрджрд╛рд╣рд░рдг

рд╕рдВрджрд░реНрдн

рдореВрд▓ рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдБ


ACID ( ┬л┬╗)
( Microsoft)
( Microsoft)
( ┬л┬╗)
( ┬л┬╗)
( ┬л┬╗)


X/Open XA ( The Open Group)
Java Transaction API ( ┬л┬╗)
Cache ( InterSystems)

.NET


.NET ( Tech Blog Collection)
TransactionScope (┬л┬╗)
, ( Microsoft)
.NET Standard 2.0 ( .NET Standard GitHub)
( YarFullStack)


(┬л┬╗)
(┬л┬╗)
┬л┬╗ (┬л┬╗)
┬л┬╗ (┬л┬╗)
(┬л┬╗)

рд╕рдВрд╕реНрдХрд░рдг

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


All Articles