Runtime: NetCore 3.0์œผ๋กœ์˜ ์ด์‹๊ณผ ๊ด€๋ จํ•˜์—ฌ DTC์— ์˜์กดํ•˜๋Š” ์•ฑ์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

์— ๋งŒ๋“  2019๋…„ 12์›” 05์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: dotnet/runtime

๋ชจ๋‘,

๋„ท์ฝ”์–ด ์•ฑ์ด ํŠธ๋žœ์žญ์…˜ ๋ฒ”์œ„์—์„œ ์—ฌ๋Ÿฌ ์—ฐ๊ฒฐ์„ ๋ž˜ํ•‘ํ•˜๋Š” ๊ฒฝ์šฐ ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
"์ด ํ”Œ๋žซํผ์€ ๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."

DTC๋ฅผ ์‚ฌ์šฉํ•˜๋Š” netcore3๋กœ ํฌํŒ…๋˜๋Š” ์›น ์•ฑ์— ๋Œ€ํ•œ ์ตœ์„ ์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ๋ฌด์—‡์ธ์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. UnitOfWork ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋„๋ก ๋ฆฌํŒฉํ† ๋งํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๊นŒ?

TransactionScope๊ฐ€ ๋„์›€์ด ๋œ ๋น„์ฆˆ๋‹ˆ์Šค ๊ณ„์ธต์˜ ์—ฐ๊ฒฐ์„ ๊ด€๋ฆฌํ•˜๊ณ  ์‹ถ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ ํ•ด์š”!

๊ด€๋ จ๋œ:
๊ณต๊ฐœ ๋ฌธ์ œ: https://github.com/dotnet/corefx/issues/13532
์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ: https://stackoverflow.com/questions/56328832/transactionscope-throwing-exception-this-platform-does-not-support-distributed-t

area-System.Transactions untriaged

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์šฐ๋ฆฌ๋Š” ๋˜ํ•œ .NET Framework์—์„œ .NET Core๋กœ ์ด์‹ํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋ฉฐ .NET Core๋กœ ์ด์‹ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ ๊ฑฐ๋ž˜ ์ฐจ๋‹จ๊ธฐ์ฒ˜๋Ÿผ ๋Š๊ปด์ง€๋Š” TransactionScope์—์„œ DTC๊ฐ€ ์ง€์›๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค์— ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ตฌ์ฒด์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ๋‘ ๊ฐœ์˜ ๊ฐœ๋ณ„ SQL Server์— ์žˆ๋Š” ๋‘ ๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์— ์ž‘์„ฑํ•ด์•ผ ํ•˜๋ฉฐ ํ˜„์žฌ TransactionScope ๋ฐ DTC๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ชจ๋‘ ์›์ž์ ์œผ๋กœ ์ปค๋ฐ‹๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์ง€์‹์ด ์—†๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๊ณ„์ธต ์ฝ”๋“œ์—์„œ ๋‹จ์ผ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์„ INSERT/UPDATE/DELETEํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๊ณ„์ธต์— TransactionScope๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์˜ค๋Š˜๋‚  ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๊ณ„์ธต์„ ์—ฌ๋Ÿฌ ๋ฒˆ ํ˜ธ์ถœํ•˜์—ฌ ์ด๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜์€ ํ˜„์žฌ .NET Core์—์„œ ์ง€์›๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ Microsoft์—์„œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ถŒ์žฅํ•˜๋Š” ์‚ฌํ•ญ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

๋ชจ๋“  3 ๋Œ“๊ธ€

์šฐ๋ฆฌ๋Š” ๋˜ํ•œ .NET Framework์—์„œ .NET Core๋กœ ์ด์‹ํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋ฉฐ .NET Core๋กœ ์ด์‹ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ ๊ฑฐ๋ž˜ ์ฐจ๋‹จ๊ธฐ์ฒ˜๋Ÿผ ๋Š๊ปด์ง€๋Š” TransactionScope์—์„œ DTC๊ฐ€ ์ง€์›๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์‚ฌ์‹ค์— ์ง๋ฉดํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ตฌ์ฒด์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. ๋‘ ๊ฐœ์˜ ๊ฐœ๋ณ„ SQL Server์— ์žˆ๋Š” ๋‘ ๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์— ์ž‘์„ฑํ•ด์•ผ ํ•˜๋ฉฐ ํ˜„์žฌ TransactionScope ๋ฐ DTC๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ชจ๋‘ ์›์ž์ ์œผ๋กœ ์ปค๋ฐ‹๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ์ง€์‹์ด ์—†๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๊ณ„์ธต ์ฝ”๋“œ์—์„œ ๋‹จ์ผ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์„ INSERT/UPDATE/DELETEํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๊ณ„์ธต์— TransactionScope๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์˜ค๋Š˜๋‚  ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ์ดํ„ฐ ์•ก์„ธ์Šค ๊ณ„์ธต์„ ์—ฌ๋Ÿฌ ๋ฒˆ ํ˜ธ์ถœํ•˜์—ฌ ์ด๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋ถ„์‚ฐ ํŠธ๋žœ์žญ์…˜์€ ํ˜„์žฌ .NET Core์—์„œ ์ง€์›๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ Microsoft์—์„œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ถŒ์žฅํ•˜๋Š” ์‚ฌํ•ญ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

์ด ๊ธฐ๋Šฅ์„ Core๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๊ฐ€๋Šฅ์„ฑ์„ ์กฐ์‚ฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. dotnet/corefx#13532๋ฅผ ๊ณ„์† ์ถ”์ ํ•˜์‹ญ์‹œ์˜ค. ํ•ด๋‹น ๋ฌธ์ œ๋Š” ๊ณง ์ด ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋กœ ์ด๋™ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฌธ์ œ๊ฐ€ dotnet/runtime #715๋กœ ์ด๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

nalywa picture nalywa  ยท  3์ฝ”๋ฉ˜ํŠธ

Timovzl picture Timovzl  ยท  3์ฝ”๋ฉ˜ํŠธ

jzabroski picture jzabroski  ยท  3์ฝ”๋ฉ˜ํŠธ

aggieben picture aggieben  ยท  3์ฝ”๋ฉ˜ํŠธ

chunseoklee picture chunseoklee  ยท  3์ฝ”๋ฉ˜ํŠธ