|
Transaction이라는 것은 논리적으로 하나의 처리 sequence 를 갖고 임의의 process를 처리하도록 하는 것을 의미하는데, 예를 들어, A, B, C가 순서적으로 하나의 Transaction scope 안에 있다면, A, B, C가 모두 성공해야만, 해당 process가 처리 완료되는 것이고, 어느 하나라도 실패한다면, A, B, C 모두를 Rollback하도록 하는 것이 필요할 때, Transaction 처리를 하게 된다. COM+ 는 Transaction 속성을 지정할 수 있는 데, 다양한 Transaction 시나리오를 위해서 5가지의 Transaction 속성을 지정할 수 있다. 몇 가지를 비교해서 설명하면, Disabled 와 Not supported 속성을 먼저 비교할 수 있다. 이들은 엄밀히 말하면 Transaction에서 벗어나 있다. 그러므로, 기존에 해당 Component를 호출하는 이전에 이미 Transaction이 존재한다면, Not supported의 경우는 해당 Transaction context를 하위의 Component로 흘려 보내지 않는 다. 하지만, Disabled는 이미 존재하는 Transaction Context와 무관하지만, 하위의 Component에 Transaction Context를 흘러 보냄으로써 Transaction Context를 Share한다. 하지만, 이들 둘 다 해당 Component에서는 Transaction이 무관하므로 Transaction의 Complete/Abort 에 대한 voting을 할 수 없다. 오히려 Disabled와 Supported의 경우는 동일하게 Transaction Context를 Share하는 경우로, 이미 존재하는 Transaction을 하위 Component에 흘려 보낼 수 있다. Disabled가 자신은 Transaction Context의 존재와 상관없이 transaction과 무관하다면, Supported는 Transaction Context가 존재할 경우에 Transaction을 탈 수 있으며, 존재하지 않으며, Transaction을 타지 않고 수행된다. 그러므로, Disabled 와는 달리 Transaction에 대한 Voting이 가능하다. Required 와 Required New를 비교해보자. 둘 다 Transaction을 반드시 타는 경우이므로, Transaction에 대한 Voting을 둘 다 가능/필요하다. 하지만, Required는 기존에 Transaction이 이미 존재한다면, 해당 transaction을 타지만, 어떠한 transaction이 존재하지 않는 다면, 스스로 Root transaction 즉, New Transaction을 만든다. 하지만, Required New의 경우는 기존의 Transaction의 존재 여부와 상관없이 항상 Root transaction이 된다. COM+가 Nested Transaction을 지원하지 않기 때문에 새로운 Transaction으로 분기되는 경우가 생긴다면, 각각의 Transaction은 별개의 Transaction으로 간섭하지 않는 다는 것도 명심해야겠다. 만일, Transactional 속성이 Disabled인 Component에서 Exception이 발생하였다면? 상위 내용대로라면, 해당 Component에서의 SetAbort는 기존의 transaction에 영향을 주지 않는 것이 맞을 것이다. 하지만, Exception을 Propagation 하여 Transactional Component(Disabled나 Not supported가 아닌)안에서 명시적으로 SetAbort를 할 것인지, SetComplete을 할 것인지를 결정할 수 있겠다. 복잡한 것이 이 문제가 Disabled Component 이전의 Transactional Component뿐만이 아니라 Exception handling여부에 따라 미치게 되는 Disabled Component 하위에 transactional Component가 존재할 수 있기 때문에 정상적인 Exception handling외에 각 상.하위 Component의 Transactional Voting역시 프로그램 흐름상 고려되어 질 필요가 있을 지도 모르겠다.
|
카테고리
이글루링크
최근 등록된 덧글
그러세요
by 강세윤 at 12/15 오늘 많이 헤매다..알게 .. by youna at 12/14 글 잘 읽었습니다 . 전 .. by 위시 at 11/26 어렷다 by klhk at 11/09 dhjjgbem by kl at 11/09 17번부터 어떻게 접는지.. by tykim0131 at 10/28 ATL이나 MFC를 이용하.. by 김명신 at 09/24 복원되었군요.. 제 RSS.. by 강세윤 at 09/24 허걱, 하고 있는 것으로.. by 강세윤 at 09/15 RSS 주소 서비스는 안 .. by 정성태 at 09/15 이글루 파인더
| |||