2011-03-31 4 views
0

웹 서비스에 연결하는 웹 응용 프로그램을 개발 중입니다. 웹 서비스는 두 가지 기능을 제공하지만 서로 관련이 있습니다. RegisterWorker 함수는 작업자를 등록하고 그/그녀를위한 코드를 생성합니다. InsertWorkerInformation 함수, 생성 된 코드에 따라 일부 작업자 정보를 데이터베이스에 삽입합니다.웹 서비스에서 사용되는 함수를 롤백하는 방법은 무엇입니까? 거래를 사용해야합니까?

function int RegisterWorker(parameters) 
{ 
    return Genereated worker code; 
} 

function int InsertWorkerInformation(int generated worker code) 
{ 
    return 1;//If Success Insert information in DB 
    return 0;//If fails 
} 

내 웹 애플리케이션은 사용자에 의해 충전에 필요한 정보를 수신하고, 첫 번째는 RegisterWorker 함수를 호출하고 InsertWorkerInformation 함수를 호출한다.

int code=RegisterWorker(parameters) 
InsertWorkerInformation(code) 

첫 번째 기능 후에 절대적으로 두 번째 기능을 실행해야합니다. 첫 번째 기능이 제대로 실행되지만 두 번째 기능이 제대로 실행되지 않으면 어떻게해야합니까 (웹 애플리케이션과 웹 서비스 간의 연결이 끊어지는 등) 첫 번째 기능을 어떻게 롤백 할 수 있습니까?

답변

4

일반적으로 그렇지 않습니다. 일반적인 웹 서비스는 연결이 끊어진 모델의 한 유형입니다. 여러 웹 서비스 호출과 관련된 트랜잭션이 없습니다.

이 웹 서비스의 코드에 액세스 할 수있는 경우 한 번의 호출로 두 동작을 수행하고 내부적으로 트랜잭션을 사용하는 웹 메서드를 만드는 것이 좋습니다.

또는 'UnRegisterWorker'가 있습니까? 그렇다면 롤백을 '속일'수있는 catch 블록에있을 수 있습니다.

관련 문제