2011-03-17 3 views
4

웹 서버 (asp.net)에서 시작된 TransactionScope가 WCF를 통해 트랜잭션을 응용 프로그램 서버로 전달한 다음 데이터베이스로 전달하는 환경을 설정하려고합니다. SQL Server 2005 데이터베이스를 사용해야하기 때문에 트랜잭션을 분산 트랜잭션 (Distributed Transaction Coordinator를 활성화해야 함)을 의미하는 분산 트랜잭션 (이 서비스는 여러 트랜잭션 호출이이 TransactionScope에 래핑 될 수 있음)으로 '승격'됩니다.DTC 방화벽 요구 사항?

웹 서버와 응용 프로그램 서버가 동일한 컴퓨터에서 호스팅되고 원격 데이터베이스에 연결되는 로컬 상자에서 성공적으로 작동했습니다. DTC는 RPC 연결 (상위 범위는 물론)을 위해 포트 135에서 통신합니다. 테스트 할 두 상자 설정이 없습니다 ... DTC가 작동하려면 포트 135가 웹 서버와 응용 프로그램 서버 간의 통신 (또는 방화벽 관점에서)이 필요하거나 응용 프로그램 서버에서 데이터베이스에? 웹에서 앱 서버로 135를 개방하는 것에 대해 배포 담당자로부터의 압박을 받고 있습니다. 이것이 필요한지 궁금합니다. 나는 아직 나를 위해 이것을 분명히하는 의사 온라인을 찾지 못했다.

외설적 인 질문의 종류는 거기에 빠져 나간 누군가에게서 약간의 통찰력을 얻기를 바랬습니다.

감사합니다,

GA

답변

0

나는 DTC는 RPC 좌표 호출을 사용하기 때문에 그것보다 더 나쁜 있다고 생각합니다. 이 포트를 특정 포트 범위로 수정할 수는 있지만 복잡합니다. 비슷한 문제가있는 프로젝트가 있었는데 동일한 서버에 여러 연결을 사용하여 DTC에 쿼리를 승격했습니다. 방화벽 문제를 탐색하는 데 실패한 후 연결을 공유하는 코드를 리팩터링했습니다. QA 환경에서는 작동하지만 생산에서는 작동하지 않을 수 있습니다. 몇 가지 차이점이있었습니다. 품질 보증은 모든 VM이었고 생산은 SQL 서버의 실제 하드웨어 였고 클러스터되었습니다. OS로드는 가능한 유사했지만 QA 상자에는 프로덕션 상자보다 더 광범위한 응용 프로그램이 있었기 때문에 약간의 패치 차이가 있었을 수 있습니다.

이 MSDN 기사는 일부 사용 될 수 있습니다 답장을 http://support.microsoft.com/kb/306843

+0

감사합니다. 나는 해결책을 가지고 있고 DTC를 피하려고 시도하지 않고있다. (SQL Server 2005를 제외하고는 필요 없다. 응용 프로그램 서버와 데이터베이스 간의 방화벽은 RPC '코디네이터'에 대해 포트 135를 사용하고 DTC 트랜잭션에 대해 구성 가능한 상위 포트 범위 (5000-5200 사용)를 사용합니다. 난 그냥 웹 서버와 애플 리케이션 서버 사이의 애플 리케이션 서버와 WCF를 통해 애플 리케이션에 흐르는 트랜잭션 (특히 135) 사이에 완료되었습니다 사이에 방화벽에서 동일한 포트를 열 필요가 궁금 해서요. – Glenn