2010-01-11 6 views
2

내가 내 응용 프로그램에서 분산 트랜잭션을 관리 할 필요가 분산 트랜잭션의 경우에 설치 될는</p> <p>이 서비스 1이 서버 1에 설치되어있는 가정

서비스 2가
[ServiceContract] 
IService2 
{ 
    [OperationContract] 
    Operation2(); 
} 
서버 2

에 설치되어
[ServiceContract] 
IService1 
{ 
    [OperationContract] 
    Operation1(); 
} 

이고 클라이언트가 두 서비스를 사용 중입니다.

(210)

어디에서 정확하게 MSDTC를 설치해야합니다, 그것은 서버 1, 서버 2에 설치해야 할 클라이언트

는이 경우 추가 구성이 필요합니까?

답변

1

당신은 당신의 클라이언트에서 MSDTC의 보안 구성에서 아웃 바운드를 허용해야 클라이언트와 서버 1, 서버 2

에 MSDTC를 활성화해야합니다.
서버에서 인바운드 및 아웃 바운드를 허용해야합니다.
DB가 별도의 컴퓨터에있는 경우 인바운드를 허용해야합니다.

MSDTC를 사용하여 실행 한 한 가지 문제점은 방화 벽 예외 목록에서 MSDTC를 허용하는 것을 잊지 마세요.

코드 스 니펫을 보면 작업 인터페이스에 Transactionflow 특성을 추가해야합니다. Foundation: Transaction Propagation

+0

안녕 pididdy, 내 쿼리에 응답 감사 :

여기 거래와 WCF에 대한 좋은 링크입니다. 구성 파일에 transaflow 설정을 지정했습니다. transactionFlow = "true" 괜찮습니까? 서비스 인터페이스의 각 메소드에 대해 transactionflow 속성이 필요합니까? – Brainchild

+0

예, 각 서비스 작업에 특성을 넣어야합니다.내 답변에있는 기사를 읽으십시오, 정말 좋은 출발입니다. – pdiddy

+0

물론, 작업에 필요한 속성 값은 트랜잭션이되도록 만 넣으면됩니다. – pdiddy

0

이 설정에는주의해야합니다. "TransactionScope"를 사용하여 테스트 목적으로 실행하고 다시 롤업하려는 SQL 명령을 프로그래밍 방식으로 실행했지만 WCF 호출을 통해 "TransactionScope"를 전파하지 않았습니다.

Google 검색에서 MSDN : http://msdn.microsoft.com/en-us/magazine/cc163432.aspx에 관한이 문서를 발견했습니다. 이 문서에서는 TransactionScope 교차 서비스 경계를 ​​만들기 위해 서비스 인터페이스에 특별한 속성이 필요하다고 말합니다.

"설치"까지 MSDTC를 설치하지 마십시오. 이미 Windows 설치의 일부 여야합니다. 그러나 MSDTC는 기본적으로 네트워크의 원격 클라이언트에서 작동하지 않습니다. 이 설정은 보안을위한 것입니다. 다음은 MSDTC가 Windows Server 2003의 원격 클라이언트와 작동하도록하는 방법을 보여주는 링크입니다 : http://support.microsoft.com/kb/817064. 다른 Windows 버전의 경우 "MSDTC 네트워크 액세스"에 대한 인터넷 검색을 시도하십시오. 원격 트랜잭션에 포함시키려는 서비스를 호스팅하는 각 서버에서이 구성을 설정해야한다고 생각합니다.

WCF 서비스는 가능한 모든 설정을 구성하는 데 매우 까다로울 수 있습니다. 도움이되기를 바랍니다.

관련 문제